62 lines
2.9 KiB
Markdown
62 lines
2.9 KiB
Markdown
# 实现方案-2026-05-20-22-35-42
|
||
|
||
## 实现方案文档路径
|
||
|
||
`工程分析/实现方案-2026-05-20-22-35-42.md`
|
||
|
||
## 修改目标
|
||
|
||
- 精简 Overlay Label Map 状态文案。
|
||
- 导出项目及结果支持分割整体/分构件导出,并调整默认勾选与排序。
|
||
- 为项目库 DICOM/STL 导入按钮接入真实上传流程,空项目展示导入提示。
|
||
- 项目级上传资产独立存储,恢复演示环境仍使用默认数据。
|
||
- 用户账号重名冲突给出可读反馈。
|
||
- 逆向工作区无保存结果时初次加载默认执行 Z 轴等比例拉伸。
|
||
|
||
## 涉及路径
|
||
|
||
- `WebSite/server.ts`
|
||
- `WebSite/src/lib/api.ts`
|
||
- `WebSite/src/components/ProjectLibrary.tsx`
|
||
- `WebSite/src/components/ReverseWorkspace.tsx`
|
||
- `WebSite/src/components/UserManagement.tsx`
|
||
- `工程分析/经验记录.md`
|
||
|
||
## 技术路线
|
||
|
||
1. 后端新增项目上传资产目录 `WebSite/data/uploads/<projectId>/dicom|stl`,导入接口接收 base64 文件并写入项目专属目录。
|
||
2. 后端统一项目 DICOM/STL 路径解析,预览、三维融合、模型文件、导出和分割生成均读取项目路径。
|
||
3. 导出包接口增加 `segmentationExportMode=combined|separate` 参数;整体模式沿用现有 label map,分构件模式逐个构件生成独立 NII.GZ。
|
||
4. 前端导出面板增加分割导出方式单选,调整默认选择和选项顺序。
|
||
5. 项目库导入按钮使用隐藏文件输入,按当前视图选择 DICOM 或 STL 上传,并刷新项目状态。
|
||
6. 用户管理编辑接口 409 时展示“账号已存在,请更换账号”等提示。
|
||
7. 逆向工作区加载项目后,若没有保存结果,则在 fusion volume 和模型边界都就绪后触发一次 Z 拉伸。
|
||
|
||
## 执行步骤
|
||
|
||
1. 编写本次需求分析、实现方案、测试方案。
|
||
2. 阅读并定位导出、导入、项目路径、用户管理和逆向工作区相关源码。
|
||
3. 修改后端资产导入与导出逻辑。
|
||
4. 修改前端项目库、逆向工作区和用户管理交互。
|
||
5. 执行 `npm run lint` 与 `npm run build`。
|
||
6. 使用 tmux 重启 `revoxelseg-dicom` 服务并验证 `/api/health` 与首页。
|
||
7. 追加经验记录,提交并推送本次相关文件。
|
||
|
||
## 兼容性与回滚方案
|
||
|
||
- 未导入资产的默认项目继续读取 `Head_CT_DICOM/` 与 `Head_CT_ReConstruct/`。
|
||
- 已保存的项目路径由状态文件保存,恢复演示环境可通过现有重置接口回到默认路径。
|
||
- 若分构件导出失败,可回退为 `segmentationExportMode=combined` 的原有整体导出。
|
||
|
||
## 预计文件变更
|
||
|
||
- 前端:3 个组件与 API 封装。
|
||
- 后端:1 个 Express 服务文件。
|
||
- 工程文档:本次三件套与经验记录。
|
||
|
||
## 提交与部署策略
|
||
|
||
- 仅暂存本次修改的源码与工程分析文档。
|
||
- commit message 包含 `2026-05-20-22-35-42` 与简要描述。
|
||
- 提交后推送到既有 Gitea 远端,并重启 4000 端口服务。
|