# 管径双侧补全:实施与真实验证 用户已确认的规则:后端透传原始毫米管径;前端仅在同一行业、端点坐标完全重合且无分叉的连续链上,按缺失段路径中点距离进行双侧线性插值。两侧同值直接沿用。分叉、单侧、无锚点及一个锚点围成的环不补。不吸附附近端点,不生成新的安装拓扑,不回写原始管径。 ## 纠正此前事实表述 此前 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](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](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。