3.3 KiB
3.3 KiB
实现方案
时间戳:2026-05-04-03-50-07
修改目标
修复概况统计、图表警告和模块高亮问题;完善项目库真实 DICOM/STL/分割结果展示;增加项目创建和重命名能力;补齐 README 构建方案并重新部署。
涉及路径
WebSite/server.tsWebSite/src/lib/api.tsWebSite/src/types.tsWebSite/src/components/Overview.tsxWebSite/src/components/ProjectLibrary.tsxWebSite/README.mdREADME.md工程分析/测试方案-2026-05-04-03-50-07.md工程分析/经验记录.md
技术路线
- 后端项目状态增强。
- 保留默认项目,同时允许新增用户创建项目。
- 新增
POST /api/projects创建项目。 - 新增
PATCH /api/projects/:projectId修改项目名称。
- 后端 DICOM 预览。
- 新增
GET /api/projects/:projectId/dicom-preview?slice=0。 - 读取当前 DICOM 文件,解析 Rows、Columns、Pixel Data、Window Center/Width、Rescale Slope/Intercept。
- 返回
width、height、pixelsbase64 灰度数据和 slice 元数据。
- 新增
- 后端 STL 文件服务。
- 新增
GET /api/projects/:projectId/models/:fileName。 - 只允许读取项目对应 STL 列表中的文件,避免任意路径读取。
- 新增
- 前端项目库。
- DICOM 视图使用 canvas 绘制后端返回灰度像素。
- 3D 模型视图使用 Three.js
STLLoader加载真实 STL。 - 新增
分割结果tab,展示 mask 预览、标签图例和 NII/NII.GZ 下载。 - 项目列表顶部增加创建按钮和名称输入。
- 项目卡右侧增加编辑图标,可重命名。
- 移除首个 STL 模块默认蓝色高亮,所有模块同等样式。
- 概况页。
- 已处理项目改为“已导出 Mask 项目”,避免项目总数 1 时已处理 1 的误导。
- 趋势数据改为平稳小范围变化。
- Recharts 容器增加
min-w-0、固定高度和加载态,避免宽高 -1 警告。
- README。
- 补充 Node 构建运行方案。
- 说明当前无需 Python/conda;真实体素化阶段再引入 Python 环境建议。
- 验证与部署。
npm run lintnpm run build- API smoke test
- 重新部署
tmux会话到4000。
数据流
DICOM 预览:
前端切片滑块 -> /api/projects/:id/dicom-preview?slice=n -> 后端解析 DICOM 像素 -> 前端 canvas 绘制。
STL 预览:
前端选择 STL 模块 -> /api/projects/:id/models/:fileName -> STLLoader 加载几何体 -> Three.js 渲染。
分割结果:
前端 分割结果 tab -> 展示 mask 预览 -> 调用已有 /api/projects/:id/export-mask 导出 nii 或 nii.gz。
项目管理:
创建/重命名 -> 后端写入 state.json -> 项目列表刷新。
兼容性与回滚方案
- DICOM/STL 原始文件仍不提交 Git。
- 若 DICOM 解析失败,前端显示错误态,不影响其他页面。
- 若 STL 加载失败,前端显示模型加载失败提示,不影响 DICOM 和分割结果。
- 回滚时恢复
server.ts和项目库组件即可回到上一版前后端演示状态。
预计文件变更
- 修改后端 API。
- 修改项目库和概况页。
- 修改 API 类型和封装。
- 修改 README。
- 更新工程分析文档和经验记录。
人工审核状态
本次用户明确要求无需人工二次确认。
状态:自动确认,继续执行。