2026-05-20-03-19-25 完善分割结果保存与STL导出

This commit is contained in:
2026-05-20 03:33:21 +08:00
parent b9c0f17313
commit 25f34d1eef
10 changed files with 667 additions and 78 deletions

View File

@@ -0,0 +1,79 @@
# 测试方案:导出 STL、保存分割结果与项目库复核
测试方案文档路径:`工程分析/测试方案-2026-05-20-03-19-25.md`
## 静态检查
- 运行 `npm run lint`,确认 TypeScript 类型检查通过。
- 运行 `git diff --check`,确认无空白错误。
结果:已通过。
## 构建检查
-`WebSite/` 执行 `npm run build`,确认生产构建通过。
结果已通过。Vite 仍有单 bundle 超过 500 kB 的既有提示,不影响本次功能。
## 关键业务场景验证
- 调用 `POST /api/projects/head-ct-demo/segmentation-results`,确认返回项目包含保存记录。
- 调用 `/api/projects/head-ct-demo/export-bundle?targets=stl`,确认压缩包内包含原始 STL 文件。
- 调用 `/api/projects/head-ct-demo/export-bundle?targets=segmentation,pose,stl`,确认分割、位姿与 STL 可共包导出。
- 验证项目库 `分割结果` 右侧导出菜单参数与逆向工作区一致。
结果:已通过。
- 临时服务 `127.0.0.1:4100` 下保存接口返回 `segmentationResults`,并可看到默认 `最佳位姿`
- `targets=stl` 返回 HTTP 200压缩包约 `116M`,目录包含 9 个原始 STL会厌、气管上段、气管狭窄段、气管下段、气管整体、声门、头部、头颅、肿瘤。
- `targets=segmentation,pose,stl` 返回 HTTP 200`121433464` bytes用时约 `7.58s`,包内包含分割 NIfTI、labels JSON、pose JSON 和 STL 原始模型。
## 医学影像数据相关边界验证
- 分割导出仍保持 DICOM 同维度 NIfTI。
- 保存的分割结果导出时使用保存时位姿。
- `visible/all` 分割范围继续影响 Label Map 与 labels JSON。
结果:已覆盖导出包结构验证;分割 NIfTI 生成逻辑未改变,继续复用上一轮完整 STL 网格实体导出链路。
## UI 验证
- 逆向工作区顶部出现 `保存至项目库`
- 三栏布局中左侧融合视角变窄,中部工具栏和右侧映射视图变宽。
- 右侧图例只显示当前 slice 中有边或填充像素的构件;无构件时显示空状态。
- 项目库分割结果区域显示保存记录和导出入口。
## 文档验证
- `Agent.md` 存在。
- `Agent.md` 包含当前系统使用方式。
- `主要功能` 说明在 500~1300 字范围内。
结果:已通过。`Agent.md` 总字数约 `1105` 字符,主要功能段落在 500~1300 字范围内。
## 部署验证
- 重新部署后验证:
- `http://127.0.0.1:4000/api/health`
- `http://127.0.0.1:4000/`
- 部署后验证导出包接口。
结果:已通过。
- `tmux` 会话 `revoxelseg-dicom` 已重启,服务输出 `ReVoxelSeg DICOM server ready at http://0.0.0.0:4000/`
- `/api/health` 返回 `{"ok":true,"service":"revoxelseg-dicom"}`
- 首页 HTTP 200。
- 部署后 `targets=stl` 导出返回 HTTP 200`121372189` bytes压缩包内包含 9 个 STL 原始模型。
## Git/Gitea 备份验证
- 提交信息包含 `2026-05-20-03-19-25` 和本次修改摘要。
- 推送到 Gitea 成功。
结果:本地 Git commit 已完成Gitea 推送重试 2 次均失败,错误为 `No route to host`,说明当前环境到 `192.168.31.5:5002` 网络不可达。待网络恢复后执行 `git push origin main` 即可补推。
## 风险与回归关注点
- STL 原始模型打包体积较大,接口验证可先用 `targets=stl` 查看目录,不反复下载全量组合。
- 临时保存接口测试会修改 `WebSite/data/state.json`,该运行态文件不纳入提交。
- 旧的未暂存历史删除状态不应混入提交。