diff --git a/apps/ai-game-creator-shell/src/features/resource-canvas/ResourceCanvasAssetGenerationPanelView.tsx b/apps/ai-game-creator-shell/src/features/resource-canvas/ResourceCanvasAssetGenerationPanelView.tsx index 520299e8b..50b687831 100644 --- a/apps/ai-game-creator-shell/src/features/resource-canvas/ResourceCanvasAssetGenerationPanelView.tsx +++ b/apps/ai-game-creator-shell/src/features/resource-canvas/ResourceCanvasAssetGenerationPanelView.tsx @@ -368,6 +368,12 @@ export function ResourceCanvasAssetGenerationPanelView({ return; } setError(null); + /* + TODO(resource-generation-panel-contract): 与 `ResourceCanvasGenerationPanelView` 是同一份契约 + 问题——`onSubmit` 只返回 `void`,宿主同步拒绝时(今天只剩「队列未就绪」这条防御性分支)这里 + 已经置位 `released` 并关掉面板,草稿没人接走。修法同那一侧的 TODO:`onSubmit` 回报受理结果, + 只有受理成功才置位并 `onClose()`。 + */ // 这次输入被任务接走:卸载时不再写回草稿槽(失败重开由宿主的提交上下文负责)。 draftReleasedRef.current = true; // 点击即关闭:不等 IPC、不等排队、不等生成结束。失败要不要把面板带回来由宿主决定 diff --git a/apps/ai-game-creator-shell/src/features/resource-canvas/ResourceCanvasGenerationPanelView.tsx b/apps/ai-game-creator-shell/src/features/resource-canvas/ResourceCanvasGenerationPanelView.tsx index 100b7fa1e..593f3cdff 100644 --- a/apps/ai-game-creator-shell/src/features/resource-canvas/ResourceCanvasGenerationPanelView.tsx +++ b/apps/ai-game-creator-shell/src/features/resource-canvas/ResourceCanvasGenerationPanelView.tsx @@ -239,6 +239,13 @@ export function ResourceCanvasGenerationPanelView({ requestRef.current, normalizedPrompt, ); + /* + TODO(resource-generation-panel-contract): `onSubmit` 现在只返回 `void`,所以这里只能「先置位 + `released`、再无脑关闭」;宿主那几条同步拒绝的分支(占位已不在画布 / 已在跑别的 operation) + 只给一条提示条,这次输入没人接走、草稿也跟着丢了。修法:让 `onSubmit` 回报受理结果 + (`accepted: boolean`),只有受理成功才置位并 `onClose()`。同一份契约落在 + `ResourceCanvasAssetGenerationPanelView` 与两个宿主调用点上——要改就一起改。 + */ // 这次输入被任务接走:卸载时不再往草稿槽里写一份内存副本(失败重开由宿主的提交上下文负责)。 draftReleasedRef.current = true; // 点击即关闭:不等 IPC、不等排队、不等生成结束。入参已经带上这次生成的请求身份, diff --git a/apps/ai-game-creator-shell/src/view/project-development/index.tsx b/apps/ai-game-creator-shell/src/view/project-development/index.tsx index 29414c29e..e5a900738 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/index.tsx +++ b/apps/ai-game-creator-shell/src/view/project-development/index.tsx @@ -7810,6 +7810,12 @@ export default function ProjectDevelopmentView({ ) => { const queue = resourceAssetGenerationQueueRef.current; const context = resourceAssetGenerationContextRef.current; + /* + TODO(resource-generation-panel-contract): 下面这几条同步拒绝只落一条提示条,而面板那边已经 + 置位 `draftReleased` 并关掉了 → 这次输入没人接走、用户刚敲的草稿跟着丢。修法:这里 `return + false`,由面板按 `onSubmit` 的返回值决定要不要关面板(见 + `ResourceCanvasGenerationPanelView` 的同名 TODO;图片类那个面板要一起改)。 + */ if (!queue || !draftId) { setResourceWorkbenchNotice( '生成任务队列尚未就绪,请重新打开项目后重试',