feat: restore legacy named playlist workflows

This commit is contained in:
2026-07-12 11:59:18 +09:00
parent a481c96c39
commit af80c36cde
52 changed files with 9261 additions and 83 deletions

View File

@@ -60,7 +60,9 @@ $scripts = @(
(Join-Path $repositoryRoot 'Web\manual-financial-workflow.js'),
(Join-Path $repositoryRoot 'Web\named-manual-restore-workflow.js'),
(Join-Path $repositoryRoot 'Web\named-comparison-restore-workflow.js'),
(Join-Path $repositoryRoot 'Web\named-foreign-stock-restore-workflow.js'),
(Join-Path $repositoryRoot 'Web\legacy-foreign-index-candle-workflow.js'),
(Join-Path $repositoryRoot 'Web\named-krx-theme-restore-workflow.js'),
(Join-Path $repositoryRoot 'Web\named-nxt-theme-restore-workflow.js'),
(Join-Path $repositoryRoot 'Web\legacy-named-row-workflow.js'),
(Join-Path $repositoryRoot 'Web\operator-catalog-workflow.js'),
@@ -129,7 +131,11 @@ if ($appScript -notmatch 'normalizeScenePreviewFields' -or
throw 'Web playout must render bounded authoritative scene data and complete page state.'
}
if ($appScript -notmatch 'checkbox\.checked = item\.enabled !== false' -or
$appScript -notmatch 'item\.enabled = checkbox\.checked' -or
$appScript -notmatch 'replacePlaylistEntryEnabledAt\(index, checkbox\.checked\)' -or
$appScript -match 'item\.enabled\s*=(?!=)' -or
$appScript -notmatch 'namedKrxThemeRestoreWorkflow\.withEnabled' -or
$appScript -notmatch 'namedNxtThemeRestoreWorkflow\.withEnabled' -or
$appScript -notmatch 'namedForeignStockRestoreWorkflow\.withEnabled' -or
$appScript -notmatch 'isPlaylistSnapshotLocked' -or
$appScript -notmatch 'pending: Boolean\(state\.playout\.pending\)' -or
$appScript -notmatch 'outcomeUnknown: state\.playout\.sessionQuarantined') {
@@ -142,6 +148,13 @@ if ($appScript -notmatch 'toggleAllEntriesEnabled' -or
$appScript -notmatch 'event\.key === "End"') {
throw 'Legacy playlist enabled-all, delete-all, range, Home and End controls are incomplete.'
}
if ($appScript -match '\bitem\.[A-Za-z_$][A-Za-z0-9_$]*\s*=(?!=)' -or
$appScript -notmatch 'playlistEntryManualEditBlockReason' -or
$appScript -notmatch 'recreatePlaylistEntryWithSceneSelection' -or
$appScript -notmatch 'recreatePlaylistEntryWithLiveSelection' -or
$appScript -notmatch 'replacePlaylistEntryAt\(state\.currentIndex, replacement\)') {
throw 'Playlist scene and live-row edits must use immutable replacement and protect branded entries.'
}
if ($appScript -notmatch 'postNative\("playout-timeout-quarantine", \{ requestId, command \}\)' -or
$appScript -notmatch 'browserCorrelationQuarantined') {
throw 'Web response timeouts must latch the process-lifetime native quarantine.'
@@ -163,7 +176,7 @@ if ($indexMarkup -notmatch 'id="globalMa5"' -or
throw 'The original global 5-day/20-day candle options are not synchronized across every candle workflow.'
}
foreach ($asset in @(
'market-nav-reorder.js', 'manual-lists-workflow.js', 'manual-financial-workflow.js', 'named-manual-restore-workflow.js', 'legacy-foreign-index-candle-workflow.js', 'named-nxt-theme-restore-workflow.js', 'legacy-named-row-workflow.js', 'operator-catalog-workflow.js',
'market-nav-reorder.js', 'manual-lists-workflow.js', 'manual-financial-workflow.js', 'named-manual-restore-workflow.js', 'named-foreign-stock-restore-workflow.js', 'legacy-foreign-index-candle-workflow.js', 'named-krx-theme-restore-workflow.js', 'named-nxt-theme-restore-workflow.js', 'legacy-named-row-workflow.js', 'operator-catalog-workflow.js',
'manual-lists-ui.js', 'manual-financial-ui.js', 'operator-catalog-ui.js')) {
if ($indexMarkup -notmatch [regex]::Escape("<script src=`"$asset`"></script>")) {
throw "Operator UI script is not loaded: $asset"