80 lines
3.6 KiB
Markdown
80 lines
3.6 KiB
Markdown
# 实现方案 - 2026-05-07-18-42-53
|
||
|
||
## 修改目标
|
||
|
||
1. 移除逆向工作区可视化工具栏底部 Metadata 信息块。
|
||
2. 将 DICOM 融合切片范围控制改为融合视角下方单滑条,滑条值表示展示到第几张切片。
|
||
3. 将整体位姿控制区统一命名为“模型位姿”,并保留现有位姿保存、选择、重置和调节能力。
|
||
4. 将构件 ID 从纯组件状态提升为后端项目状态字段,使项目库 3D 模型与逆向工作区可视化工具栏联动。
|
||
|
||
## 涉及路径
|
||
|
||
- `WebSite/src/components/ReverseWorkspace.tsx`
|
||
- `WebSite/src/components/ProjectLibrary.tsx`
|
||
- `WebSite/src/server.ts`
|
||
- `WebSite/src/types.ts`
|
||
- `工程分析/经验记录.md`
|
||
|
||
## 技术路线
|
||
|
||
### 构件 ID 联动
|
||
|
||
- 在后端项目数据中增加 `moduleStyles` 字段,存储每个 STL 文件的:
|
||
- `visible`
|
||
- `color`
|
||
- `opacity`
|
||
- `partId`
|
||
- 项目库与逆向工作区读取项目时都使用同一个 `project.moduleStyles` 初始化。
|
||
- 任一页面修改 ID、颜色、透明度、显示状态时,通过 `PATCH /api/projects/:projectId/module-styles` 写回后端。
|
||
- 前端本地状态更新后同步调用 API,保证跨页面和跨浏览器一致。
|
||
|
||
### 融合切片范围
|
||
|
||
- 保留后端接口需要的 `start/end` 参数。
|
||
- 前端只展示一个滑条 `sliceEnd`,内部固定 `start = 0`,`end = sliceEnd`。
|
||
- 滑条放在影像与模型融合视角下方,便于操作与结果对应。
|
||
|
||
### 位姿模块整合
|
||
|
||
- 将工具栏内的“整体位姿”标题改为“模型位姿”。
|
||
- 保留模型显示、位姿保存/选择、旋转、平移、缩放与重置功能,但减少重复命名。
|
||
|
||
### UI 清理
|
||
|
||
- 删除可视化工具栏底部 Metadata 代码块。
|
||
|
||
## 数据流
|
||
|
||
1. 后端读取或重置项目时生成默认 `moduleStyles`,`partId` 默认从 1 到 N。
|
||
2. 项目库修改构件 ID 后调用 API 保存。
|
||
3. 逆向工作区加载项目时读取最新 `moduleStyles`。
|
||
4. 逆向工作区修改构件 ID 后同样调用 API 保存。
|
||
5. 融合视角滑条变化后触发 `dicom-fusion-volume?start=0&end=<sliceEnd>` 重新加载体数据。
|
||
|
||
## 兼容性与回滚方案
|
||
|
||
- 对旧 `state.json` 做兼容:项目没有 `moduleStyles` 时由后端按 STL 列表自动补齐。
|
||
- 若新增 API 出现问题,前端仍可回退为本地状态,但 ID 联动会退化。
|
||
- 所有修改集中在项目状态、项目库与逆向工作区,回滚本次 commit 即可恢复。
|
||
|
||
## 预计文件变更
|
||
|
||
- `server.ts`:补齐项目 moduleStyles、增加更新 API。
|
||
- `types.ts`:补充项目 moduleStyles 类型。
|
||
- `ProjectLibrary.tsx`:读取/保存共享 moduleStyles。
|
||
- `ReverseWorkspace.tsx`:读取/保存共享 moduleStyles,调整切片范围 UI,删除 Metadata,重命名位姿模块。
|
||
|
||
## 人工审核状态
|
||
|
||
用户已声明本次不需要二次人工确认,按默认执行确认规则直接执行。
|
||
|
||
## 执行记录
|
||
|
||
- 已新增共享构件样式数据 `moduleStyles`,包含 `visible/color/opacity/partId`。
|
||
- 已新增 `PATCH /api/projects/:projectId/module-styles`,用于项目库与逆向工作区同步构件 ID、颜色、透明度、显示隐藏状态。
|
||
- 已将项目库和逆向工作区的构件 ID 读写改为同一后端项目状态。
|
||
- 已删除逆向工作区可视化工具栏下方 `Metadata` 信息块。
|
||
- 已将融合视角下方 DICOM 切片范围改为单一进度条,内部固定从第 1 张开始显示。
|
||
- 已将可视化工具栏中的“整体位姿”改为“模型位姿”,并合并位姿保存、选择和各项旋转/平移/缩放控制。
|
||
- 已同步将项目库 3D 模型中的“整体位姿”标题改为“模型位姿”。
|