2026-05-08-01-53-07 修正DICOM范围和切割Mask预览

This commit is contained in:
2026-05-08 01:59:36 +08:00
parent 4ba85eba6e
commit 22b0a93654
7 changed files with 348 additions and 29 deletions

View File

@@ -0,0 +1,48 @@
# 测试方案 - 2026-05-08-01-53-07
## 静态检查
- 执行 `npm run lint`,确认 TypeScript 类型检查通过。
- 执行 `npm run build`,确认生产构建通过。
- 执行 `git diff --check`,确认无空白错误。
## 集成验证
- `GET /api/projects/head-ct-demo/dicom-fusion-volume?start=299&end=299&mode=soft` 正常返回最高切片。
- `GET /api/projects/head-ct-demo/dicom-fusion-volume?start=120&end=180&mode=soft` 正常返回 `start=120/end=180`,并保持完整 physical depth。
- 重新部署后 `curl -I http://127.0.0.1:4000/` 返回 200。
## 关键业务场景验证
1. 逆向工作区初始 DICOM 切片范围显示最高切片。
2. DICOM 切片范围支持 `M-N`,两个端点可分别调整。
3. 改变切片范围后模型不重新居中、不改变原始配准位置。
4. 浏览器放大时可滚动看到 DICOM 切片范围。
5. 项目库加载项目后后台预加载不会阻塞页面。
6. 启用模型切分后DICOM 帧上可看到切割 Mask 叠加。
## 医学影像数据相关边界验证
- 任意 `dicomCount``maxSlice=dicomCount-1`,不写死 300。
-`sliceStart > sliceEnd` 时前端仍按 `M-N` 排序请求。
- 当项目没有 DICOM 文件时,预加载和范围控制不报错。
## 回归风险
- 后端 physical depth 改为全序列基准后,旧截图中的 DICOM box 深度可能不同,但空间关系更符合配准。
- 切割 Mask 目前是可视化辅助层,不代表真实分割算法输出。
## 人工审核状态
用户已声明本次不需要二次人工确认,按默认执行确认规则直接执行。
## 执行结果
- `npm run lint`:通过。
- `npm run build`:通过,仅保留 Vite 大 chunk 体积提醒。
- `git diff --check`:通过。
- 重新部署:已通过 `tmux` 重启 `revoxelseg-dicom` 服务,运行在 `http://0.0.0.0:4000/`
- `curl -I http://127.0.0.1:4000/`:返回 `HTTP/1.1 200 OK`
- `GET /api/projects/head-ct-demo/dicom-fusion-volume?start=299&end=299&mode=soft`:返回 `start=299/end=299/total=300/frames=1/depth=300`
- `GET /api/projects/head-ct-demo/dicom-fusion-volume?start=120&end=180&mode=soft`:返回 `start=120/end=180/total=300/frames=61/depth=300`
- 静态检索确认已移除固定 `displayStart=0`,切片范围使用 `sliceStart/sliceEnd` 双端点。