diameter-implementation.md 4.0 KB

管径双侧补全:实施与真实验证

用户已确认的规则:后端透传原始毫米管径;前端仅在同一行业、端点坐标完全重合且无分叉的连续链上,按缺失段路径中点距离进行双侧线性插值。两侧同值直接沿用。分叉、单侧、无锚点及一个锚点围成的环不补。不吸附附近端点,不生成新的安装拓扑,不回写原始管径。

纠正此前事实表述

此前 geometry 响应没有 diameter 键,不能因此断言数据库所有管径为空。源码 PipeNetworkBase 和 GasPipePoint 均已有 BigDecimal diameter(毫米);问题是驾驶舱几何读模型未透传。实际有同业完全重合的端点(本次只读计数:1498 个二度端点、456 个度数>2端点),旧说明“彼此不共享端点”也过强。

后端

提交 a96091ce(E:/pipe-ner-server,当前分支 master):仅四处几何读模型/测试文件,未包含另一个任务的 IDE 编码改动。Properties.diameter 显式可空,原始 BigDecimal 不换算、不过滤、不补值。管段与燃气点各透传自身 diameter,窨井返回 null;无数据写、无鉴权或准入变更。

验证:先新增测试捕获缺字段红灯(21项中1失败),实施后针对性21/21;驾驶舱全量487/487通过。扩充0、燃气点和窨井null以及MVC毫米数值断言后,针对性21/21仍通过。提交未推送;本机运行实例已实际返回新字段(不代表其他环境已部署)。

前端

  • domain/pipeDiameter.js 构建仅用于示意的同业精确端点邻接,双侧查找沿无分叉链停止。推算结果保留两侧code/diameterMm,原数据对象不被修改。
  • planPipeModels 按源数据或推算管径建模,传出 reported/interpolated 来源及按业务段计的 diameterSummary。
  • 现有状态面板显示源数据/双侧推算/未补三类计数和“非实测”说明。构件示意尺寸与虚拟埋深2m政策不变。
  • toPipeNetwork 只接受数字或非空数字字符串,拒绝布尔/数组/对象;缺键/null保持null。0/负值可保留为原始数值,但不当成锚点。
  • 对抗式复核修复:闭合/退化支路仍计入端点度数,防止忽略分叉;异常JSON不得形成伪已知管径。

真实数据结果

见 diameter-live-result.json(2026-10-13 07:27:52Z)。

项目 结果
真实LineString 5268
响应具有diameter键 5268
正管径源数据 3332
双侧推算 18
仍无可靠双侧锚点 1918
合法构件 1(窨井)
不可上图几何 3

只读探针确认管径/坐标原对象未改,全部推算值均位于两侧锚点值之间。

真实驾驶舱使用该契约,既有状态面板读到4480管体实例/19批、1919折线/符号对象(1918缺径管段+1窨井),源数据3332/双侧推算18/未补1918与探针一致。见 diameter-cockpit-status.png。这是744×1133 CSS模拟视口的就绪与说明证据,截图的地球视角也不能当作地下近景视觉或4K FPS验收。

验证和剩余项

  • 新回归通过:双侧等长/不等长、同值、输入与方向独立反转、多顶点路径长度、同一锚点环/双锚点环、闭合支路、单侧/无锚点、分叉、跨行业、UNKNOWN行业、近邻不吸附、0/负径、JSON布尔/数组拒绝、null/缺键/数字字符串适配、来源与原值不变。
  • 原t32计划/adapter/首次import清理及t24领域/链路、t33差量回归通过。
  • 前端全部边界修复后已授权构建通过(Vite55.65s、退出码0;仓库既有分包/外部脚本/Browserslist警告仍在)。
  • 4K平均FPS≥30、完整地下画面、浏览器模板404及四类构件验收仍按原票要求保留。工具仍强制off与device/尺寸同时出现,desktop模拟清除失败;本次新会话可snapshot/press/screenshot,随后又失去注册。没有绕过技能用外部进程操作。

本次管径规则实施与真实计数已完成;原票验收尚未全部达到,保持claimed/open,不给map添加完成gist。