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

3.1 KiB
Raw Permalink Blame History

实现方案-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 lintnpm 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 并重新部署。