77-untitled.md 6.7 KB

后端执行票 —— 片区/行业筛选的端点覆盖缺口(事件族三端点、几何读模型、概览与工单端点)

Question

维护者 2026-10-19 反馈第 8 条:上方菜单栏「当前范围」(全部/城南/城北/太常/未分区)没有影响到场景及物体的筛选,行业也需一并检查。

前端执行票 67 已把前端能接的都接上(一张图、基础档案、管理信息、监测分布、预警分析),并把后端不收该参数的端点在界面上如实说明。本票承接剩下的后端契约缺口——前端不伪造筛选(票 67 的验收纪律:不支持的参数不得前端伪造,也不得静默忽略)。

实测证据(2026-10-22,只读探针 http://192.168.110.96:8301/api/cockpit/v1/**,载荷与脚本落盘 verify/artifacts/t67/) 判据两条:① 非法值 district=99 是否 400;② district=0/1 的响应是否真的不同。

一、片区(district):事件族三个端点完全不读该参数

端点 非法值 99 0/1 响应 结论
/events/multidimensional-analysis 400(district must be 0, 1, 2 or UNASSIGNED) 桶计数不同 已支持(前端已接线)
/events/current 200 逐字节相同 不读参数
/events/history-analysis 200 逐字节相同 不读参数
/events/handling-efficiency 200 逐字节相同 不读参数

三个端点的响应 filters 里也没有片区字段(只有 mode/level/industry/status 与 eventFamily/industry/level/workOrderState)。 于是「预警处置」模式里:预警分析随片区收窄,当前预警 / 历史事件 / 预警效率始终是全域 —— 同一模式四个数各说各话,前端只能靠界面说明交代(票 67 已做),根子在契约。

要求:三个端点按 multidimensional-analysis 的既有形态补齐 district(0/1/2/UNASSIGNED)+ 非法值 400 + filters 回显 district/districtName。

二、片区:几何读模型没有片区字段(降级为锦上添花,前端已能自行推导)

/infrastructure/geometry 实测 6766 个 feature,properties 只有: source / sourceId / code / name / industry / typeCode / networkType / networkLevel / pointType / networkId / diameter / remark / sourceCoordinates / coordinateValidation(s)。 没有任何片区字段;端点本身也不收 district(district=0/1 响应逐字节相同、非法值 99 不 400)。

2026-10-23 更正(维护者指出 + 前端已落地):片区信息一直在设施编码里 —— 编码规则是「片区 + 行业 + 时间编码」(TCRQ202609080001 = 太常·燃气管)。 前端票 67 已按编码前缀推出片区并据此裁剪管线图层(实测前缀与 name 里的片区词 6762/6762 一致、零反例)。 所以本段不再是阻塞项:管线现在能按片区筛。

仍然建议(非阻塞):几何 feature 直接下发 district(与其它端点同一套 0/1/2/null 语义)或 location/正式编码字段, 理由有三:① 前端不必依赖拼音前缀约定(CB=城北目前是推定,现网无该前缀数据可验证); ② 现网 4 个对象用的是另一套编码(GD-001、YL-YJ-00x),片区只能回 null、按片区查看时被排除; ③ 编码规则一变,前端推导会静默错位(票 67 的 E1b/E13 只能在闸门里靠落盘载荷发现)。

三、行业(industry):三个端点不读该参数

端点 非法行业 结论
/overview/infrastructure 200,响应不变 无任何入参(控制器没有 @RequestParam)
/overview/warning-settings 200,响应不变 不读 industry
/work-orders 200,响应不变 不读 industry(票 65 新增端点)
/infrastructure/geometry 200,响应不变 不读 industry,但几何全量取回后前端本地筛,不算缺口

要求:给 /work-orders 补 industry(非法值 400)。

概览三端点已被替代(2026-10-22 当日晚些时候):前端并行落地的票 05–08 把概览数据源换成四个新端点 /overview/perception、/overview/pipe-network、/overview/warning-study、/overview/alarm-disposal。 这四个端点在本机后端尚未部署(实测一律 404),参数面还无法实测;前端按规格 §1「四个端点都不收入参」实现, 并在界面为概览四块的片区/行业各挂了一句口径说明。要求:这四端点上线时明确参数面 —— 要么按规格继续不收 (前端说明维持),要么补 district/industry 并与其它端点同一套 400 校验;上线后按 verify/artifacts/t67/ 的探针复跑,把前端说明的依据从"规格"升级为"实测"。

四、已支持且前端已接线的(本票不改,仅作对照)

/map-snapshot、/infrastructure/base-archives、/infrastructure/management-information、/monitoring/distribution 的 district 与 industry 均实测生效。

Acceptance

  • 事件族三端点补齐 district:非法值 400、filters 回显、district=0/1 的计数真的不同(契约测试成对正反证)。
  • (非阻塞)几何读模型下发片区归属,或正式确认「片区看编码前两位」这条规则(含城北前缀字母),并在 coverage 里说明管段/构件各自的片区来源。
  • /work-orders 补 industry;非法值 400。
  • 概览四个新端点部署时明确参数面(不收则维持前端说明;收则与既有端点同套语义 + 400),并补齐实测证据。
  • 契约测试覆盖:合法值生效、非法值 400、不传=全域(不得把「不传」静默当成某个片区)。
  • 前端侧复验归 票 18(部署后按 verify/artifacts/t67/ 的同一套探针复跑)。

Context

  • 前端票:67: 「当前范围」与「行业」筛选生效面审计与补齐(本票的全部实测数据、对照表与界面说明由它产出)。
  • 复跑探针:.scratch/cockpit-real-data-wayfinding/verify/artifacts/t67/probe-district.sh、probe-geometry-and-industry.sh、diff-district.py。
  • 既有裁定:票 12(district 片区契约)、票 24(几何图层)、票 49(设施编码)、票 65(work-orders 端点)。

进度

  • 2026-10-22 由前端票 67 收口时另立:前端能接的都接了,剩下的是后端契约本身不认这些参数。

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

Comments

Answer