30-untitled.md 3.8 KB

后端执行票 —— 驾驶舱设施点位与管线几何读模型

后端执行票 —— 驾驶舱设施点位与管线几何读模型

Type: task Status: ready-for-agent Category: backend-execution

背景与来源

票 24(前端设施点位与管线真实几何图层接线) 范围第 1 项要求先定「权威读取路径」;维护者 2026-10-12 裁定:新开后端驾驶舱几何读模型,不在前端复用业务 GIS 端点。

已核实的事实(一手来源,2026-10-12)

  1. 驾驶舱侧没有任何几何端点:zksy-admin 下 24 个 Cockpit*Controller 中无一产出几何。/api/cockpit/v1/map-snapshot 只返回 monitoringPoints + unassociatedEquipment;/infrastructure/base-archives 只有聚合统计。
  2. 全后端只有两处几何产出:WaterSupplyGisMapController(/waterSupply/gis/map/features)与 gasbasic/GisController。两者都在 /api/cockpit/v1/** 之外。
  3. 两者都要鉴权:实测 GET /waterSupply/gis/map/features 返回 HTTP 200 + 业务 code=401 认证失败。ADR 0005 明文规定免鉴权范围「不扩展到后端其他业务路径」,故前端不可直接复用。
  4. 数据底座按行业不均(决定建模口径的关键事实):

| 行业 | 管线几何 | 构件属性 | | --- | --- | --- | | 燃气 | 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。

交付物

  1. 新增免鉴权几何端点,挂在 /api/cockpit/v1/** 下(继承 ADR 0005 的免鉴权口径与只读语义),返回 GeoJSON FeatureCollection:
    • 管段 LineString(沿用现有两点的 [lon, lat] 坐标顺序约定);
    • 管点/构件 Point,带 pointType 与所属 networkId。
  2. 跨行业覆盖如实呈现:哪些行业有几何、哪些没有,必须由响应本身表达,不得让前端猜。燃气按裁定出全套构件;供水/排水只有真实 2 点直线段就只给直线段;窨井给点位。
  3. 坐标校核纪律与决策票 07 一致:范围校验、零坐标、未校验坐标一律不得静默渲染,须随几何一并给出可判定的状态(与 map-snapshot 的 coordinateValidation 同形),由前端决定进「无地图位置」清单还是上图。
  4. 不做坐标臆造:不得为缺坐标的记录生成默认点或吸附推断节点。管段目前无共享端点拓扑,不得据此推断弯头/三通连接关系。

验收

只读 GET 实测:免鉴权可取到真实几何;坐标缺失/非法的对象带明确状态;燃气构件类型齐全、供水/排水/窨井的覆盖缺口在响应中如实可判;Cockpit*Test 全绿并推送提交(基点写进票内)。

关联

由票 24 范围第 1 项派生;票 24 的真实几何验收依赖本票落地。

进度

Status: ready-for-agent Type: task Blocked by: Labels: ready-for-agent, backend-execution, wayfinder:task

Comments

Answer