fix: resume campaign progress safely

This commit is contained in:
2026-07-29 01:13:57 +09:00
parent 90de2a3559
commit 6f2b6e42a4
31 changed files with 9354 additions and 148 deletions

View File

@@ -40,6 +40,7 @@ try {
const errors = [];
const storySources = collectStorySources(scenarioModule, battleScenarios);
const uniquePageIds = new Set();
const firstSourceByPageId = new Map();
const usedBackgroundKeys = new Set();
const selectedBackgroundKeys = new Set();
const selectedBackgroundUrlsByBase = new Map();
@@ -93,6 +94,17 @@ try {
pages.forEach((page, index) => {
pageCount += 1;
const firstSource = firstSourceByPageId.get(page.id);
if (firstSource) {
errors.push(
`story page id global uniqueness: duplicate "${page.id}" at ${source}[${index}], first used at ${firstSource}`
);
} else {
firstSourceByPageId.set(
page.id,
`${source}[${index}]`
);
}
uniquePageIds.add(page.id);
validateStoryPage({
errors,
@@ -127,6 +139,11 @@ try {
if (pageCount !== expectedStoryPageCount) {
errors.push(`story page selection coverage: expected ${expectedStoryPageCount} pages, received ${pageCount}`);
}
if (uniquePageIds.size !== pageCount) {
errors.push(
`story page id global uniqueness: expected ${pageCount} unique ids, received ${uniquePageIds.size}`
);
}
if (portraitSelectionMetrics.pages !== pageCount) {
errors.push(
`story portrait selection coverage: checked ${portraitSelectionMetrics.pages}/${pageCount} pages`