# 实现方案-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. 前端下载方式: - 用直链 `` 下载替代 `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` 并重新部署。