2026-05-24-16-28-58 修正可见构件导出与高精度映射

This commit is contained in:
2026-05-24 16:42:37 +08:00
parent 3bedf204c8
commit d9572e6966
9 changed files with 246 additions and 22 deletions

View File

@@ -1711,3 +1711,21 @@ C. 解决问题方案
D. 后续如何避免问题
凡是新增项目运行态数据都要同时考虑后端状态归一化、前端类型、API、列表排序、Docker 持久化挂载和 `.gitignore`。锁定类快照属于运行态追溯数据,不应混入源码 commit。DICOM 切片控件要明确区分“数组索引”“用户显示层号”和“滑块位置”,不要用同一个变量同时表达三种语义。
## 2026-05-24-16-28-58 导出可见类别必须以当前项目样式为准
A. 具体问题
用户只显示 `liver_artery``liver_right` 后,选择“可见类别 + 构件分别导出”,导出包中仍出现 `007-liver_segment_S1-label.nii.gz``008-liver_segment_S2-label.nii.gz``009-liver_segment_S3-label.nii.gz`。同时,逆向分割映射中 `liver_right` 大区域出现条纹和异常形状,`liver_artery` 仍显得像多条线。
B. 产生问题原因
项目当前 `moduleStyles``liver_artery``liver_right` 是可见,`S1/S2/S3` 是隐藏;但最新一次保存的 `segmentationResults` 中可见状态正好相反。旧导出逻辑使用历史保存结果的 `moduleStyles` 覆盖项目当前样式,导致“可见类别”按旧状态导出。二维 overlay 另一个问题是 STL 预览最多抽样 20 万三角面,而 `liver_right` 有约 29.7 万面、`liver_artery` 有约 22.1 万面,抽样会缺失一部分切面轮廓,表现为条纹或形状不完整。血管本身也属于细长管状结构,真实切面不会像肝叶一样形成单一大块。
C. 解决问题方案
导出时合并样式优先级改为:历史保存结果作为 fallback项目当前 `moduleStyles` 覆盖历史结果,前端导出请求中传入的当前 `moduleStyles` 再覆盖后端状态。这样即使用户刚点击眼睛后立刻导出,也按当前可见状态过滤。逆向分割映射只加载当前可见构件,并把可见构件预览上限提高到 50 万三角面;`liver_right``liver_artery` 在项目 `123` 中均可全量取面。Docker 文档同步说明“可见类别 + 构件分别导出”严格只导出当前眼睛打开的构件。
D. 后续如何避免问题
凡是导出“当前可见”这类 UI 状态,不能只依赖历史保存结果;后端应以项目当前状态为准,前端最好显式携带本次导出的关键状态,防止异步保存延迟。二维 overlay 如果用于判断实体形状,必须确认 STL 预览不是抽样缺面;对超过预览上限的大模型,应按可见构件高精度加载或在界面提示。细血管、胆管等管状结构应解释为“天然多小截面/窄带”,不要把所有结构都承诺成单一大实体块。