修复拼图生成队列与草稿恢复

补齐拼图队列状态回传,生成页展示排队/运行状态

修复草稿进入时生成中与结果页路由恢复逻辑

避免新增空白关卡立即自动保存并保留编辑弹窗

恢复稳定拼图 profile 缺失时的同源 session 草稿投影

让外部生成 worker/controller 跳过 HTTP 认证快照恢复

补充外部生成 worker 与拼图草稿排障记录
This commit is contained in:
2026-06-19 10:47:56 +08:00
parent e3258f6f1d
commit d9c32261fc
12 changed files with 628 additions and 93 deletions
@@ -99,6 +99,58 @@ describe('platformDraftGenerationShelfModel', () => {
});
});
test('resolvePuzzleDraftOpenIntent ignores stale generating notice after puzzle draft is ready', () => {
expect(
resolvePuzzleDraftOpenIntent({
item: buildPuzzleWork({
generationStatus: 'ready',
coverImageSrc: '/generated-puzzle-assets/session/cover.png',
levels: [
{
levelId: 'level-1',
levelName: '金色数字舞台',
pictureDescription: '123456',
pictureReference: null,
candidates: [],
selectedCandidateId: null,
coverImageSrc: '/generated-puzzle-assets/session/cover.png',
coverAssetId: 'asset-1',
generationStatus: 'ready',
},
],
}),
notices: {
'puzzle:puzzle-session-base': {
status: 'generating',
seen: false,
},
},
generation: emptyGenerationFacts(),
}),
).toMatchObject({
type: 'restore-draft',
});
});
test('resolvePuzzleDraftOpenIntent restores generating page from notice even before persisted status catches up', () => {
expect(
resolvePuzzleDraftOpenIntent({
item: buildPuzzleWork({
generationStatus: 'idle',
}),
notices: {
'puzzle:puzzle-session-base': {
status: 'generating',
seen: false,
},
},
generation: emptyGenerationFacts(),
}),
).toMatchObject({
type: 'restore-generating',
});
});
test('resolveMatch3DDraftOpenIntent opens published work detail unless forced into draft', () => {
const item = buildMatch3DWork({
publicationStatus: 'published',