# 测试方案 - 2026-05-04-05-56-34 ## 静态检查 - 执行 `npm run lint`,确认 TypeScript 类型检查通过。 - 执行 `npm run build`,确认生产构建通过。 ## 集成测试 - DICOM preview API: - 验证 axial/sagittal/coronal 均返回。 - 验证 sagittal/coronal 返回的 `spacing`、`physicalSize`、`width/height` 合理。 - DICOM info API: - 验证返回 patient/study/series/image/window/spacing/sequence/source 分组。 - 验证 Pixel Spacing、Slice Spacing、Rows、Columns、文件数量等信息存在。 - STL preview API: - 验证 `limit=6000/16000/36000/72000` 返回不报错。 ## 关键业务场景验证 - DICOM 影像页: - 矢状面/冠状面不再异常扁平。 - 点击信息按钮弹出详情面板。 - 详情面板展示像素间距、切片间距、切片厚度、矩阵、物理尺寸。 - 3D 模型页: - 不再显示白色实体和自动旋转开关。 - 实体化档位包含“超精细”。 - 默认正向静止摆放。 - 重置位姿按钮位于“整体位姿”标题右侧。 - 左键拖拽旋转,右键/Shift 拖拽平移,滚轮缩放。 - 画布交互后右侧整体位姿滑块数值同步变化。 ## 医学影像数据相关边界验证 - DICOM tag 缺失时使用 fallback,不导致接口 500。 - 切片间距优先 Image Position Patient 差值,再 fallback 到 Spacing Between Slices、Slice Thickness、1mm。 - 多平面物理比例不改变切片总数和当前切片编号逻辑。 ## 回归风险 - 物理比例重采样可能增大图像尺寸,需要限制最大输出尺寸。 - 超精细 STL 预览可能变慢,需要保留低档位。 - 鼠标交互需避免页面滚动和右键菜单干扰。 ## 人工审核状态 用户已明确本次无需人工二次确认,按本方案执行验证。 ## 执行结果 - `npm run lint`:通过。 - `npm run build`:通过;Vite 仍提示 bundle 超过 500 kB,为现有 Three.js/Recharts 依赖导致的非阻断警告。 - DICOM preview API 验证: - `sagittal` 返回 `384x421`,`spacing.slice=1mm`、`displayY=0.78125mm`,物理尺寸约 `300mm x 328.906mm`。 - `coronal` 返回 `384x512`,`spacing.slice=1mm`、`displayY=0.78125mm`,物理尺寸约 `300mm x 400mm`。 - DICOM info API 验证: - 返回患者 `WANG FANG`、`CT`、文件数 `300`、矩阵 `512x512`。 - 返回 `row/column spacing=0.781mm`、`slice=1mm`,来源 `ImagePositionPatient`。 - 返回物理尺寸 `400mm x 400mm x 299mm`。 - STL preview API 验证: - `limit=6000/16000/36000/72000` 均返回,首个 STL 在超精细档达到原始 `17384` 个三角面。 - 无头 Chrome 前端验证: - DICOM 信息按钮存在。 - DICOM 信息弹窗存在,并展示像素行间距、切片间距、物理尺寸。 - 3D 页存在“超精细”,已移除“白色实体”和“自动旋转”。 - 默认位姿滑块为 `0,0,0 / 0,0,0 / 1`。 - 页面包含“左键旋转”和“滚轮缩放”提示。 - 已重新部署到 `http://192.168.3.11:4000/`,tmux 会话:`revoxelseg-dicom`。