# 测试方案 - 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` 双端点。