2026-05-04-05-20-16 优化DICOM切片下载和3D预览

This commit is contained in:
2026-05-04 05:32:34 +08:00
parent 4ef3be69f4
commit 4922c2d991
8 changed files with 584 additions and 37 deletions

View File

@@ -0,0 +1,62 @@
# 测试方案 - 2026-05-04-05-20-16
## 静态检查
- 执行 `npm run lint`,确认 TypeScript 类型检查通过。
- 执行 `npm run build`,确认生产构建通过。
## 集成验证
- 调用 `/api/projects/head-ct-demo/dicom-preview` 验证:
- `plane=axial`
- `plane=sagittal`
- `plane=coronal`
- `mode=bone`
- 调用 `/api/projects/head-ct-demo/dicom-archive` 验证压缩包响应头和文件名。
- 调用 `/api/projects/head-ct-demo/models/:fileName/preview` 验证 STL 预览顶点数据非空。
## 关键业务场景验证
- 项目库 DICOM 视图:
- 长按上下箭头能连续改变切片。
- 三个面切换后图像显示完整。
- 左/右旋转 90 度后画布方向变化。
- 下载当前 PNG 命名包含项目、平面、切片、模式、旋转角度。
- 下载 DICOM 压缩包可触发。
- 项目库 3D 模型视图:
- 模型加载进度可见。
- 加载完成后模型可见,而不是空白画布。
- 颜色、透明度、显示/隐藏状态仍可影响渲染。
- 逆向工作区:
- 顶部不再显示 `Head_CT_DICOM ↔ Head_CT_ReConstruct`
- 当前项目上下文仍可见。
## 医学影像数据相关边界验证
- DICOM 序列按文件名自然排序。
- 矢状面/冠状面重建裁切保留边距,避免把真实人体区域裁掉。
- 显示模式与三平面组合时返回的 `total``slice``width``height` 合理。
## 回归风险
- DICOM 预览缓存键应包含平面、模式和切片,避免错图。
- PNG 下载应和当前旋转状态一致。
- 3D 模型抽样数量不能过高导致页面阻塞。
## 人工审核状态
用户已明确本次测试方案无需二次确认,记录后直接执行。
## 执行结果
- `npm run lint`:通过。
- `npm run build`通过Vite 提示 bundle 超过 500 kB为 Three.js/Recharts 等现有依赖带来的体积警告,不阻断构建。
- `GET /api/projects/head-ct-demo/dicom-preview?plane=axial&slice=150&mode=default`:通过,返回 `512x512``total=300`,文件名 `151.dcm`
- `GET /api/projects/head-ct-demo/dicom-preview?plane=sagittal&slice=256&mode=bone`:通过,返回 `300x421``total=512`
- `GET /api/projects/head-ct-demo/dicom-preview?plane=coronal&slice=256&mode=soft`:通过,返回 `300x512``total=512`
- `HEAD /api/projects/head-ct-demo/dicom-archive`:通过,返回 `Content-Type: application/gzip`,文件名 `head-ct-demo-Head_CT_DICOM-300-files.tar.gz`
- `GET /api/projects/head-ct-demo/models/会厌.stl/preview?limit=1200`:通过,返回 `1159` 个抽样三角面、`10431` 个顶点数值。
- 无头 Chrome 前端验证:登录后进入项目库 3D 模型页,在 WebGL 不可用场景自动生成二维兜底预览canvas 尺寸 `1236x567`,像素采样 `nonBackground=67`,确认不是空白画布。
- 已重启部署到 `http://192.168.3.11:4000/`tmux 会话:`revoxelseg-dicom`