feat: complete legacy UI and playout parity migration

This commit is contained in:
2026-07-15 13:11:38 +09:00
parent f14800656b
commit 6e0c275fdd
108 changed files with 43738 additions and 560 deletions

View File

@@ -0,0 +1,56 @@
"use strict";
const crypto = require("node:crypto");
const fs = require("node:fs");
const path = require("node:path");
const repositoryRoot = path.resolve(__dirname, "..");
const sourcePath = path.join(repositoryRoot, "Web", "legacy-fixed-workflow.js");
const outputPath = path.join(
repositoryRoot,
"src",
"MBN_STOCK_WEBVIEW.LegacyApplication",
"Catalog",
"LegacyFixedActions.json");
const sourceBytes = fs.readFileSync(sourcePath);
const workflow = require(sourcePath);
if (!Array.isArray(workflow.actions) || workflow.actions.length !== 328) {
throw new Error("The fixed legacy catalog must contain exactly 328 actions.");
}
const actions = workflow.actions.map((action, index) => {
const expectedId = `fixed-${String(index + 1).padStart(3, "0")}`;
if (action.id !== expectedId || !workflow.fixedMarkets.includes(action.market)) {
throw new Error(`Unexpected fixed action identity at index ${index}.`);
}
return {
id: action.id,
market: action.market,
section: action.section,
label: action.label,
detail: action.detail,
category: action.category,
builderKey: action.builderKey,
code: action.code,
aliases: action.aliases,
available: action.available,
prerequisite: action.prerequisite,
selection: action.selection,
dynamicDate: action.dynamicDate,
dynamicNxtSession: action.dynamicNxtSession
};
});
const document = {
schemaVersion: 1,
generatedFrom: "Web/legacy-fixed-workflow.js",
sourceSha256: crypto.createHash("sha256").update(sourceBytes).digest("hex").toUpperCase(),
runtimeAssets: workflow.runtimeAssets,
actions
};
fs.mkdirSync(path.dirname(outputPath), { recursive: true });
fs.writeFileSync(outputPath, `${JSON.stringify(document, null, 2)}\n`, "utf8");
process.stdout.write(`${outputPath}\n`);