72 lines
3.2 KiB
Markdown
72 lines
3.2 KiB
Markdown
# 实现方案-2026-06-23-13-38-48
|
|
|
|
## 实现方案文档路径
|
|
|
|
`工程分析/实现方案-2026-06-23-13-38-48.md`
|
|
|
|
## 修改目标
|
|
|
|
新增模型位姿的单轴拉伸能力,使逆向工作区可按某一坐标轴非等比例拉伸模型,并保证缩放、保存、导出、项目库预览和自动微调匹配都使用该拉伸后的统一模型位姿。
|
|
|
|
## 涉及路径
|
|
|
|
- `WebSite/src/types.ts`
|
|
- `WebSite/src/components/ReverseWorkspace.tsx`
|
|
- `WebSite/src/components/AutoMatchWorkspace.tsx`
|
|
- `WebSite/src/components/ProjectLibrary.tsx`
|
|
- `WebSite/server.ts`
|
|
- `工程分析/需求分析-2026-06-23-13-38-48.md`
|
|
- `工程分析/实现方案-2026-06-23-13-38-48.md`
|
|
- `工程分析/测试方案-2026-06-23-13-38-48.md`
|
|
- `工程分析/经验记录.md`
|
|
|
|
## 技术路线
|
|
|
|
- 扩展 `ModelPose` / `ModelPoseValue`,新增 `scaleX`、`scaleY`、`scaleZ`,默认值为 `1`。
|
|
- 统一归一化和 clamp 范围,让旧数据自动补齐新字段。
|
|
- 前端三维视图和二维分割映射采用同一变换顺序:
|
|
- 原始模型中心化。
|
|
- 应用统一缩放、镜像和旋转。
|
|
- 在融合坐标系下应用 `scaleX/scaleY/scaleZ` 单轴拉伸。
|
|
- 应用平移。
|
|
- 后端 `transformPointForExportPose` 使用相同变换顺序,保证导出和自动匹配评分一致。
|
|
- 逆向工作区保留现有等比例自动拉伸,再新增单轴拉伸按钮;单轴拉伸时自动把对应平移置 0。
|
|
- 自动微调匹配工作区不额外优化 `scaleX/scaleY/scaleZ`,但请求、评分、对比视图和保存结果保留并应用这些字段。
|
|
|
|
## 执行步骤
|
|
|
|
1. 扩展前后端位姿类型、默认值、格式化、归一化和 reset 行为。
|
|
2. 修改 `ReverseWorkspace` 的模型变换、二维映射和工具栏按钮。
|
|
3. 修改 `ProjectLibrary` 结果预览中的模型变换,兼容新字段。
|
|
4. 修改 `server.ts` 的位姿归一化、管线参数解析、自动匹配评分和导出分割变换。
|
|
5. 运行 `npm run lint` 与 `npm run build`。
|
|
6. 重启 `tmux` 会话 `revoxelseg-dicom` 并验证本机/局域网访问。
|
|
7. 追加经验记录并提交本次文档与源码备份 commit。
|
|
|
|
## 兼容性与回滚方案
|
|
|
|
- 兼容性:旧位姿不含 `scaleX/scaleY/scaleZ` 时默认按 `1` 处理,与旧行为完全一致。
|
|
- 回滚:如新拉伸或导出异常,可回退本次 commit 并重新构建部署。
|
|
- 数据风险:本次不修改医学数据;运行态 `state.json` 只会在用户实际保存项目时记录新字段。
|
|
|
|
## 预计文件变更
|
|
|
|
- 修改:
|
|
- `WebSite/src/types.ts`
|
|
- `WebSite/src/components/ReverseWorkspace.tsx`
|
|
- `WebSite/src/components/AutoMatchWorkspace.tsx`
|
|
- `WebSite/src/components/ProjectLibrary.tsx`
|
|
- `WebSite/server.ts`
|
|
- `工程分析/经验记录.md`
|
|
- 新增:
|
|
- `工程分析/需求分析-2026-06-23-13-38-48.md`
|
|
- `工程分析/实现方案-2026-06-23-13-38-48.md`
|
|
- `工程分析/测试方案-2026-06-23-13-38-48.md`
|
|
|
|
## 提交与部署策略
|
|
|
|
- 只暂存本次源码和工程分析文档。
|
|
- 不提交 DICOM/STL 数据、运行态 `WebSite/data/`、导出文件或无关变更。
|
|
- commit message 使用:`2026-06-23-13-38-48 新增逆向工作区单轴拉伸`。
|
|
- 构建通过后使用 `tmux` 会话 `revoxelseg-dicom` 重新部署 `NODE_ENV=production npm run serve -- --host 0.0.0.0 --port 4000`。
|