From 6baf358bc76ce25898d5f2785848fcae0047b98f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Sat, 12 Sep 2026 21:34:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=B4=A0=E6=9D=90=E5=88=86?= =?UTF-8?q?=E7=A6=BB=E6=81=A2=E5=A4=8D=E4=B8=8E=E6=AD=A5=E9=AA=A4=E6=98=A0?= =?UTF-8?q?=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 回填部分失败时重新读取恢复状态;移除冗余类型断言并改用显式步骤映射。 --- .../src/view/ui-editor/useUiEditorPage.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/apps/ai-game-creator-shell/src/view/ui-editor/useUiEditorPage.ts b/apps/ai-game-creator-shell/src/view/ui-editor/useUiEditorPage.ts index 56ad362ab..5af8a319e 100644 --- a/apps/ai-game-creator-shell/src/view/ui-editor/useUiEditorPage.ts +++ b/apps/ai-game-creator-shell/src/view/ui-editor/useUiEditorPage.ts @@ -413,12 +413,11 @@ export function useUiEditorSession( resourceId !== undefined && savedStateSignature !== null && savedStateSignature !== stateSignature; - const nextStep: UiEditorStepId | null = - activeStep === 'reference-analysis' - ? 'structure-recognition' - : activeStep === 'structure-recognition' - ? 'asset-separation' - : null; + const nextStepByStep: Partial> = { + 'reference-analysis': 'structure-recognition', + 'structure-recognition': 'asset-separation', + }; + const nextStep = nextStepByStep[activeStep] ?? null; const spriteReferenceCounts = useMemo(() => { const counts: Record = {}; @@ -1195,13 +1194,18 @@ export function useUiEditorSession( })); if (separationResult === null) throw new Error('自动切分素材没有返回结果'); - const completedResult = separationResult as SeparationDTO; + const completedResult = separationResult; if (!(await save({ allowDuringSeparation: true }))) { throw new Error( '自动切分素材结果已写入编辑器,但 State 保存失败;sidecar 已保留,可继续恢复。', ); } if (backfillErrors.length > 0) { + const recovery = await invoke( + 'inspect_separation_recovery', + { projectPath, assetId: resourceId }, + ); + setSeparationRecovery(recovery); reportWorkflowCompletion( 'asset-separation', 'failure',