5.0 KiB
5.0 KiB
工程整体分析
更新时间:2026-05-19-22-59-07
项目定位
本项目是“基于模型逆向体素化及 DICOM 分割标注系统”的前后端一体化演示工程。核心目标是读取 Head_CT_DICOM/ 中的 DICOM 序列和 Head_CT_ReConstruct/ 中的 STL 重建模型,在浏览器中完成 DICOM 切片预览、STL 模型预览、影像与模型三维融合观察、构件样式配置,并提供 NIfTI Mask 演示导出能力。
当前系统仍以演示闭环为主,真实医学级 STL 到 DICOM 空间体素化算法尚未接入。后续接入真实算法时,应保留现有 API 和前端工作流,并替换后端 Mask 生成逻辑或接入独立算法服务。
当前目录结构
README.md:项目目标、构建运行和部署入口说明。WebSite/:前后端一体服务目录,包含 Vite React 前端与 Express 后端。WebSite/server.ts:Express API、Vite 中间件、DICOM/STL 解析预览、NIfTI 演示导出、运行态状态存储。WebSite/src/:React 页面、组件、类型和 API 封装。WebSite/src/components/Login.tsx:登录页,默认账号admin、密码123456。WebSite/src/components/Sidebar.tsx:主导航,包含总体概况、项目库、逆向工作区、系统管理工作区。WebSite/src/components/Overview.tsx:项目、DICOM、STL、Mask 导出统计概览。WebSite/src/components/ProjectLibrary.tsx:项目库、DICOM 切片预览、STL 预览、构件层级样式、Mask 下载入口。WebSite/src/components/ReverseWorkspace.tsx:逆向工作区,提供 DICOM/STL 三维融合、模型位姿、切片范围和 STL 切面展示。WebSite/src/components/UserManagement.tsx:系统管理与演示环境重置。Head_CT_DICOM/:默认 DICOM 序列目录,不作为普通文档备份重点。Head_CT_ReConstruct/:默认 STL 重建模型目录,不作为普通文档备份重点。工程分析/:工程整体分析、代码编纂工作流、需求分析、实现方案、测试方案和经验记录。
技术栈
- Node.js 18+ 与 npm。
- React 19、TypeScript、Vite 6。
- Express 4 与 Vite 中间件,开发和 API 统一由
npm run serve启动。 - Tailwind CSS 4。
- Three.js、React Three Fiber、Drei,用于 STL 和融合视图。
- Motion/Framer Motion、Recharts、Lucide React。
- Node 内置
fs/path/zlib负责状态文件、DICOM/STL 文件读取、tar.gz 与 NIfTI gzip 演示导出。
后端能力
WebSite/server.ts 当前提供:
/api/health健康检查。/api/session、/api/login、/api/logout:共享登录状态。/api/users:用户列表。/api/projects及项目增删改查。/api/projects/:projectId/module-styles:构件显示、颜色、透明度、Mask ID 的项目级持久化。/api/projects/:projectId/dicom-preview:轴向、矢状面、冠状面 DICOM 预览。/api/projects/:projectId/dicom-fusion-volume:三维融合所需的 DICOM 体纹理抽样。/api/projects/:projectId/dicom-archive:默认 DICOM 序列 tar.gz 下载。/api/projects/:projectId/dicom-info:DICOM 关键元数据、spacing 与物理尺寸。/api/projects/:projectId/models/:fileName与/preview:STL 文件与抽样三角面预览。/api/overview:概况统计。/api/demo/reset:恢复默认演示环境。/api/projects/:projectId/export-mask:生成.nii或.nii.gz演示分割 Mask。
运行态与数据
WebSite/data/state.json:共享登录、项目、用户和构件样式状态。WebSite/exports/:Mask 导出文件。WebSite/dist/:生产构建产物。- 默认项目 ID 为
head-ct-demo,由后端扫描Head_CT_DICOM/和Head_CT_ReConstruct/生成。 - DICOM/STL 数据和运行态输出通常不应混入文档备份提交。
已知脚本
在 WebSite/ 下执行:
npm ci:安装依赖。npm run lint:执行tsc --noEmit类型检查。npm run build:Vite 生产构建。npm run dev:仅启动 Vite 开发服务器,默认端口 3000。npm run serve -- --host 0.0.0.0 --port 4000:启动 Express + Vite 一体服务,是当前优先部署方式。
部署约定
- 当前 README 指向访问地址
http://192.168.3.11:4000/。 - 历史经验记录显示本项目长期使用
tmux会话revoxelseg-dicom托管服务,避免普通后台进程被回收。 - 重新部署前先检查端口和已有
tmux会话;部署后用/api/health和页面 HTTP 响应验证。
修改风险重点
- DICOM 与 STL 的空间基准不能随显示范围变化而变化,显示范围和物理坐标基准要分开处理。
- 没有真实体素化或真实语义分割结果时,不应伪造 Mask 图像。
- 构件样式是跨页面、跨浏览器共享状态,新增字段必须检查初始化、服务端归一化、前端更新和 fallback。
- UI 截图或页面文字相关需求应先用可见文案全局定位真实源码。
- 文档备份提交必须避免把无关的运行态产物、大型医学数据或既有未确认删除混入 commit。