给生成面板的「提交被拒 + 草稿归属」加 TODO(只留标记,不改行为)
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Failing after 17s
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Failing after 17s
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Failing after 18s
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Failing after 18s
Project CI / AI game creator shell Rust crates (pull_request) Failing after 18s
Project CI / AI game creator shell Rust smoke (pull_request) Failing after 19s
Project CI / Backend tests (pull_request) Failing after 18s
Project CI / Native shell tests (pull_request) Failing after 18s
Project CI / Frontend tests (pull_request) Failing after 8s
Project CI / Repository checks (pull_request) Failing after 16s
Project CI / AI game creator shell web tests (pull_request) Failing after 16s

- `ResourceCanvasGenerationPanelView.submit()` 加 `TODO(resource-generation-panel-contract)`:说明
  `onSubmit` 只返回 `void` 导致宿主同步拒绝时草稿没人接走的缺口,以及「`onSubmit` 回报受理结果、
  只有受理成功才置位 `draftReleased` 并关闭」的修法
- `ResourceCanvasAssetGenerationPanelView.submit()` 加同名 TODO:图片类面板与音频面板是同一份
  契约,要改一起改
- `index.tsx` 的 `submitResourceCanvasGeneration` 同步拒绝分支加同名 TODO:指向面板侧修法与
  「这里改成 `return false`」的宿主侧动作
This commit is contained in:
2026-09-21 00:29:55 +08:00
parent 98e42e6dae
commit 04db93faab
3 changed files with 19 additions and 0 deletions
@@ -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、不等排队、不等生成结束。失败要不要把面板带回来由宿主决定
@@ -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、不等排队、不等生成结束。入参已经带上这次生成的请求身份,
@@ -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(
'生成任务队列尚未就绪,请重新打开项目后重试',