3.1 KiB
3.1 KiB
实现方案-2026-05-20-01-38-33
实现方案文档路径
工程分析/实现方案-2026-05-20-01-38-33.md
修改目标
完善逆向工作区导出与位姿持久化:移除自动配准演示入口,新增可选导出 DICOM NIfTI、分割 NIfTI 和位姿 JSON,修复 blob 下载警告,增加三维坐标轴示意,并让保存位姿跨项目进入持久保留。
涉及路径
WebSite/server.tsWebSite/src/lib/api.tsWebSite/src/types.tsWebSite/src/components/ReverseWorkspace.tsx工程分析/需求分析-2026-05-20-01-38-33.md工程分析/实现方案-2026-05-20-01-38-33.md工程分析/测试方案-2026-05-20-01-38-33.md工程分析/经验记录.md
技术路线
- 后端扩展项目状态:
- 增加
modelPoses字段,保存默认、俯视、侧视与用户自定义位姿。 - 新增
PATCH /api/projects/:projectId/model-poses。
- 增加
- 后端重写导出:
- 新增通用 NIfTI-1 写入函数。
- DICOM 原始影像导出为 int16 HU
.nii.gz,维度与 spacing 来自 DICOM。 - 分割影像导出为 STL 构件采样切面填充后的 uint8 label map
.nii.gz,维度与 spacing 与 DICOM 完全一致。 - 位姿数据导出为 JSON,并记录导出时的当前 activePose。
- 保留
/export-mask兼容旧分割导出。
- 前端下载方式:
- 用直链
<a href>下载替代fetch -> Blob -> URL.createObjectURL。 - 新增导出选项复选框和“导出所选”动作,分割和位姿导出会携带当前模型位姿。
- 用直链
- UI 调整:
- 去掉“开始自动配准”按钮和相关演示进度状态。
- 顶部按钮改为“导出全部 NII.GZ”。
- 三维融合视角右下角增加固定 XYZ 坐标轴示意。
- 位姿持久化:
- 项目加载时读取
project.modelPoses。 - 保存/重命名位姿时写回后端。
- 项目加载时读取
执行步骤
- 更新类型定义和后端状态归一化。
- 实现 NIfTI/位姿导出接口。
- 更新前端 API 下载方法。
- 更新 ReverseWorkspace UI、导出选项、位姿保存逻辑和坐标轴。
- 执行
npm run lint与npm run build。 - 验证新导出接口返回文件,重新部署并推送。
兼容性与回滚方案
- 旧
downloadMask与/export-mask保持可用,只把底层分割 NIfTI 改为同维度数据。 - 如果完整 DICOM NIfTI 导出耗时过高,可后续增加范围导出或后台任务。
- 如果浏览器仍对 HTTP 下载提示安全警告,需要部署 HTTPS;本次先消除 blob URL 警告来源。
预计文件变更
server.ts:项目位姿字段、DICOM NIfTI 导出、STL Label Map 导出、位姿导出、兼容旧导出。api.ts:直链下载和导出选项 API。types.ts:项目位姿类型。ReverseWorkspace.tsx:移除自动配准、导出选项、坐标轴、位姿持久化。- 新增本次三份工程文档,更新经验记录。
提交与部署策略
- 提交信息:
2026-05-20-01-38-33 完善NII导出与位姿持久化 - 显式暂存本次相关文件,避免提交历史删除状态。
- 推送到 Gitea
origin/main并重新部署。