66 lines
2.3 KiB
Markdown
66 lines
2.3 KiB
Markdown
# 测试方案:头部 STL 实体导出验证
|
||
|
||
测试方案文档路径:`工程分析/测试方案-2026-05-20-02-55-11.md`
|
||
|
||
## 静态检查
|
||
|
||
- 运行 `npm run lint`,确认 TypeScript 类型检查通过。
|
||
- 运行 `git diff --check`,确认无空白错误。
|
||
|
||
结果:已通过。
|
||
|
||
## 构建检查
|
||
|
||
- 在 `WebSite/` 执行 `npm run build`,确认生产构建通过。
|
||
|
||
结果:已通过。Vite 仍提示单个 bundle 超过 500 kB,此为既有体积提示,不影响本次导出修复。
|
||
|
||
## 关键业务场景验证
|
||
|
||
- 启动临时服务或复用部署服务。
|
||
- 请求分割导出包:
|
||
- `targets=segmentation,pose`
|
||
- `format=nii.gz`
|
||
- `segmentationScope=visible`
|
||
- 解包并检查包含:
|
||
- `*-segmentation-label.nii.gz`
|
||
- `*-segmentation-labels.json`
|
||
- `*-pose-data.json`
|
||
|
||
结果:已通过。临时服务 `127.0.0.1:4100` 下:
|
||
|
||
- `segmentationScope=visible`:HTTP 200,约 431802 bytes,用时约 6.56 s。
|
||
- `segmentationScope=all`:HTTP 200,约 667690 bytes,用时约 8.51 s。
|
||
- 压缩包内包含分割 NIfTI、labels JSON 与 pose JSON。
|
||
|
||
## 医学影像数据相关边界验证
|
||
|
||
- 读取导出的 NIfTI header,确认维度仍为 DICOM 同维度。
|
||
- 统计 label 体素分布,重点检查 `头部` 对应 label 的体素数量和 slice 分布不再表现为极少量散点。
|
||
- 检查导出包内 labels JSON 中 `头部.stl` 的 label 对应关系。
|
||
|
||
结果:已通过。
|
||
|
||
- NIfTI 维度:`512 x 512 x 300`,`vox_offset=352`。
|
||
- `visible` 范围下 `头部.stl` 对应 label 7,体素数 `11742597`,覆盖 slice `13-287`,共 `275` 层,最大单层 `83903` 体素。
|
||
- `all` 范围下 label 7 体素数 `9845171`,label 8 `头颅.stl` 体素数 `1930290`,二者均覆盖 `275` 层。
|
||
- labels JSON 中 `头部.stl` 的 label/partId 为 `7`。
|
||
|
||
## 部署验证
|
||
|
||
- 重新部署后验证:
|
||
- `http://127.0.0.1:4000/api/health`
|
||
- `http://127.0.0.1:4000/`
|
||
- 对部署后的导出包端点再做一次小样本验证。
|
||
|
||
## Git/Gitea 备份验证
|
||
|
||
- 提交信息包含 `2026-05-20-02-55-11` 和本次修复摘要。
|
||
- 推送到 Gitea 成功。
|
||
|
||
## 风险与回归关注点
|
||
|
||
- 完整 STL 导出比预览抽样更耗时,需要观察请求耗时。
|
||
- 多构件重叠时仍按现有顺序写入 label,后写构件会覆盖先写构件。
|
||
- 旧的未暂存历史删除状态不应混入提交。
|