隔离项目激活模板状态
- 为前端 store 增加按项目保存的激活模板映射,切换项目时恢复对应项目模板。 - 项目 ID 变化时清理临时帧、标注、mask、选区和撤销栈,避免工作区状态串台。 - 同一项目对象刷新时保留当前工作区状态,避免重命名或封面刷新误清空。 - 新增 useStore 回归测试覆盖项目模板隔离和项目切换清理逻辑。 - 更新前端元素审计与交互状态机文档,记录项目级激活模板规则。
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
| `currentProject` / `frames` / `currentFrameIndex` | `src/store/useStore.ts` | 当前工作项目、帧序列和当前帧。 |
|
||||
| `activeTool` | `src/store/useStore.ts` | 工作区当前工具。 |
|
||||
| `selectedMaskIds` | `src/store/useStore.ts` | 当前选中的 mask id 列表;Canvas、本体面板和 AI 页共享。 |
|
||||
| `activeTemplateId` / `activeClass` | `src/store/useStore.ts` | 当前模板和后续新建 mask 使用的语义类别。 |
|
||||
| `activeTemplateId` / `projectActiveTemplateIds` / `activeClass` | `src/store/useStore.ts` | 当前项目的激活模板、各项目独立保存的激活模板映射,以及后续新建 mask 使用的语义类别。 |
|
||||
| `maskHistory` / `maskFuture` | `src/store/useStore.ts` | 撤销/重做栈。 |
|
||||
|
||||
## 工作区工具自动机
|
||||
@@ -87,6 +87,7 @@
|
||||
| 交互 | 状态机 | 测试 |
|
||||
|------|--------|------|
|
||||
| 切换激活模板 | 无 mask 直接切换;有任意 mask 时弹确认;确认后删除项目所有本地/后端标注再切换;取消则保持原模板 | `OntologyInspector.test.tsx` |
|
||||
| 切换项目 | 项目 ID 变化时清空临时帧、mask、选区和撤销栈,并按项目 ID 恢复该项目上次使用的激活模板;同一项目对象刷新名称/封面时不清空工作区 | `useStore.test.ts` |
|
||||
| 删除模板 | 站内确认后删除;系统默认模板可由演示恢复出厂设置恢复 | `TemplateRegistry.test.tsx`、后端模板/管理员测试 |
|
||||
| 复制模板 | 鼠标点击复制入口,生成当前用户私有副本并保留分类颜色、maskid 和层级 | `TemplateRegistry.test.tsx` |
|
||||
| 项目复制 | 项目删除按钮旁复制入口;可选“新项目重置”或“全内容复制” | `ProjectLibrary.test.tsx` |
|
||||
|
||||
Reference in New Issue
Block a user