From da44d66dc87798b55c09ae83828a8ba46e83f2d4 Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Thu, 17 Sep 2026 21:12:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=98=8E=E7=A1=AE=E5=A4=9A=E9=80=89=E7=B4=A0?= =?UTF-8?q?=E6=9D=90=E6=89=B9=E9=87=8F=E8=BF=BD=E5=8A=A0=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E7=9A=84=E8=A1=8C=E4=B8=BA=E5=90=88=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 限定追加语义、冻结对象、原子保存与类型保留边界 记录已评审里程碑及前后端并行实现计划 --- ...【实施计划】多选素材批量标签-2026-09-17.md | 30 +++++++++++++++++ .../【里程碑】多选素材批量标签-2026-09-17.md | 33 +++++++++++++++++++ ...案】AI游戏创作智能体App实施计划-2026-06-24.md | 12 +++++++ 3 files changed, 75 insertions(+) create mode 100644 docs/project-memory/plans/【实施计划】多选素材批量标签-2026-09-17.md create mode 100644 docs/project-memory/plans/【里程碑】多选素材批量标签-2026-09-17.md diff --git a/docs/project-memory/plans/【实施计划】多选素材批量标签-2026-09-17.md b/docs/project-memory/plans/【实施计划】多选素材批量标签-2026-09-17.md new file mode 100644 index 000000000..4968ceb1c --- /dev/null +++ b/docs/project-memory/plans/【实施计划】多选素材批量标签-2026-09-17.md @@ -0,0 +1,30 @@ +# 【实施计划】多选素材批量标签 + +| 字段 | 值 | +| --- | --- | +| Milestone | docs/project-memory/plans/【里程碑】多选素材批量标签-2026-09-17.md | +| Status | ready | +| Owner | 主 Agent 集成;deepseek-flash 实现和独立 review | + +## 修改边界 + +- 原生:`project/manifest` 标签批量追加函数和 DTO、`commands.rs` 权限门面、`main.rs` 注册、分类测试。沿用项目写锁、manifest mutation、审计和 revision,不新建状态系统。 +- 前端:扩展现有 `ResourceClassificationPanel` 为单/批量模式,复用已有字段与 pill;`ResourceCanvasPanelView` 增加可选批量标签动作;工作台冻结选择并用完整返回条目更新。前端不得逐素材循环写回。 +- 并行采用不重叠文件集:原生 agent 只写 Rust,前端 agent 只写 TS/TSX/CSS/前端测试;主 Agent 负责文档与集成,禁止跨区提交别人文件。 + +## 顺序与检查点 + +规范经独立 deepseek-flash 评审通过;批量输入仅追加草稿,面板动作行直接增加入口,返回顺序、去重上限、no-op revision 和未知字段拒绝已在主规范明确。 + +1. 规范独立评审,确定命令与错误语义。 +2. 前后端并行实现,均在明确工作区局部修改、自审和定向验证。 +3. 集成后独立 review,再按有效发现返修;不因测试方便而扩产品范围。 +4. 本地中文提交、报告已验证和待真机事项;远程操作留待用户后续确认。 + +## 验证 + +`npm test -- <相关测试>`、AGC 类型检查、目标文件 ESLint、原生 classification 相关测试、`npm run check:encoding`、`npm run check:doc-index`、`git diff --check`。依赖复用时使用本工作树忽略目录的隔离配置,避免修改主目录依赖。 + +## 风险与回滚 + +批量写不能掩盖部分失败;类型字段不能借标签保存被读时自愈值覆盖。单素材编辑与多素材追加保留明确分支,不重构其它菜单动作;本地独立提交可回退新需求,保留主线合并及既有画布工作。 diff --git a/docs/project-memory/plans/【里程碑】多选素材批量标签-2026-09-17.md b/docs/project-memory/plans/【里程碑】多选素材批量标签-2026-09-17.md new file mode 100644 index 000000000..8abf8f111 --- /dev/null +++ b/docs/project-memory/plans/【里程碑】多选素材批量标签-2026-09-17.md @@ -0,0 +1,33 @@ +# 【里程碑】多选素材批量标签 + +| 字段 | 值 | +| --- | --- | +| Version | 1.0 | +| Status | approved | +| Date | 2026-09-17 | +| Parent Spec | docs/technical/【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md | + +## 目标与范围 + +多选已登记素材后一次追加标签,保留每项原有标签和类型。复用主线菜单与现有标签面板,画布和资源面板均可进入,原生一次校验与保存。 + +## 非目标 + +不处理动画失败、资源面板卡死与未完成编辑恢复;不做聊天引用扩展、批量类型修改、既有标签批量删除或 AI 自动分类。不推送、不触发或监视 CI、不写飞书。 + +## 前置 + +主线菜单 PR #410 已合入;保留本分支前六项画布功能。主规范及本里程碑通过独立评审后进入实现。 + +## 验收 + +- [ ] 两个入口均按完整冻结选择集编辑,不只修改首项。 +- [ ] 原有标签、正式分类和无关素材不变。 +- [ ] 权限/身份/CAS/任意项上限失败时无部分写入;成功一次 revision。 +- [ ] 空操作、重复标签和重复 ID 不重复写入;最大 200 项有界。 +- [ ] 保存锁定、失败草稿保留、切项目迟到响应正确处理。 +- [ ] 单素材标签、菜单角标和画布布局回归通过。 + +## 证据 + +前端组件与宿主整合测试、Rust 原生定向测试、AGC 类型检查、ESLint、编码/文档索引/diff 检查;真实客户端验证单独报告。 diff --git a/docs/technical/【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md b/docs/technical/【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md index c09b2f654..0e66d53bb 100644 --- a/docs/technical/【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md +++ b/docs/technical/【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md @@ -1,5 +1,17 @@ # AI 游戏创作智能体 App 实施计划 +## 多选素材批量标签 + +- 画布与资源面板共用选中集合。选择至少两项同项目已登记素材后,从已有“编辑标签”入口或资源面板的“批量标签”动作打开同一标签编辑器的批量模式;入口遵循既有“常用操作 + 更多”收纳,不新增平行资源管理页。 +- 批量模式只将用户填写的标签追加到整组选中素材。输入按既有中英文逗号、顿号、换行拆分,trim、去空及去重;每份素材原有标签、正式分类、类型、路径、来源、版本关系均保留。批量删除/替换既有标签、批量改素材类型及 AI 自动分类不在本次范围。 +- 操作对象在打开面板时冻结为去重后的素材 ID 列表,不随后续选择变化扩散;项目切换关闭面板并忽略迟到响应。混合选择含虚拟版本、未登记附件或已删除资源时,不允许只对其中一部分静默保存,入口禁用并给出原因。 +- 批量范围为当前入口展示的完整选中集合:资源面板保留跨筛选的选择时,也必须显示实际目标数量;不得仅修改第一项或仅修改当前可见项。每批最多 200 个不同素材,超过上限要求缩小选择。 +- 原生新增局部命令 `add_local_project_resource_tags`,参数 `input: { projectPath, expectedProjectId, expectedProjectRevision, assetIds, tags }`;仅消费当前 manifest 素材 ID。响应 `{ assets, committedProjectRevision }` 返回整组选中素材最新条目。沿用 `asset.register` 权限、项目身份、写锁及 revision CAS;不新建 manifest schema、数据库字段或外部 API。 +- 原生按锁内最新 manifest 为每项合并标签,沿用现有单标签长度与标签总量限制,先校验全部目标及合并后上限,再一次写 manifest;非法 ID、标签、项目身份或版本冲突不写入任何一项。重复标签重试不重复追加;整批无变化时不推进 revision、不追加修改审计。已写 manifest 后的审计或 revision 异常必须明确返回“已写入”状态信息,沿用既有单资源写入错误语义,不能谎称回滚。 +- 保存期间禁用重复提交及关闭;失败保留待追加标签,CAS 冲突需明确报错而非自动覆盖。成功用原生返回条目刷新宿主 manifest 与筛选统计,不循环调用单素材保存、不按旧闭包覆盖最新其他素材。 +- 单素材标签编辑仍保持既有增删标签行为;菜单信息/类型入口、批量移动、文档与引擎资源预览不得回退。验收覆盖不同原始标签与分类、资源面板/画布多选入口、重复标签、超限及混合选择、批次失败零部分写、一次 revision、项目切换迟到回包和单素材回归。 +- 批量模式的标签输入仅显示待追加草稿,不把各素材已有标签并集作为提交值。资源面板入口放入现有动作行,画布入口沿用选中工具栏的收纳。响应条目按去重后请求 ID 的首次出现顺序返回,无变化时返回当前 revision;DTO 使用 camelCase 并拒绝未知字段,批次上限按去重后数量计算。 + ## 资源画布生成、展示与布局合同 - 生成工具点击后先在当前栏目创建临时占位卡,并以卡片为锚点展示独立生成浮层;占位不登记为正式素材、不进入 Agent 可引用资源集。上传仍沿用文件选择,不创建虚假生成任务。关闭编辑浮层不应丢失正在执行的任务;切换项目不得将旧项目结果或草稿写入新项目。