Type: task Status: resolved Blocked by: Labels: ready-for-agent, backend-execution, wayfinder:task Category: backend-execution
票 24(前端设施点位与管线真实几何图层接线) 范围第 1 项要求先定「权威读取路径」;维护者 2026-10-12 裁定:新开后端驾驶舱几何读模型,不在前端复用业务 GIS 端点。
zksy-admin 下 24 个 Cockpit*Controller 中无一产出几何。/api/cockpit/v1/map-snapshot 只返回 monitoringPoints + unassociatedEquipment;/infrastructure/base-archives 只有聚合统计。WaterSupplyGisMapController(/waterSupply/gis/map/features)与 gasbasic/GisController。两者都在 /api/cockpit/v1/** 之外。GET /waterSupply/gis/map/features 返回 HTTP 200 + 业务 code=401 认证失败。ADR 0005 明文规定免鉴权范围「不扩展到后端其他业务路径」,故前端不可直接复用。| 行业 | 管线几何 | 构件属性 |
| --- | --- | --- |
| 燃气 | pipe_network_base(network_type='0')每条仅 2 个端点(startLongitude/startLatitude/endLongitude/endLatitude),直线段 | ✅ gas_pipe_point:经纬度 + pointType(阀门/调压/计量/阴极保护/弯头/三通/其它)+ networkId 关联所属管线 |
| 供水 | 同表 network_type='2',同为 2 端点直线段 | ❌ 无管点构件表 |
| 排水 | 同表 network_type='1',同为 2 端点直线段 | ⚠️ 有 drainage.domain.PipeNetworkInfo(管线/管点/排口),未见构件类型字段 |
| 窨井 | 无管线;ManholeBase 有经纬度 | ❌ |
规模:pipe_network_base 共 5268 条(燃气 537 / 供水 996 / 排水 3735),管线总长 67.6 km。
/api/cockpit/v1/** 下(继承 ADR 0005 的免鉴权口径与只读语义),返回 GeoJSON FeatureCollection:
LineString(沿用现有两点的 [lon, lat] 坐标顺序约定);Point,带 pointType 与所属 networkId。map-snapshot 的 coordinateValidation 同形),由前端决定进「无地图位置」清单还是上图。只读 GET 实测:免鉴权可取到真实几何;坐标缺失/非法的对象带明确状态;燃气构件类型齐全、供水/排水/窨井的覆盖缺口在响应中如实可判;Cockpit*Test 全绿并推送提交(基点写进票内)。
由票 24 范围第 1 项派生;票 24 的真实几何验收依赖本票落地。
33ca0b6 已推 origin/master(60a0e9a..33ca0b6 快进)。针对性 22/22(几何 Service 14、Controller 6、免鉴权配置 2);全量 *Cockpit*Test 463/463(在仅含该提交的隔离副本 validation-checkout 上通过;主工作树因另一并行会话未提交的设施统计改动无法编译测试,未动其工作)。两轴审查发现并修复事务异常绕过脱敏 500、非空几何 JSON 序列化回归,最终复核 Standards 0 / Spec 0。33ca0b6 后执行):无 Authorization 请求 GET /api/cockpit/v1/infrastructure/geometry → HTTP 200 + 业务 code 200;13/13 检查全绿。实测 5272 个 feature(燃气管线 537 / 供水 996 / 排水 3735 / 燃气构件 1 / 窨井 3);5270 条 UNVERIFIED_COORDINATE(数值合法但无校核来源)+ 2 条 INVALID LONGITUDE_OUT_OF_RANGE(窨井越界);坐标纪律完整执行(geometry=null 对非法、合法不冒充已校核);燃气构件 pointType=valve 原样透传、networkId 关联保留;供水/排水构件缺口 NO_COMPONENT_SOURCE / NO_TYPED_COMPONENT_SOURCE、窨井管线缺口 NO_PIPELINE_SOURCE 均如实标注 UNAVAILABLE。探针:implementation/t30/live-acceptance.py。已收口(2026-10-12):免鉴权只读几何端点 GET /api/cockpit/v1/infrastructure/geometry 实施、审查、测试、真实验收全链路完成。提交 33ca0b6 已推 origin/master。契约:AjaxResult.data 为 GeoJSON FeatureCollection,三源真实几何(pipe_network_base 两端点直线 / gas_pipe_point 构件原样 pointType+networkId / manhole_base 点位),坐标纪律与 map-snapshot 同形(非法→geometry=null+reason;合法但无校核来源→UNVERIFIED/不可渲染),coverage 9 条如实区分 AVAILABLE/EMPTY/UNAVAILABLE 与各行业缺口。真实验收:无 Authorization GET → 200,5272 feature,5270 UNVERIFIED + 2 INVALID,行业覆盖缺口全如实标注。详见进度区与关联 handoff。
真实免鉴权GET验收通过(2026-10-12 07:11,用户重启实例后),13/13全绿:5272 feature、5270 UNVERIFIED + 2 INVALID(越界窨井)、燃气构件pointType/networkId原样、各行业覆盖缺口如实UNAVAILABLE。提交33ca0b6已推origin/master,全量*Cockpit*Test 463/463。票收口。