Files
REVOXELSEG_DICOM/工程分析/实现方案-2026-05-20-01-38-33.md

72 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实现方案-2026-05-20-01-38-33
## 实现方案文档路径
`工程分析/实现方案-2026-05-20-01-38-33.md`
## 修改目标
完善逆向工作区导出与位姿持久化:移除自动配准演示入口,新增可选导出 DICOM NIfTI、分割 NIfTI 和位姿 JSON修复 blob 下载警告,增加三维坐标轴示意,并让保存位姿跨项目进入持久保留。
## 涉及路径
- `WebSite/server.ts`
- `WebSite/src/lib/api.ts`
- `WebSite/src/types.ts`
- `WebSite/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`
## 技术路线
1. 后端扩展项目状态:
- 增加 `modelPoses` 字段,保存默认、俯视、侧视与用户自定义位姿。
- 新增 `PATCH /api/projects/:projectId/model-poses`
2. 后端重写导出:
- 新增通用 NIfTI-1 写入函数。
- DICOM 原始影像导出为 int16 HU `.nii.gz`,维度与 spacing 来自 DICOM。
- 分割影像导出为 STL 构件采样切面填充后的 uint8 label map `.nii.gz`,维度与 spacing 与 DICOM 完全一致。
- 位姿数据导出为 JSON并记录导出时的当前 activePose。
- 保留 `/export-mask` 兼容旧分割导出。
3. 前端下载方式:
- 用直链 `<a href>` 下载替代 `fetch -> Blob -> URL.createObjectURL`
- 新增导出选项复选框和“导出所选”动作,分割和位姿导出会携带当前模型位姿。
4. UI 调整:
- 去掉“开始自动配准”按钮和相关演示进度状态。
- 顶部按钮改为“导出全部 NII.GZ”。
- 三维融合视角右下角增加固定 XYZ 坐标轴示意。
5. 位姿持久化:
- 项目加载时读取 `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` 并重新部署。