2026-05-08-03-35-22 展示STL切割实体切面
This commit is contained in:
50
工程分析/实现方案-2026-05-08-03-35-22.md
Normal file
50
工程分析/实现方案-2026-05-08-03-35-22.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# 实现方案:右侧实体切面预览
|
||||
|
||||
时间戳:2026-05-08-03-35-22
|
||||
|
||||
## 修改目标
|
||||
|
||||
在 `Mask 展示` 区域新增真实 STL 切割实体预览组件,替代旧的二维示意 Mask,并删除底部导出进度栏。
|
||||
|
||||
## 涉及路径
|
||||
|
||||
- `WebSite/src/components/ReverseWorkspace.tsx`
|
||||
- `工程分析/经验记录.md`
|
||||
|
||||
## 技术路线
|
||||
|
||||
1. 新增 `CutSectionPreview` 组件。
|
||||
2. 组件使用 Three.js 渲染 STL preview 顶点数据。
|
||||
3. 使用 DICOM `physicalSize.depth` 和 `total` 将 `displayStart/displayEnd` 映射到 Z 方向两张 clipping plane。
|
||||
4. 当“模型切分”启用时,对 STL 材质应用两张 clipping plane,保留中间实体区域;未启用时展示完整实体模型。
|
||||
5. 复用构件颜色、显示隐藏、模型位姿和高质量实体请求上限。
|
||||
6. 删除旧 `mappings` 假 Mask 形状、`MaskMapping` 类型引用、`exportMessage` 和底部导出进度栏。
|
||||
|
||||
## 数据流或交互流程
|
||||
|
||||
- DICOM 范围条更新 `displayStart/displayEnd`。
|
||||
- `FusionThreeView` 和 `CutSectionPreview` 都接收相同范围。
|
||||
- `CutSectionPreview` 请求 STL preview,居中、缩放并应用当前模型位姿。
|
||||
- 启用模型切分后,右侧实体预览显示裁切后的 STL 中间段。
|
||||
|
||||
## 兼容性与回滚方案
|
||||
|
||||
- 若实体预览性能不满足要求,可降低 `detailLimit` 或回滚到旧 Mask 展示区域。
|
||||
- 本次不改 API 和数据文件,回滚只涉及前端组件。
|
||||
|
||||
## 风险控制
|
||||
|
||||
- 使用 `npm run lint` 验证类型。
|
||||
- 使用 `npm run build` 验证构建。
|
||||
- 使用 `rg` 确认旧 `导出进度`、`mappings`、假 Mask 结构已移除。
|
||||
- 重启服务并验证 4000 端口。
|
||||
|
||||
## 预计文件变更
|
||||
|
||||
- 修改 `ReverseWorkspace.tsx`。
|
||||
- 新增本次需求、实现、测试文档。
|
||||
- 追加经验记录。
|
||||
|
||||
## 人工审核状态
|
||||
|
||||
用户已在项目工作流历史中确认后续直接执行,本次不等待二次人工审核。
|
||||
42
工程分析/测试方案-2026-05-08-03-35-22.md
Normal file
42
工程分析/测试方案-2026-05-08-03-35-22.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# 测试方案:右侧 STL 实体切面预览
|
||||
|
||||
时间戳:2026-05-08-03-35-22
|
||||
|
||||
## 静态检查
|
||||
|
||||
- 执行 `npm run lint`。
|
||||
- 执行 `npm run build`。
|
||||
|
||||
## 关键业务场景验证
|
||||
|
||||
- 逆向工作区右侧 `Mask 展示` 不再出现旧的二维彩色假 Mask。
|
||||
- 右侧区域显示 STL 实体模型。
|
||||
- 启用模型切分并调整 DICOM 范围后,右侧实体预览按同一范围裁切。
|
||||
- 构件隐藏、颜色、模型位姿调整后,右侧实体预览同步更新。
|
||||
- 底部“导出进度”栏不再显示。
|
||||
|
||||
## 回归风险
|
||||
|
||||
- 右侧新增 Three.js 渲染可能增加 GPU/CPU 占用。
|
||||
- 当前无法自动截图确认 WebGL 视觉结果,需要人工刷新页面观察。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- 源码不再包含 `导出进度`、旧 `mappings.map` 假 Mask 结构。
|
||||
- `npm run lint` 和 `npm run build` 均通过。
|
||||
- 重新部署后 `http://192.168.3.11:4000/` 返回 200。
|
||||
|
||||
## 无法测试的风险
|
||||
|
||||
- 无法在当前命令行直接确认 STL 切面视觉是否符合用户预期,需要用户浏览器中观察。
|
||||
|
||||
## 人工审核状态
|
||||
|
||||
用户已在项目工作流历史中确认后续直接执行,本次不等待二次人工审核。
|
||||
|
||||
## 执行结果
|
||||
|
||||
- `npm run lint`:通过。
|
||||
- `npm run build`:通过;仅保留 Vite chunk 大小提示。
|
||||
- `rg` 验证:`ReverseWorkspace.tsx` 不再包含 `mappings`、`exportMessage`、`导出进度`、`Maximize2`、`Inferred Mask`、`Verified` 等旧示意 Mask 和导出进度栏结构。
|
||||
- `rg` 验证:`ReverseWorkspace.tsx` 已新增 `CutSectionPreview` 并挂载到右侧 `Mask 展示` 区域。
|
||||
18
工程分析/经验记录.md
18
工程分析/经验记录.md
@@ -775,3 +775,21 @@ C. 解决问题方案
|
||||
D. 后续如何避免问题
|
||||
|
||||
新增导航入口前先判断是否是独立业务对象和独立工作流,避免用多个入口指向同一组件状态;辅助视觉元素应在用户确认有价值后保留,医学三维视图中默认少放装饰或调试平面,避免遮挡真实数据。
|
||||
|
||||
## 2026-05-08-03-35-22 Mask 展示改为真实 STL 切面
|
||||
|
||||
A. 具体问题
|
||||
|
||||
逆向工作区右侧 `Mask 展示` 仍然是二维彩色示意图,并且底部存在“导出进度”栏;用户希望看到切割后的 STL 实体切面。
|
||||
|
||||
B. 产生问题原因
|
||||
|
||||
旧 `Mask 展示` 是早期演示 UI,没有接入真实 STL 模型,也没有复用 DICOM 范围切割逻辑;导出进度栏展示的是导出状态文本,不是用户当前关注的切面实体结果。
|
||||
|
||||
C. 解决问题方案
|
||||
|
||||
新增 `CutSectionPreview` Three.js 组件,复用当前项目 STL preview、构件颜色/隐藏状态、模型位姿和 DICOM 切片范围;启用模型切分时使用两张 clipping plane 保留中间区域,并以实体材质展示裁切后的 STL。删除旧二维 Mask 示意结构和底部“导出进度”栏。
|
||||
|
||||
D. 后续如何避免问题
|
||||
|
||||
右侧结果展示区域应优先呈现真实数据或真实处理结果,避免使用占位式示意图长期冒充结果;如果尚未生成真实语义分割 Mask,应明确展示当前可验证的 STL 切面实体,而不是伪造 Mask 形状。
|
||||
|
||||
41
工程分析/需求分析-2026-05-08-03-35-22.md
Normal file
41
工程分析/需求分析-2026-05-08-03-35-22.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# 需求分析:Mask 展示改为切割 STL 实体预览
|
||||
|
||||
时间戳:2026-05-08-03-35-22
|
||||
|
||||
## 原始需求
|
||||
|
||||
1. 在逆向工作区右侧“Mask 展示”中展示切割后的 STL 切面,要求为实体展示。
|
||||
2. 删除下方“导出进度”栏。
|
||||
|
||||
## 业务目标
|
||||
|
||||
- 将右侧旧的示意 Mask 图替换为真实 STL 模型切割结果预览。
|
||||
- 右侧预览使用当前 DICOM 切片范围与模型切分状态,展示裁切后的 STL 实体。
|
||||
- 删除底部导出进度信息栏,减少无意义 UI。
|
||||
|
||||
## 输入与输出
|
||||
|
||||
- 输入:当前项目 STL 文件、构件显示状态、构件颜色、模型位姿、DICOM 切片范围、模型切分开关。
|
||||
- 输出:右侧 `Mask 展示` 区域中的 Three.js 实体模型切面预览。
|
||||
|
||||
## 影响范围
|
||||
|
||||
- `WebSite/src/components/ReverseWorkspace.tsx`
|
||||
- `工程分析/经验记录.md`
|
||||
|
||||
## 约束
|
||||
|
||||
- 不生成伪造 Mask 图片。
|
||||
- 不改变后端 API 和导出接口。
|
||||
- 保留顶部导出按钮;只删除下方“导出进度”栏。
|
||||
- STL 实体切面需要沿用当前 DICOM 范围裁切逻辑。
|
||||
|
||||
## 风险点
|
||||
|
||||
- 新增一个 Three.js 视图会增加前端渲染负载。
|
||||
- 切面预览与左侧融合视图需要共享同一套 DICOM range 到 clipping plane 的映射,避免视觉不一致。
|
||||
- 模型位姿、构件隐藏和颜色需要在两个视图中保持同步。
|
||||
|
||||
## 待确认事项
|
||||
|
||||
- 用户已确认后续直接执行,本次不等待二次人工审核。
|
||||
Reference in New Issue
Block a user