109 lines
3.5 KiB
Markdown
109 lines
3.5 KiB
Markdown
# 测试方案
|
||
|
||
时间戳:2026-05-04-04-12-34
|
||
|
||
## 测试目标
|
||
|
||
验证项目库导入按钮语义、DICOM 三方向切片、STL 颜色透明度控制、项目创建弹窗、编辑自动保存和删除确认能力。
|
||
|
||
## 静态检查
|
||
|
||
- 检查 `ProjectLibrary.tsx`:
|
||
- DICOM/3D 顶部第二按钮为“导入”。
|
||
- 分割结果页无顶部第二按钮。
|
||
- 创建项目通过弹窗触发。
|
||
- 删除项目通过确认弹窗触发。
|
||
- 编辑项目名称无保存按钮,失焦自动保存。
|
||
- STL 模块包含颜色输入和透明度滑块。
|
||
- 删除无意义状态点。
|
||
- 检查 `server.ts`:
|
||
- DICOM preview 支持 `plane`。
|
||
- 项目支持 `DELETE`。
|
||
|
||
## 构建与类型检查
|
||
|
||
```bash
|
||
cd WebSite
|
||
npm run lint
|
||
npm run build
|
||
```
|
||
|
||
预期:
|
||
|
||
- TypeScript 检查通过。
|
||
- Vite 构建通过。
|
||
|
||
## API 验证
|
||
|
||
```bash
|
||
curl -s 'http://127.0.0.1:4000/api/projects/head-ct-demo/dicom-preview?plane=axial&slice=0'
|
||
curl -s 'http://127.0.0.1:4000/api/projects/head-ct-demo/dicom-preview?plane=sagittal&slice=256'
|
||
curl -s 'http://127.0.0.1:4000/api/projects/head-ct-demo/dicom-preview?plane=coronal&slice=256'
|
||
curl -s -X POST http://127.0.0.1:4000/api/projects -H 'Content-Type: application/json' -d '{"name":"删除测试项目"}'
|
||
curl -s -X DELETE http://127.0.0.1:4000/api/projects/<id>'
|
||
```
|
||
|
||
预期:
|
||
|
||
- 三方向 DICOM preview 均返回 `width`、`height`、`pixels`、`plane`。
|
||
- 创建项目成功。
|
||
- 删除项目成功。
|
||
|
||
## 页面验证
|
||
|
||
- DICOM 页右侧控制条圆点与轨道对齐。
|
||
- DICOM 页显示 `第 n / 总数`。
|
||
- 可切换横断面、矢状面、冠状面。
|
||
- 3D 页整体眼睛可控制所有 STL 显示/隐藏。
|
||
- 单个 STL 的颜色和透明度控制影响模型渲染。
|
||
- 项目创建由弹窗完成。
|
||
- 项目编辑失焦自动保存。
|
||
- 项目删除需要二次确认。
|
||
|
||
## 回归风险
|
||
|
||
- 矢状面/冠状面每次请求会读取多张 DICOM,可能有延迟。
|
||
- 多 STL 同时显示时首屏加载可能较慢。
|
||
|
||
## 人工审核状态
|
||
|
||
本次用户明确要求无需人工二次确认。
|
||
|
||
状态:自动确认,继续执行。
|
||
|
||
## 执行结果
|
||
|
||
- `npm run lint` 执行成功。
|
||
- `npm run build` 执行成功。
|
||
- Vite 仍有大 chunk 警告,当前不影响本次功能。
|
||
- `GET /api/projects/head-ct-demo/dicom-preview?plane=axial&slice=0` 返回:
|
||
- `plane: axial`
|
||
- `width: 512`
|
||
- `height: 512`
|
||
- `total: 300`
|
||
- `GET /api/projects/head-ct-demo/dicom-preview?plane=sagittal&slice=0` 返回:
|
||
- `plane: sagittal`
|
||
- `width: 300`
|
||
- `height: 512`
|
||
- `total: 512`
|
||
- `GET /api/projects/head-ct-demo/dicom-preview?plane=coronal&slice=0` 返回:
|
||
- `plane: coronal`
|
||
- `width: 300`
|
||
- `height: 512`
|
||
- `total: 512`
|
||
- `POST /api/projects` 创建删除测试项目成功。
|
||
- `DELETE /api/projects/:id` 删除测试项目成功。
|
||
- `POST /api/demo/reset` 执行成功,演示环境已恢复默认项目。
|
||
- headless Chrome 打开页面后未捕获 Recharts 宽高警告、`Uncaught` 或页面错误。
|
||
- `http://192.168.3.11:4000/` 返回 `HTTP/1.1 200 OK`。
|
||
- 当前服务由 `tmux` 会话 `revoxelseg-dicom` 托管。
|
||
|
||
## 页面侧验证点
|
||
|
||
- 顶部第二按钮在 `DICOM 影像` 和 `3D 模型` 视图显示为“导入”。
|
||
- `分割结果` 视图顶部不显示额外导出按钮,只保留下方 NII/NII.GZ 下载按钮。
|
||
- 项目创建入口改为点击 `+` 后弹窗。
|
||
- 项目删除通过确认弹窗执行。
|
||
- 项目编辑输入框失焦或回车自动保存。
|
||
- 3D 模型侧栏每个 STL 提供颜色和透明度控制,整体眼睛控制所有 STL 可见性。
|