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