Files
REVOXELSEG_DICOM/工程分析/实现方案-2026-05-20-14-19-23.md

80 lines
3.5 KiB
Markdown

# 实现方案:逆向分割结果单结果化与入口统一
实现方案文档路径:`工程分析/实现方案-2026-05-20-14-19-23.md`
## 修改目标
调整项目库与逆向工作区的逆向分割结果保存、展示、读取和导出交互,使结果只保留一个、命名统一、入口集中、退出有保存提醒。
## 涉及路径
- `WebSite/src/App.tsx`
- `WebSite/src/components/ProjectLibrary.tsx`
- `WebSite/src/components/ReverseWorkspace.tsx`
- `WebSite/src/types.ts`
- `WebSite/src/lib/api.ts`
- `WebSite/server.ts`
- `工程分析/需求分析-2026-05-20-14-19-23.md`
- `工程分析/实现方案-2026-05-20-14-19-23.md`
- `工程分析/测试方案-2026-05-20-14-19-23.md`
- `工程分析/经验记录.md`
## 技术路线
1. 后端保存分割结果接口改为覆盖保存,只保留最新一条记录。
2. 项目归一化时保留最新一条 `segmentationResults`,兼容旧状态中已有多条记录。
3. 扩展 `SegmentationResult` 存储必要的切片范围、当前映射切片、显示/融合配置等上下文,用于重新进入工作区恢复。
4. 逆向工作区加载项目时读取最新保存结果,恢复位姿、构件样式、分割范围和映射切片。
5. `App.tsx` 接入工作区离开保护:离开逆向工作区时调用工作区注册的保存确认逻辑。
6. 项目库页签改名为“逆向分割结果”,内容改为两张视图预览卡片和右侧导出面板。
7. 顶部导出文案统一改为“导出项目及结果”,并将保存按钮移动到旁边。
8. 删除映射视图标题旁边的 `NII``NII.GZ` 小下载按钮。
9. 保存成功后显示顶部悬浮提示并渐隐消失。
## 执行步骤
- 阅读现有类型、API、后端保存接口、项目库和逆向工作区组件结构。
- 更新类型定义与后端归一化/保存逻辑。
- 更新 API payload 和前端保存调用。
- 更新项目库 UI 与导出按钮文案。
- 更新逆向工作区顶部操作区和映射视图标题区。
- 接入退出保存确认和进入工作区结果恢复。
- 运行类型/构建检查、服务部署验证。
## 兼容性与回滚方案
- 后端归一化兼容旧的多条 `segmentationResults`,只取最后一条作为当前结果。
- 若保存上下文字段缺失,前端继续使用默认位姿、默认切片范围和默认显示配置。
- 若导出按钮菜单异常,可继续调用现有 `/api/projects/:projectId/export-bundle` 后端接口。
## 预计文件变更
程序文件:
- `WebSite/src/App.tsx`
- `WebSite/src/components/ProjectLibrary.tsx`
- `WebSite/src/components/ReverseWorkspace.tsx`
- `WebSite/src/types.ts`
- `WebSite/src/lib/api.ts`
- `WebSite/server.ts`
工程分析:
- 本轮三份分析文档。
- `工程分析/经验记录.md`
## 提交与部署策略
- 暂存本轮程序改动与工程分析文档。
- 避免提交软著材料、运行态导出文件、旧历史文档删除状态。
- commit message 包含 `2026-05-20-14-19-23`
- 构建通过后重启 `tmux` 会话 `revoxelseg-dicom` 并验证服务。
## 实际实现记录
- 后端 `segmentationResults` 归一化改为只保留最新一条,并扩展保存切片、显示、边界与切割状态字段。
- 导出接口默认使用最新保存结果的位姿、构件样式和类别范围。
- 逆向工作区进入时恢复最新保存结果,退出时注册保存确认守卫。
- 项目库“逆向分割结果”改为两张预览图加右侧统一导出面板。
- 顶部保存按钮迁移到导出按钮旁,并加入保存成功悬浮渐隐提示。