diff --git a/docs/project-memory/todos/【待办】AGC资源kind枚举化扫描清单-2026-09-15.md b/docs/project-memory/todos/【待办】AGC资源kind枚举化扫描清单-2026-09-15.md index d2d42f174..99d979cd6 100644 --- a/docs/project-memory/todos/【待办】AGC资源kind枚举化扫描清单-2026-09-15.md +++ b/docs/project-memory/todos/【待办】AGC资源kind枚举化扫描清单-2026-09-15.md @@ -169,3 +169,44 @@ - [ ] 确认 `Unknown` 在上传推断、外部 payload、manifest 读取三条入口的日志字段。 - [ ] 完成 `packages/shared` import 使用方迁移清单,确认删除文件不会留下跨包引用。 - [ ] 完成后更新本文件,关闭 M0 里程碑,再创建代码里程碑的实施计划。 + +## manifest 构造器逐处清单 + +| 位置 | 当前 kind | 生产/测试 | 决定 | +| --- | --- | --- | --- | +| `src-tauri/src/assets.rs:1914-1916` | 上游 `kind.to_string()` | 生产公共写入边界 | 改为接收 `GameCreationAppAssetKind`,统一负责序列化 | +| `src-tauri/src/project/resource_editor.rs:3806-3809` | `source_subtype.to_string()` | 生产派生资源 | 先把 `source_subtype` 解析/转换为 manifest enum;临时 operation subtype 不得混入 | +| `src-tauri/src/project/resource_editor.rs:4059-4065` | `asset_kind` | 生产派生资源 | 改为 manifest enum;调用方显式转换 | +| `src-tauri/src/agent/generation/canvas_generation.rs:6816-6828` | `art-spritesheet-slice` | 生产切片回写 | 改为 `Icon`;只保留协议层切片标识在独立字符串字段 | +| `src-tauri/src/ui_editor/workflow.rs:1468-1475` | 测试 helper 参数 `kind` | 测试 | helper 改为 enum,fixture 只使用正式成员 | +| `src-tauri/src/agent/direct_codex_references.rs:306-308` | `character` | 测试 fixture | 改为 enum variant | +| `src-tauri/src/project/manifest/recovery_tests.rs:181-183` | `character` | 测试 fixture | 改为 enum variant | +| `src-tauri/src/agent/direct_tool_bridge.rs:3189-3192` | `art-spritesheet-slice` | 测试 fixture | 如果测试 manifest 语义,改为 `Icon`;协议测试另造明确协议字段 | +| `src-tauri/src/agent/direct_tool_bridge.rs:3246-3249` | `character-animation` | 测试 fixture | 改为 enum variant | +| `src-tauri/src/agent/direct_tool_bridge.rs:3297-3299` | `spec` | 测试 fixture | 改为 enum variant | +| `src-tauri/src/agent/direct_tool_bridge.rs:3339-3342` | `ui` | 旧兼容测试 | 删除 alias 断言;改为 `Unknown` + trace 测试或移至 parser 边界测试 | +| `src-tauri/src/project/resource_dependency_graph.rs:652-656` | `test` | 测试 fixture | 改为 `Unknown`,明确测试未知 kind 投影,不得继续写任意字符串 | +| `src-tauri/src/commands.rs:2888-2892` | `font` | 测试 fixture | 改为 `Font` enum variant | + +## shell TS 类型迁移清单(已发现裸 string) + +以下字段目前仍是 `string` / `string | null`,但若其语义是 manifest `assetKind`,必须改为生成的 `GameCreationAppAssetKind`;若只是外部 API 开放值,保留并在清单中标注转换边界: + +- `src/services/clientApi.ts:198` +- `src/view/ui-editor/useUiEditorPage.ts:81,1077` +- `src/components/AssetImporter/utils.ts:7,32,114` +- `src/components/AssetImporter/index.tsx:61` +- `src/features/resource-canvas/resourceCanvasBottomToolbarModel.ts:79` +- `src/features/project-workspace/DeveloperProjectPanels.tsx:15` +- `src/features/project-workspace/ResourceReferenceInput.tsx:104` +- `src/features/resource-canvas/resourceVersionReplacementModel.ts:232-245` +- `src/features/project-workspace/resourceReferences.ts:101-134` +- `src/view/project-development/resourceProjectionModel.ts:319-345` +- `src/features/ui-editor/uiDesignResourceBridge.ts:55-87` +- `src/App.tsx:1262,10083` + +特别处理: + +- `resourceCanvasBottomToolbarModel.ts:243` 的 `art-spritesheet` 和 `:258` 的 `ui-prototype` 当前位于生成入口选项,需先确认该字段是否传入 manifest 登记;若只是 API/生成请求 kind,使用显式转换函数,不把旧值加入 manifest enum。 +- `resourceProjectionModel.ts:326`、`uiDesignResourceBridge.ts:87` 是直接比较 manifest asset kind 的消费点,必须跟随生成绑定迁移到 enum。 +- `SupervisorChatOnlyView.tsx`、`ProjectSupervisorView.tsx` 等仍直接从 `packages/shared` 导入 manifest 类型,需在删除旧文件前完成 shell 内导入收口。