49 lines
2.3 KiB
Markdown
49 lines
2.3 KiB
Markdown
# 测试方案 - 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` 双端点。
|