29-map-snapshot-monitoring-distribution-poi.md 7.8 KB

后端执行票 —— map-snapshot 与 monitoring distribution 的 pointStatus 八桶契约

进度

Type: task Status: resolved Assignee: Codex Label: ready-for-agent Labels: ready-for-agent, backend-execution, wayfinder:task Category: backend-execution Blocked by: None

来源

前端执行票 —— 地图快照分页 token 与 pointStatus 八桶契约对齐(票 18 真实联调取证)承接决策票 02与规格 07。

真实实测事实(2026-10-10,只读 GET http://192.168.110.96:8301)

检查 实测
map-snapshot 响应含 pointStatusDistribution 无
mapFilter 回显键 industry/district/districtName/districtFilter/deviceType/pointCodes/deviceCodes(无 pointStatus)
pointStatus=ALARM 与不传 total 均为 13(入参被忽略)
pointStatus=UNKNOWN / UNASSOCIATED HTTP 200(被忽略,非匹配)
pointStatus=BOGUS HTTP 200(违反规格 07「认不出应 400 INVALID_REQUEST」)
/monitoring/distribution?pointStatus=UNKNOWN HTTP 400(只认六态单值)

源码复核一致:CockpitMapSnapshotResponse 无 pointStatus 入参与 MapFilter.pointStatus;CockpitMonitoringDistributionService.resolvePointStatus 只认六态单值。

范围

  1. map-snapshot:新增多值 pointStatus(逗号分隔或重复参数,OR),取值=六态 + UNKNOWN + UNASSOCIATED;认不出的值 400 INVALID_REQUEST(与 /monitoring/distribution 统一);MapFilter 回显生效值。
  2. 未筛时在响应提供八桶全局计数(六态 + UNKNOWN + UNASSOCIATED),筛选时计数不变。
  3. /monitoring/distribution:多值化(同语义),pointStatusDistribution 未筛时含八桶。
  4. 两端对「认不出的值 400」与回显口径统一。

非目标

  • 不改 UNKNOWN/UNASSOCIATED 的判定语义本身(规格 07 已定义)。
  • 不做前端接线(前端消费侧由票 23 负责,含完整性校验与如实降级)。

验收

真实环境只读探针:八桶计数齐备且前端状态栏/饼图显示真实值;多选状态筛选后 total 随之变化;pointStatus=BOGUS 返回 400;两端回显一致。后端契约测试覆盖多值、非法值拒绝、状态 7 排除不受影响。

关联

发现于票 18;承接决策票 02 与规格 07;阻塞票 18 收口与票 23 关闭。

进度

已完成并关闭(resolved)。 后端 master 提交 7fb7c2ccb62a78ef52c69eb399b0a6fc0264e112(18文件,已随合并60a0e9a推送至origin/master;合并回归429+2例全部通过)。用户明确授权验证后,针对性75/75、驾驶舱全量429/429(零失败、零错误、零跳过)、真实GET探针45/45通过,浏览器已确认状态栏/饼图真实八桶与多选筛选13→1→2。

两端多值pointStatus、非法值400 INVALID_REQUEST、统一回显和全局八桶均已生效。EMPTY=6、UNASSOCIATED=7,其余桶0;筛选/分页不改全局计数。设备缺状态明确UNKNOWN,点位六态聚合与工单状态7排除保留。真实对象仍未校验坐标,已上图0,筛选变化指业务对象集合。

共享监测分布服务/测试保留并纳入无设备点位前置修复;其余五个概览并行修改留在后端工作树未提交。未改前端源码、未替前端消费票或阶段收口票宣告整体完成。

证据:实施与验收记录、真实新版本探针、浏览器验收、测试结果、增量补丁。源码已经落地并提交,不要重复应用补丁。

认领与处理:deck认领写入读回失败,按本地规则保留Assignee;开始与关闭均已deck_issue_report上报。授权前因项目规则跳过build/debug,授权后实际执行并通过测试、真实接口和浏览器验收。

Comments

local — 2026-10-12T01:18:54.652Z

源码核对与实施方案:后端基线 740d896,工作树干净。map-snapshot 未接 pointStatus,SourceSmartDevice 无状态事实;distribution 仅六态单值,状态分布在筛选后计数,且坐标/类型排除导致不是真实全局全集。依据规格 07 与已解决的「无关联设备监测点被静默丢弃」决策,新增共享八桶查询/计数契约,两端支持 CSV+重复参数、统一回显;全局计数在筛选与分页前计算,保留 EMPTY 合法点位与未校验坐标对象;未关联设备新增真实发布状态,缺状态为 UNKNOWN(不通过时间或中文原因猜测)。保留既有六态聚合和工单状态7排除规则,新增跨端 MockMvc 契约测试。当前会话文件写范围为前端 workspace,后端源码将先在 workspace 中形成可审阅补丁,随后按沙箱要求落地。构建/调试与真实浏览器验证按项目规则跳过。

local — 2026-10-12T01:57:20.647Z

实施已落地:已审批的18文件补丁应用到 E:\pipe-ner-server,并逐文件核对落地内容。两端共享八桶白名单/匹配/全局计数,支持CSV与重复参数,统一回显;六态/UNKNOWN计监测点、UNASSOCIATED计未关联设备;deviceStatus明确发布UNKNOWN,既有六态聚合不改。保留并行票28服务/测试及类型排除口径;全局桶在类型排除前计算。补充跨端MockMvc、状态7、状态发布与Redis旧载荷测试源码;git apply --check --whitespace=error 和 git diff --check 通过。规范审查确认的UNKNOWN设备字段缺口已修正;规格审查0确认缺陷。尚未运行Maven/测试或真实HTTP与浏览器验收,按项目规则跳过build/debug。票保持开启;下一步获明确验证授权后运行后端契约测试、加载新后端构建并进行真实只读接口/前端状态栏饼图验收。后端共享工作树存在并行票28修改,尚未提交混合源码。

local — 2026-10-12T03:02:02.348Z

Resolution:两端pointStatus八桶契约已实现并真实验收。后端 master 提交 7fb7c2ccb6(18文件,未推送);共享分布服务/测试保留已存在的无设备点位前置修复,五个其他概览并行修改留在工作树未提交。用户明确授权后运行针对性75/75、全量Cockpit*Test+BusinessCockpit*Test 429/429(0失败/0错误/0跳过),新真实运行版本GET探针45/45。浏览器 http://localhost:8001/#/cockpit dataSource=real:状态栏与饼图八桶同源,EMPTY=6、UNASSOCIATED=7其余0;选择报警加载对象13→1,再加选预警→2,选中反馈与回显正确,全局计数不变。坐标仍未校验,已上图0,未伪造坐标准入。非法/混合非法值两端400 INVALID_REQUEST,CSV/重复参数等价,分页token有效。证据见 implementation/t29/status-and-verification.md、real-probe-new-runtime.json、browser-verification.md、targeted-test-results.json。本票验收通过关闭;前端消费票与阶段收口另行处理,本会话只解决这张票。

local — 2026-10-12T03:25:53.411Z

已按用户要求推送至后端 Gogs origin/master。远端在推送前已有 ba0ce07(无设备点位统计修复),因此在隔离检出中合并本票 7fb7c2c;两处共享文件按已验收兼容版本解冲突,保留远端概览变更。合并后回归 zksy-admin 429/429、zksy-system 2/2,零失败/错误/跳过。最终远端 master=60a0e9a775,ls-remote核验一致,且包含本票7fb7c2c。普通fast-forward推送,无强推;原后端工作树并行修改/冲突未触碰。

Answer