修复 AGC 发布入口在 DirectProject 下的反馈与确认

- 发布动作即时回显权限检查与构建打包状态
- DirectProject 对话渲染项目权限确认卡片并回传确认与取消
- 权限拒绝、取消和查询失败统一回显到项目对话
- 新增发布反馈回归用例并记录排障口径
This commit is contained in:
2026-09-23 12:59:17 +08:00
parent 43b7aa809b
commit ba45ca7048
4 changed files with 338 additions and 10 deletions
@@ -5805,6 +5805,14 @@ Cocos Creator 根目录由 `package.json.creator.version` 与普通 `assets/`
- **处理(现行口径)**:① 产品行为保留“导出成功后自动打开面板”(一键发布入口),但受影响的用例必须先用 `findByRole('dialog', { name: '发布到游戏广场' })` 断言面板出现、点「关闭发布面板」再继续后续会话操作;② 给这类“新增自动弹窗”改流程时,先跑一遍相关 `appSurface` 用例,避免只跑新增用例;③ 排查同类“点了没反应”时,先看当前是否有焦点陷阱模态打开,而不是先怀疑事件绑定或状态。
- **关联**`apps/ai-game-creator-shell/src/App.tsx``setPublishPanelOpen(true)`)、`apps/ai-game-creator-shell/src/components/modal/ThemedModal.tsx``apps/ai-game-creator-shell/src/components/game-distribution/GameDistributionPublishPanel.tsx``apps/ai-game-creator-shell/tests/appSurface/project-preview/preview-shortcuts/assert-project-tools-and-preview.ts`
## 2026-09-23 AGC 发布按钮点了没反应:DirectProject 不渲染 workspaceStatus,权限确认也没有挂载点
- **现象**:AGC 聊天头能看到「发布」按钮,点击后没有任何提示、面板也不出现;项目权限要求确认时同样静默,用户只能描述为「点了没反应」。
- **原因**:普通项目固定走 `DirectProjectChatView`,它不渲染工作台状态行,也不渲染 `PlanningChatView` 里那块 `pending-command` 确认卡片;发布提示、权限确认和取消结果原先只写 `workspaceStatus` / `messages`。上游 `f502829fd` 已把发布提示同时 `announce` 回 DirectProject,但确认卡片仍未挂载到 DirectProject;权限查询抛错也没有 catch,确认时策略改为拒绝同样只写工作台消息。结果等待确认、命令被拒、确认后拒绝这几条路径仍表现为「点了没反应」。
- **处理(现行口径)**:发布相关提示统一走 `announcePublishMessage`,同时写 `workspaceStatus``directProjectChatRef.current.announce``DirectProjectChatView` 增加 `pendingConfirmation` / `onConfirmConfirmation` / `onCancelConfirmation`,在对话列表与输入盒之间渲染与 `PlanningChatView` 同形的确认条;`requestGamePublish` 对权限查询整段兜底并把错误回显到聊天,点击后先回「正在检查发布权限…」,进入导出再回「正在构建并打包试玩包」。
- **验证**`npx vitest run apps/ai-game-creator-shell/tests/gamePublishFeedback.test.tsx`(正常发布 / 导出失败 / 确认继续 / 取消 / 确认时拒绝 / 权限查询失败 6 条)与 AGC 全量前端用例通过;`npm run ai-game-creator-shell:typecheck``npm run check:encoding``git diff --check` 通过。
- **关联**`apps/ai-game-creator-shell/src/App.tsx``apps/ai-game-creator-shell/src/view/project-development/chat/DirectProjectChatView.tsx``apps/ai-game-creator-shell/tests/gamePublishFeedback.test.tsx`
## 2026-09-21 受控 Lexical 输入区的回写用被动 effect:滞后渲染的 props 会把用户草稿清空
- **现象**DirectProject 输入盒里粘贴(或连续输入)长文本,提交时 `chat_with_game_creator_direct_codex` 根本没发出去,界面停在空输入盒;`chat-composer` 用例里表现为「队列/终止/语音追加」五条一起红,但手工操作只在快速输入后偶发。