# 测试方案 - 2026-05-04-05-41-22 ## 静态检查 - 执行 `npm run lint`,确认 TypeScript 类型检查通过。 - 执行 `npm run build`,确认生产构建通过。 ## 集成测试 - 调用 STL preview API: - `limit=6000` - `limit=16000` - `limit=36000` - 确认返回顶点数量随实体化程度增加,且响应不报错。 - 调用 DICOM preview API,确认连续请求不同 slice 时均可返回合理 `slice/total/width/height`。 ## 关键业务场景验证 ### 3D 模型页 - 默认进入后模型可见。 - 实体化程度从“预览”切换到“标准/精细”后,模型表面更连续,而不是纯点云感。 - 开启“整体白色实体”后,显示效果接近参考图的灰白实体模型。 - 调整旋转 X/Y/Z、平移 X/Y/Z、缩放后,模型位姿即时变化。 - 点击重置后,位姿恢复默认。 - 隐藏/显示单个 STL、调整颜色、透明度仍正常。 - WebGL 不可用时二维兜底仍可见,不出现空白画布。 ### DICOM 切片页 - 长按上箭头时,切片编号连续增加,图像连续变化。 - 长按下箭头时,切片编号连续减少,图像连续变化。 - 快速连续切换时,不出现旧请求覆盖新切片的错帧。 - 到达首帧/末帧时不越界。 ### 逆向工作区 - 顶部全局 header 仍显示“逆向工作区”。 - 页面内容区不再重复显示第二个“逆向工作区”。 - 页面内容区不再出现上方重复“当前项目:xxx”副标题。 - 项目标签行字号变大,且显示当前项目、DICOM 数量、STL 数量。 ## 医学影像数据相关边界验证 - DICOM 连续切片时保留当前 plane、mode、rotation 状态。 - STL 实体化程度不改变各构件的原始相对空间关系,只改变抽样密度和显示材质。 - 位姿控制作用于整体模型 group,不改变单个 STL 的相对拼装位置。 ## 回归风险 - 高实体化程度可能提升渲染压力,需要在 UI 中保留“预览”档位。 - DICOM 连续请求可能造成响应乱序,需要请求序号保护。 - 逆向工作区删除标题后仍需保证用户知道当前处于哪个页面,依赖全局 header。 ## 人工审核状态 用户已回复“确认方案”,按本测试方案执行验证。 ## 执行结果 - `npm run lint`:通过。 - `npm run build`:通过;Vite 仍提示 bundle 超过 500 kB,为现有 Three.js/Recharts 依赖带来的非阻断警告。 - STL preview API 验证: - `limit=6000`:返回 `5795` 个抽样三角面、`52155` 个顶点数值。 - `limit=16000`:返回 `8692` 个抽样三角面、`78228` 个顶点数值。 - `limit=36000`:返回 `17384` 个抽样三角面、`156456` 个顶点数值。 - DICOM 连续切片 API 验证:`slice=120~124` 均返回 `512x512`、`total=300`,文件名按 `121.dcm` 到 `125.dcm` 连续变化。 - 无头 Chrome 前端验证: - 3D 模型页存在“模型显示、预览、标准、精细、白色实体、整体位姿、旋转 X、平移 Z、缩放”等控件。 - WebGL 不可用场景仍生成二维预览 canvas,尺寸 `1172x567`。 - 逆向工作区正文不再重复页面标题:`逆向工作区` 只出现 1 次。 - `当前项目:头部 CT 模型逆向体素化演示` 只出现 1 次,并保留 `DICOM 300`、`STL 9`。 - 已重新部署到 `http://192.168.3.11:4000/`,tmux 会话:`revoxelseg-dicom`。