WIP:Feat/GameAgent客户端画布与资源工作台 #283

Closed
suzmii wants to merge 27 commits from feat/game-agent-canvas-resource-workbench-v2 into master
Member

最终目标

本 PR 服务于 GameAgent 客户端画布与资源工作台 V2.0,目标是让用户在统一资源画布中完成资源的生成、筛选、归档与调用,并为后续 GameAgent 读取主画布正式资源、版本绑定和运行预览打好工作台基础。

需求来源: GameAgent客户端画布与资源工作台 V2.0

本阶段交付(WIP)

  • 实现主画布 + 子画布的统一资源画本 UI 模型。
  • 主画布按资源类型展示有限层叠缩略卡,最多展示三层,更多资源使用虚化提示。
  • 主画布预览与子画布展开复用同一组真实资源卡和标题栏节点。
  • 实现进入/返回子画布的连续移动、缩放和布局展开动画。
  • 子画布之间切换遵循先返回主画布、再进入目标子画布。
  • 展开前根据子画布资源包围盒计算中心与缩放比例,避免元素飞出可视区域。
  • 子画布展开态增加遮罩,完整挡住主画布背景。
  • hover/focus 时标题栏与资源卡同步跟随缩略卡位移。
  • 同步补充资源画本 UI 阶段技术方案说明。

验证

  • npm run ai-game-creator-shell:typecheck
  • npx eslint apps/ai-game-creator-shell/src/view/project-development/index.tsx --max-warnings 0
  • npm run check:encoding
  • git diff --check
  • resourceCanvasLayoutModel.test.ts:37 项通过
  • assetCanvasSurface.test.tsx:63 项通过

后续范围

  • UI 编辑器完善后的资源工作流接入。
  • 主画布正式资源登记、上传/生成任务、版本绑定和运行预览的完整业务链路。
  • 资源跨子画布移动、加入/移出主画布等正式资源状态变更。
## 最终目标 本 PR 服务于 **GameAgent 客户端画布与资源工作台 V2.0**,目标是让用户在统一资源画布中完成资源的生成、筛选、归档与调用,并为后续 GameAgent 读取主画布正式资源、版本绑定和运行预览打好工作台基础。 需求来源: [GameAgent客户端画布与资源工作台 V2.0](https://kcnz41bksl1c.feishu.cn/wiki/VZAfwlSJHiPiAxkt8KRcherZnHc) ## 本阶段交付(WIP) - 实现主画布 + 子画布的统一资源画本 UI 模型。 - 主画布按资源类型展示有限层叠缩略卡,最多展示三层,更多资源使用虚化提示。 - 主画布预览与子画布展开复用同一组真实资源卡和标题栏节点。 - 实现进入/返回子画布的连续移动、缩放和布局展开动画。 - 子画布之间切换遵循先返回主画布、再进入目标子画布。 - 展开前根据子画布资源包围盒计算中心与缩放比例,避免元素飞出可视区域。 - 子画布展开态增加遮罩,完整挡住主画布背景。 - hover/focus 时标题栏与资源卡同步跟随缩略卡位移。 - 同步补充资源画本 UI 阶段技术方案说明。 ## 验证 - `npm run ai-game-creator-shell:typecheck` - `npx eslint apps/ai-game-creator-shell/src/view/project-development/index.tsx --max-warnings 0` - `npm run check:encoding` - `git diff --check` - `resourceCanvasLayoutModel.test.ts`:37 项通过 - `assetCanvasSurface.test.tsx`:63 项通过 ## 后续范围 - UI 编辑器完善后的资源工作流接入。 - 主画布正式资源登记、上传/生成任务、版本绑定和运行预览的完整业务链路。 - 资源跨子画布移动、加入/移出主画布等正式资源状态变更。
suzmii added 1 commit 2026-09-04 14:15:22 +08:00
实现资源画本统一节点转场
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
f339b383f5
重构主画布与子画布为共享资源卡和标题栏节点

补充缩略堆叠、进入返回动画、遮罩与定位适配

同步更新资源画本 UI 技术方案文档
suzmii changed title from WIP: 资源画本统一节点转场 to WIP: GameAgent客户端画布与资源工作台 V2.0 2026-09-04 14:16:17 +08:00
suzmii added 1 commit 2026-09-04 15:03:41 +08:00
修复资源画本首次布局错位
Project CI / Repository checks (pull_request) Failing after 9s
Project CI / Backend tests (pull_request) Failing after 11s
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
019b1761f4
首帧测量未完成时隐藏共享场景,避免标题和卡片使用默认坐标

在首帧和资源数量变化后重新校准缩略卡布局
suzmii self-assigned this 2026-09-04 15:05:11 +08:00
suzmii added 1 commit 2026-09-04 15:13:36 +08:00
修复从项目入口首次进入主画布的错位
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Failing after 10s
f883d4bf2e
移除主画布入场缩放动画避免测量和终态不一致

无效缩略卡测量结果不再直接展示共享场景
suzmii added 1 commit 2026-09-04 15:22:37 +08:00
Merge branch 'master' into feat/game-agent-canvas-resource-workbench-v2
Project CI / Frontend tests (pull_request) Failing after 2m29s
Project CI / Repository checks (pull_request) Failing after 2m49s
Project CI / Backend tests (pull_request) Successful in 6m39s
Project CI / Native shell tests (pull_request) Failing after 5m51s
8323b13fd3
suzmii added 1 commit 2026-09-04 15:42:26 +08:00
拆分子画布标题与本体hover高亮
Project CI / Repository checks (pull_request) Failing after 2m52s
Project CI / Frontend tests (pull_request) Failing after 2m17s
Project CI / Native shell tests (pull_request) Failing after 6m15s
Project CI / Backend tests (pull_request) Successful in 6m37s
816844065b
标题栏与本体分别作为独立对象绑定同一hover源

标题栏底边与本体顶边接缝保持默认色不高亮
suzmii added 1 commit 2026-09-04 15:46:51 +08:00
调整资源画本hover高亮仅用于未展开主画布
Project CI / Repository checks (pull_request) Failing after 2m58s
Project CI / Frontend tests (pull_request) Failing after 2m33s
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
9c85a9501e
子画布展开态不再显示hover高亮线

未展开缩略卡hover时标题栏三边高亮,底边接缝保持默认色
suzmii added 5 commits 2026-09-05 11:21:36 +08:00
资源卡拖拽使用模型坐标换算,消除阻力和回弹

子画布空白区域支持画布平移,保持进入退出动画连贯
美术资源初始适配不再放大过头

scene层支持Ctrl滚轮锚点缩放,普通滚轮保留翻页
统一主画布与子画布的可见渲染层和 viewport 状态管理。

将子画布改为固定视口加无限平移 world,并保证首次 fit 的可读比例。

补充转场、滚轮、viewport 和资源画本回归测试,更新技术方案文档。
新增 returning-main 阶段,区分返回主画布与进入子画布的 transform 过渡。

返回期间取消残留分页事件和进行中的子画布切换,避免返回流程被重新改写。

补充状态机与 appSurface 回归测试,并同步技术方案文档。
重构资源画本独立转场与中断处理
Project CI / Repository checks (pull_request) Failing after 15s
Project CI / Backend tests (pull_request) Failing after 15s
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
ba718e3d4b
使用独立FLIP快照层和Web Animations统一动画收尾
统一分类导航并保留滚轮节流和各画布视口
修复快照缩放与悬停导致的终点偏移
补充动画回归测试并更新资源画本技术文档
suzmii added 1 commit 2026-09-05 11:23:19 +08:00
Merge branch 'master' into feat/game-agent-canvas-resource-workbench-v2
Project CI / Frontend tests (pull_request) Failing after 2m23s
Project CI / Repository checks (pull_request) Successful in 2m34s
Project CI / Native shell tests (pull_request) Failing after 4m58s
Project CI / Backend tests (pull_request) Successful in 6m51s
41c9ee7db4
Member

审查 head 41c9ee7db428036b7e6058070c7d29bc33557f01。发现 1 个阻塞问题:apps/ai-game-creator-shell/src/view/project-development/index.tsx:1830resourcePageCategories useMemo 只依赖 canvasResources.length,但返回值依赖 visibleCategoryOrder。当 manifest/资源更新后资源总数不变、但资源类别或类别可见性发生变化时,memo 不会重新计算;页面会继续使用旧的分页类别,导致新类别无法打开/滚轮切页仍指向已不存在的类别,且 activePageCategory 可能落回错误类别。建议把 canvasResources(或稳定的类别/可见类别依赖,例如 visibleCategoryOrder)纳入依赖数组,并补充“同长度但类别变化”的回归测试。风险是资源编辑/生成后 UI 与当前 manifest 不一致。

行号按 new-side diff 定位;本评论对应 head:41c9ee7db428036b7e6058070c7d29bc33557f01。由于该实例的 review 创建接口返回 422(jsontext: unexpected EOF),先以 PR 总评论回写。

审查 head `41c9ee7db428036b7e6058070c7d29bc33557f01`。发现 1 个阻塞问题:`apps/ai-game-creator-shell/src/view/project-development/index.tsx:1830` 的 `resourcePageCategories` useMemo 只依赖 `canvasResources.length`,但返回值依赖 `visibleCategoryOrder`。当 manifest/资源更新后资源总数不变、但资源类别或类别可见性发生变化时,memo 不会重新计算;页面会继续使用旧的分页类别,导致新类别无法打开/滚轮切页仍指向已不存在的类别,且 `activePageCategory` 可能落回错误类别。建议把 `canvasResources`(或稳定的类别/可见类别依赖,例如 `visibleCategoryOrder`)纳入依赖数组,并补充“同长度但类别变化”的回归测试。风险是资源编辑/生成后 UI 与当前 manifest 不一致。 行号按 new-side diff 定位;本评论对应 head:`41c9ee7db428036b7e6058070c7d29bc33557f01`。由于该实例的 review 创建接口返回 422(`jsontext: unexpected EOF`),先以 PR 总评论回写。
Member

审查 head 41c9ee7db428036b7e6058070c7d29bc33557f01。发现 1 个阻塞问题:apps/ai-game-creator-shell/src/view/project-development/index.tsx:1830resourcePageCategories useMemo 只依赖 canvasResources.length,但返回值依赖 visibleCategoryOrder。当 manifest/资源更新后资源总数不变、但资源类别或类别可见性发生变化时,memo 不会重新计算;页面会继续使用旧的分页类别,导致新类别无法打开/滚轮切页仍指向已不存在的类别,且 activePageCategory 可能落回错误类别。建议把 canvasResources(或稳定的类别/可见类别依赖,例如 visibleCategoryOrder)纳入依赖数组,并补充“同长度但类别变化”的回归测试。风险是资源编辑/生成后 UI 与当前 manifest 不一致。

行号按 new-side diff 定位;本评论对应 head:41c9ee7db428036b7e6058070c7d29bc33557f01。由于该实例的 review 创建接口返回 422(jsontext: unexpected EOF),先以 PR 总评论回写。

审查 head `41c9ee7db428036b7e6058070c7d29bc33557f01`。发现 1 个阻塞问题:`apps/ai-game-creator-shell/src/view/project-development/index.tsx:1830` 的 `resourcePageCategories` useMemo 只依赖 `canvasResources.length`,但返回值依赖 `visibleCategoryOrder`。当 manifest/资源更新后资源总数不变、但资源类别或类别可见性发生变化时,memo 不会重新计算;页面会继续使用旧的分页类别,导致新类别无法打开/滚轮切页仍指向已不存在的类别,且 `activePageCategory` 可能落回错误类别。建议把 `canvasResources`(或稳定的类别/可见类别依赖,例如 `visibleCategoryOrder`)纳入依赖数组,并补充“同长度但类别变化”的回归测试。风险是资源编辑/生成后 UI 与当前 manifest 不一致。 行号按 new-side diff 定位;本评论对应 head:`41c9ee7db428036b7e6058070c7d29bc33557f01`。由于该实例的 review 创建接口返回 422(`jsontext: unexpected EOF`),先以 PR 总评论回写。
kdletters requested changes 2026-09-05 11:34:54 +08:00
Dismissed
kdletters left a comment
Member

审查 head 41c9ee7db428036b7e6058070c7d29bc33557f01:发现阻塞问题,详见 PR 总评论。

审查 head `41c9ee7db428036b7e6058070c7d29bc33557f01`:发现阻塞问题,详见 PR 总评论。
suzmii added 2 commits 2026-09-05 11:59:43 +08:00
分离固定交互视口与可平移缩放的内容层
支持主画布滚轮平移并保留缩放及主子画布视口记忆
补充越界拖动和滚轮回归测试并同步技术文档
修复资源分页类别缓存
Project CI / Frontend tests (pull_request) Failing after 2m47s
Project CI / Repository checks (pull_request) Successful in 3m4s
Project CI / Native shell tests (pull_request) Failing after 5m49s
Project CI / Backend tests (pull_request) Successful in 7m12s
cac3e19632
资源数组变化时重新计算资源分页类别\n避免资源总数不变但类别更新后继续使用旧分页状态
suzmii added 1 commit 2026-09-05 12:20:55 +08:00
完善资源分页依赖
Project CI / Frontend tests (pull_request) Failing after 2m32s
Project CI / Repository checks (pull_request) Successful in 2m54s
Project CI / Native shell tests (pull_request) Failing after 6m19s
Project CI / Backend tests (pull_request) Successful in 6m39s
879e732b04
按资源类别签名刷新分页类别\n避免资源数量不变时使用过期类别,同时保持稳定引用避免无关编辑面板重置
suzmii added 1 commit 2026-09-05 13:05:02 +08:00
修复资源保存后的自动聚焦
Project CI / Frontend tests (pull_request) Successful in 3m21s
Project CI / Repository checks (pull_request) Successful in 6m18s
Project CI / Backend tests (pull_request) Successful in 6m46s
Project CI / Native shell tests (pull_request) Successful in 17m19s
ccb3a3ab6a
将保存后资源卡的 DOM 查找范围改为资源画本管理器\n确保新派生资源和恢复资源在布局就绪后能够进入详情聚焦
kdletters requested changes 2026-09-06 19:37:45 +08:00
kdletters left a comment
Member

审查结论:request changes。阻塞问题:PR 在资源区始终挂载 game-resource-book-manager。apps/ai-game-creator-shell/src/styles.css:5173-5177 将其 overflow 设为 hidden,且 :5383-5393 的 .game-resource-book-main 绝对铺满并继续显示;当 canvasResources 为空时,该主画布仍覆盖旧的五分区展览,空项目无法纵向滚动访问“项目版本”等栏目。这违反当前资源画板合同对完全空项目的要求。请仅在存在资源时挂载分页/画本交互壳,空项目保留可滚动五分区展览,并补低高度空项目回归测试。另请先解决当前 PR 与 master 的冲突后再复审。

审查结论:request changes。阻塞问题:PR 在资源区始终挂载 game-resource-book-manager。apps/ai-game-creator-shell/src/styles.css:5173-5177 将其 overflow 设为 hidden,且 :5383-5393 的 .game-resource-book-main 绝对铺满并继续显示;当 canvasResources 为空时,该主画布仍覆盖旧的五分区展览,空项目无法纵向滚动访问“项目版本”等栏目。这违反当前资源画板合同对完全空项目的要求。请仅在存在资源时挂载分页/画本交互壳,空项目保留可滚动五分区展览,并补低高度空项目回归测试。另请先解决当前 PR 与 master 的冲突后再复审。
suzmii changed title from WIP: GameAgent客户端画布与资源工作台 V2.0 to WIP:Feat/GameAgent客户端画布与资源工作台 2026-09-08 10:51:31 +08:00
suzmii added 2 commits 2026-09-08 10:51:49 +08:00
资源分页复用完整资源签名以识别同数量类别变化

补充同长度类别变化回归测试
Merge remote-tracking branch 'origin/master' into feat/game-agent-canvas-resource-workbench-v2
Project CI / Repository checks (pull_request) Successful in 2m27s
Project CI / Native shell tests (pull_request) Successful in 18m40s
Project CI / Frontend tests (pull_request) Successful in 2m55s
Project CI / Backend tests (pull_request) Successful in 6m32s
0a5080dbd9
suzmii added 2 commits 2026-09-08 12:13:03 +08:00
资源总览、栏目入口、返回与复位文案移除主画布和子画布概念

资源栏目可访问名称改为设计文档、美术资源等名称

同步更新相关界面测试断言
去除资源区滚轮切换栏目
Project CI / Frontend tests (pull_request) Failing after 1m49s
Project CI / Native shell tests (pull_request) Failing after 4m32s
Project CI / Repository checks (pull_request) Failing after 9s
Project CI / Backend tests (pull_request) Failing after 9s
1347b4a743
删除普通滚轮切页状态、队列与节流控制逻辑

资源区普通滚轮只平移当前视图,缩放继续由 Ctrl 或 Cmd 配合滚轮触发

同步更新 PRD、技术方案与控制器测试
suzmii added 1 commit 2026-09-08 12:24:12 +08:00
Merge branch 'master' into feat/game-agent-canvas-resource-workbench-v2
Project CI / Repository checks (pull_request) Failing after 1m23s
Project CI / Native shell tests (pull_request) Failing after 4m7s
Project CI / Backend tests (pull_request) Successful in 6m28s
Project CI / Frontend tests (pull_request) Failing after 2m7s
6de536ecbd
suzmii added 6 commits 2026-09-08 19:53:23 +08:00
资源依赖图同时索引远端资源身份和 local-asset 本地资源身份

本地 canonical 引用与远端候选去重后再建立依赖连线

补充本地身份解析与候选不歧义回归测试

更新资源自由画板技术方案的依赖身份合同
共享契约新增 canonical 资源类型目录和历史类型读时映射

角色动画派生结果写入 character-animation 主类型

补充角色动画落盘与 legacy 类型映射回归测试

更新资源自由画板技术方案的类型边界说明
删除project-development.suite.ts中未使用的resetButton变量,修复ESLint unused-vars错误

将projectResourceLiveIntegration.test.tsx中过期的复位资源画布断言更新为复位资源视图
Merge remote-tracking branch 'origin/master' into feat/game-agent-canvas-resource-workbench-v2
Project CI / Native shell tests (pull_request) Failing after 15m58s
Project CI / Frontend tests (pull_request) Successful in 3m48s
Project CI / Backend tests (pull_request) Successful in 8m0s
Project CI / Repository checks (pull_request) Successful in 11m18s
8a47cdfc1b
Author
Member

本 PR 基于旧版 V2.0(主画布 + 子画布 + 转场)实现,与已定稿的 V3.0 需求冲突:V3 明确不再有主/子画布层级,画布改为按功能分类的资源组织板。需求统一在 Tracking Issue #309 处理,本 PR 关闭。

关闭前已 cherry-pick 到 feat/agc-canvas-resource-workbench-v3 的部分:

  • 4e0ce1902 建立 AGC 资源语义类型契约(canonical 资产类型目录 + legacy 读时映射,含 TS / Rust / 测试);
  • e2a50088c 修复资源依赖本地身份解析(resourceIdlocal-asset:<assetId> 双索引)。

未迁移的部分及原因:

  • resourceBook* / resourceCanvasController / 转场与 hover 相关提交 —— 属于 V2 主/子画布实现,V3 不采用;
  • 资源分页缓存、保存后自动聚焦、主画布无限平移与滚轮交互等修复 —— 修的是本 PR 新增的 resourceCanvasController 代码(不在 master 上),V3 画布重写后另行处理;
  • CI 文案修复 —— 依赖上述被放弃的改动。

后续见 #309。

本 PR 基于旧版 V2.0(主画布 + 子画布 + 转场)实现,与已定稿的 V3.0 需求冲突:V3 明确不再有主/子画布层级,画布改为按功能分类的资源组织板。需求统一在 Tracking Issue #309 处理,本 PR 关闭。 **关闭前已 cherry-pick 到 `feat/agc-canvas-resource-workbench-v3` 的部分:** - `4e0ce1902` 建立 AGC 资源语义类型契约(canonical 资产类型目录 + legacy 读时映射,含 TS / Rust / 测试); - `e2a50088c` 修复资源依赖本地身份解析(`resourceId` 与 `local-asset:<assetId>` 双索引)。 **未迁移的部分及原因:** - `resourceBook*` / `resourceCanvasController` / 转场与 hover 相关提交 —— 属于 V2 主/子画布实现,V3 不采用; - 资源分页缓存、保存后自动聚焦、主画布无限平移与滚轮交互等修复 —— 修的是本 PR 新增的 `resourceCanvasController` 代码(不在 master 上),V3 画布重写后另行处理; - CI 文案修复 —— 依赖上述被放弃的改动。 后续见 #309。
suzmii closed this pull request 2026-09-09 14:57:35 +08:00
Some checks are pending
Project CI / Native shell tests (pull_request) Failing after 15m58s
Project CI / Frontend tests (pull_request) Successful in 3m48s
Project CI / Backend tests (pull_request) Successful in 8m0s
Project CI / Repository checks (pull_request) Successful in 11m18s

Pull request closed

Sign in to join this conversation.