Files
REVOXELSEG_DICOM/工程分析/实现方案-2026-05-04-03-50-07.md

92 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实现方案
时间戳2026-05-04-03-50-07
## 修改目标
修复概况统计、图表警告和模块高亮问题;完善项目库真实 DICOM/STL/分割结果展示;增加项目创建和重命名能力;补齐 README 构建方案并重新部署。
## 涉及路径
- `WebSite/server.ts`
- `WebSite/src/lib/api.ts`
- `WebSite/src/types.ts`
- `WebSite/src/components/Overview.tsx`
- `WebSite/src/components/ProjectLibrary.tsx`
- `WebSite/README.md`
- `README.md`
- `工程分析/测试方案-2026-05-04-03-50-07.md`
- `工程分析/经验记录.md`
## 技术路线
1. 后端项目状态增强。
- 保留默认项目,同时允许新增用户创建项目。
- 新增 `POST /api/projects` 创建项目。
- 新增 `PATCH /api/projects/:projectId` 修改项目名称。
2. 后端 DICOM 预览。
- 新增 `GET /api/projects/:projectId/dicom-preview?slice=0`
- 读取当前 DICOM 文件,解析 Rows、Columns、Pixel Data、Window Center/Width、Rescale Slope/Intercept。
- 返回 `width``height``pixels` base64 灰度数据和 slice 元数据。
3. 后端 STL 文件服务。
- 新增 `GET /api/projects/:projectId/models/:fileName`
- 只允许读取项目对应 STL 列表中的文件,避免任意路径读取。
4. 前端项目库。
- DICOM 视图使用 canvas 绘制后端返回灰度像素。
- 3D 模型视图使用 Three.js `STLLoader` 加载真实 STL。
- 新增 `分割结果` tab展示 mask 预览、标签图例和 NII/NII.GZ 下载。
- 项目列表顶部增加创建按钮和名称输入。
- 项目卡右侧增加编辑图标,可重命名。
- 移除首个 STL 模块默认蓝色高亮,所有模块同等样式。
5. 概况页。
- 已处理项目改为“已导出 Mask 项目”,避免项目总数 1 时已处理 1 的误导。
- 趋势数据改为平稳小范围变化。
- Recharts 容器增加 `min-w-0`、固定高度和加载态,避免宽高 -1 警告。
6. README。
- 补充 Node 构建运行方案。
- 说明当前无需 Python/conda真实体素化阶段再引入 Python 环境建议。
7. 验证与部署。
- `npm run lint`
- `npm 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。
- 更新工程分析文档和经验记录。
## 人工审核状态
本次用户明确要求无需人工二次确认。
状态:自动确认,继续执行。