Files
REVOXELSEG_DICOM/工程分析/测试方案-2026-05-04-03-21-40.md

4.4 KiB
Raw Permalink Blame History

测试方案

时间戳2026-05-04-03-21-40

测试目标

验证系统已经从纯前端静态演示升级为前后端协调系统并确认登录同步、默认项目、恢复出厂设置、NIfTI 导出和部署均可用。

静态检查

  • 检查 server.ts 是否提供 API 和前端页面服务。
  • 检查 src/lib/api.ts 是否统一封装 API 请求。
  • 检查项目列表、系统管理、逆向工作区是否不再依赖硬编码假数据。
  • 检查 .gitignore 是否排除 WebSite/data/WebSite/exports/、DICOM、STL、依赖和构建产物。

构建与类型检查

WebSite/ 下执行:

npm run lint
npm run build

预期结果:

  • TypeScript 类型检查通过。
  • Vite 构建通过。

API 验证

启动后端服务后验证:

curl -s http://127.0.0.1:4000/api/health
curl -s http://127.0.0.1:4000/api/session
curl -s http://127.0.0.1:4000/api/projects
curl -s http://127.0.0.1:4000/api/users
curl -s -X POST http://127.0.0.1:4000/api/demo/reset

预期结果:

  • health 返回 ok
  • projects 包含默认项目 head-ct-demo
  • 默认项目 dicomCount300
  • 默认项目 STL 模块包含 Head_CT_ReConstruct 下的 .stl 文件。
  • reset 后默认项目仍存在。

登录同步验证

  • 浏览器 A 登录 admin / 123456
  • 浏览器 B 刷新或等待轮询后读取到已登录状态。
  • 浏览器 A 或 B 登出后,另一个浏览器轮询后同步到未登录状态。

命令级验证:

curl -s -X POST http://127.0.0.1:4000/api/login -H 'Content-Type: application/json' -d '{"account":"admin","password":"123456"}'
curl -s http://127.0.0.1:4000/api/session
curl -s -X POST http://127.0.0.1:4000/api/logout
curl -s http://127.0.0.1:4000/api/session

NIfTI 导出验证

执行:

curl -L -o /tmp/revoxelseg-mask.nii.gz -X POST http://127.0.0.1:4000/api/projects/head-ct-demo/export-mask
file /tmp/revoxelseg-mask.nii.gz
gzip -t /tmp/revoxelseg-mask.nii.gz

预期结果:

  • 下载文件存在。
  • 文件为 gzip 压缩数据。
  • gzip -t 校验通过。
  • 响应文件名后缀为 .nii.gz

页面验证

  • 打开 http://192.168.3.11:4000/
  • 登录页可正常登录。
  • 总体概况显示后端统计数据。
  • 项目库默认显示头部 CT 演示项目。
  • 项目详情展示 Head_CT_DICOMHead_CT_ReConstruct 相关信息。
  • 系统管理页点击“恢复演示环境出厂设置”后,项目仍恢复为默认 DICOM/STL。
  • 逆向工作区可导出 nii.gz mask。

回归风险

  • 引入后端后部署方式从纯 Vite 改为 Express + Vite 中间件,需要确认 4000 服务由 server.ts 托管。
  • 后端共享登录状态是演示同步方案,不等同生产级多用户 session。
  • NIfTI 文件当前为演示 mask非医学级真实 STL 体素化结果。

人工审核状态

本次用户明确要求无需人工二次确认。

状态:自动确认,继续执行。

执行结果

  • npm run lint 执行成功。
  • npm run build 执行成功。
  • Vite 仍有大 chunk 警告,当前不影响本次功能。
  • 已新增 Express 后端 server.ts,并通过 npm run serve -- --host 0.0.0.0 --port 4000 托管前后端。
  • GET /api/health 返回 ok: true
  • GET /api/projects 返回默认项目 head-ct-demo
  • 默认项目载入结果:
    • dicomCount: 300
    • modelCount: 9
    • dicomPath: Head_CT_DICOM
    • modelPath: Head_CT_ReConstruct
  • POST /api/demo/reset 执行成功,重置后默认项目仍载入 Head_CT_DICOMHead_CT_ReConstruct
  • POST /api/login 使用 admin / 123456 登录成功。
  • GET /api/session 登录后返回 authenticated: true
  • POST /api/logout 登出成功。
  • GET /api/session 登出后返回 authenticated: false
  • POST /api/projects/head-ct-demo/export-mask?format=nii.gz 执行成功。
  • /tmp/revoxelseg-mask.nii.gz 通过 gzip -t 校验。
  • 解压后 NIfTI magic 为 n+1\0
  • POST /api/projects/head-ct-demo/export-mask?format=nii 执行成功,生成未压缩 .nii
  • http://192.168.3.11:4000/ 返回 HTTP/1.1 200 OK
  • 当前部署由 tmux 会话 revoxelseg-dicom 托管。

剩余说明

  • 当前导出的 NIfTI mask 是可下载、格式有效的演示分割体数据。
  • 真实医学级 STL 反向体素化仍需后续加入 DICOM 空间解析、STL 坐标配准、网格体素填充和标签体系。