Files
REVOXELSEG_DICOM/工程分析/实现方案-2026-05-20-02-32-47.md

2.6 KiB
Raw Blame History

实现方案-2026-05-20-02-32-47

实现方案文档路径

工程分析/实现方案-2026-05-20-02-32-47.md

修改目标

将顶部“导出全部 NII.GZ”改为一次性下载 .tar.gz 导出包;分割影像导出时自动附带 label/category 映射 JSON并支持“所有类别/可见类别”范围选择。

涉及路径

  • WebSite/server.ts
  • WebSite/src/lib/api.ts
  • WebSite/src/components/ReverseWorkspace.tsx
  • 工程分析/需求分析-2026-05-20-02-32-47.md
  • 工程分析/实现方案-2026-05-20-02-32-47.md
  • 工程分析/测试方案-2026-05-20-02-32-47.md
  • 工程分析/经验记录.md

技术路线

  1. 后端扩展分割生成参数:
    • 增加 SegmentationExportScope = all | visible
    • createSegmentationData 按 scope 决定是否跳过隐藏构件。
  2. 后端新增类别映射 JSON
    • 根据 project.stlFilesproject.moduleStyles 生成 label/name/fileName/color/opacity/visible。
    • scope 为 visible 时只包含可见构件。
  3. 后端新增导出包接口:
    • GET /api/projects/:projectId/export-bundle
    • 参数:targets=dicom,segmentation,poseformat=nii.gzpose=...segmentationScope=visible|all
    • 使用现有 tar header 工具封装为 .tar.gz
  4. 前端 API
    • 新增 downloadProjectExportBundle
    • 保留单个分割 NII/NII.GZ 下载兼容。
  5. 前端菜单:
    • “导出所选”改为下载单个压缩包。
    • 增加分割类别范围的 segmented control。
    • 仅选中分割影像时显示类别范围选项。

执行步骤

  • 新增后端 tar entry 通用函数和 bundle 生成函数。
  • 修改 NIfTI 分割生成函数支持 scope。
  • 新增 label map JSON 生成逻辑。
  • 调整前端 API 和导出菜单。
  • 执行 npm run lintnpm run build
  • 用临时/正式服务验证 bundle 接口返回 .tar.gz,并检查包内文件名。
  • 追加经验记录、commit、push、部署。

兼容性与回滚方案

  • /export-nifti/export-mask 保持可用。
  • 单独分割导出默认沿用 visible scope。
  • 若 bundle 导出异常,可回滚到多文件直链下载。

预计文件变更

  • server.ts:新增 bundle、分割 scope、类别映射 JSON。
  • api.ts:新增 bundle 下载 API。
  • ReverseWorkspace.tsx:导出菜单增加 scope 选择并调用 bundle。
  • 工程分析文档:新增本次文档,更新经验记录。

提交与部署策略

  • Commit message2026-05-20-02-32-47 支持NII导出包与分割类别范围
  • 显式暂存本次相关文件,避免提交历史删除状态。
  • 推送到 Gitea origin/main,并使用 tmux 会话 revoxelseg-dicom 重新部署。