status-and-verification.md 6.1 KB

pointStatus 八桶后端实施与待验收记录

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

当前结论

源码已落地到 E:\pipe-ner-server 并提交 7fb7c2ccb62a78ef52c69eb399b0a6fc0264e112(已随合并提交60a0e9a775dfb40c6dcc381dee136e57771e9b2c推送至后端origin/master;整合远端ba0ce07后回归zksy-admin 429/429、zksy-system 2/2通过,远端哈希已核验)。用户随后明确授权后端测试、真实接口与浏览器验收:针对性75/75、cockpit全量429/429、真实GET探针45/45全部通过,浏览器确认全局八桶、饼图与多选筛选13→1→2,满足本票验收并收口。

  • 针对性测试结果、真实新版本探针、浏览器验收记录。两轮 Maven 都是零失败、零错误、零跳过。
  • 真实服务最初为旧版本(历史探针保留),10:39后已经发布新契约。未自行停止或重启用户后端进程;运行构建版本由HTTP契约与真实响应证实。
  • 后端提交定界18文件,其中两张共享监测分布文件保留并纳入已存在的无设备点位前置修复及回归;其余五个概览并行修改仍未提交、原样保留。未推送远端。

  • 初始后端基线 740d896;准备补丁期间后端 HEAD 前进到 0a6b108,落地后只读检查 HEAD 为 894402a。这些是并行提交基线,不是本票提交。

  • 本票增量补丁 相对准备时后端工作树,仅包含本票增量。源码已应用,不要重复应用。

  • 文件清单与应用前版本指纹 用于区分本票变更与并行修改。

  • 后端共享工作树有其他票的修改(尤其监测分布服务/测试和概览),未将混合工作树整体提交;本仓库保存本票增量补丁作为可审阅交付记录。

已实现

  1. 两控制器接收 String[] pointStatus;CSV 与重复参数统一经共享查询解析器处理。状态集合去重并按固定顺序回显 CSV,不传回显 null。
  2. 允许六态、UNKNOWN、UNASSOCIATED;非法单值或混合非法值抛 INVALID_REQUEST,控制器映射 HTTP 400。空串保持不筛;多值中的空 token 拒绝,避免静默忽略。
  3. 六态和 UNKNOWN 按监测点计数;UNASSOCIATED 按未关联设备计数,不把设备重复加入六态计数。全局计数在行业/片区/类型/状态筛选及分页之前计算,零桶也显式返回。
  4. UNASSOCIATED 为类别限制,混选时其余状态 OR;EMPTY 仅匹配监测点。未关联设备按自身发布状态匹配,缺状态记录显式 UNKNOWN,不用时间戳或中文原因猜测。
  5. 两端未关联设备都发布 deviceStatus;分布原 pointStatus 六态字段保留兼容,未知时原字段仍为 null。
  6. 点位聚合沿用既有六态解析器,不改变优先级或把设备缺状态重新定义成未知点位。当前生产解析器总能发布六态,故 UNKNOWN 点位桶通常为 0;未伪造未知点位样本。
  7. 保留并行「无关联设备监测点被静默丢弃」实施中的合法 EMPTY 点位、坐标不决定统计、关联设备去重以及类型 excluded 口径。分布全局八桶在类型排除之前统计,因此全局数可能大于分布台账的 total;不能按台账分页结果推导全局分布。

自查与证据边界

  • git apply --check --whitespace=error 通过;应用时全部源版本指纹匹配,18 文件应用后逐文件内容一致;git diff --check 通过。
  • code-review 两路只读审查:Spec 无确认的本票缺陷;Standards 发现 UNKNOWN 设备状态字段缺口,已新增 deviceStatus 字段和 HTTP 断言修正;魔法桶下标/设备词表顺序依赖已移除。
  • 已新增4个跨端MockMvc、2个事实解析器、2个Redis兼容用例,均已在授权后的75例与429例运行中通过;同步既有分布测试全局桶断言并保留并行新增测试。
  • 不改前端、不扩大到行业/片区设备级 OR 和命中设备子集旧缺口。

已执行的验证与可复跑步骤

  1. 在后端 pipe-network-service 的既有 Maven 环境运行针对性测试:

    mvn -pl zksy-admin -am test '-Dtest=CockpitPointStatusContractTest,CockpitPointStatusSnapshotSerializationTest,CockpitMapSnapshotControllerTest,CockpitMonitoringDistributionControllerTest,BusinessCockpitDeviceFactResolverTest,BusinessCockpitMapSnapshotAdapterTest,BusinessCockpitMonitoringDistributionAdapterTest' -Dsurefire.failIfNoSpecifiedTests=false
    

再按现有项目门槛运行 cockpit 回归;不得把跳过用例或 Maven 没有执行测试的成功退出视为通过。

  1. 在维护者批准的方式下加载新后端构建,记录提交哈希和真实进程基线。当前运行服务不会因源码落地而自动变化。
  2. 对真实环境 http://192.168.110.96:8301 的两端点分别读取不筛、ALARM,WARNING、重复参数、UNKNOWN、UNASSOCIATED、UNASSOCIATED,ALARM 及 BOGUS。核对:
    • 两端都有完整八桶;全局计数一致,筛选/分页不改变同快照计数;不要跨数据变化时点硬比实时快照。
    • CSV/重复参数回显一致且数据匹配;非法值 HTTP 400 且 category=INVALID_REQUEST。
    • total 对有数据的状态筛选真实变化;无数据状态返回空结果并保留完整分布。
    • 第 2 页起沿用 snapshotAt;坐标校验保持真实值,关联设备不变成独立设备。
  3. 按前端消费票真人走查状态栏、饼图真实计数和多选高亮;本票不替代前端消费票收口。
  4. 定界并提交后端本票增量;补齐证据后关闭本票、上报关闭,并向 map 的 Decisions so far 追加票名+链接+结论。

授权前因项目规则跳过build/debug;用户随后明确选「后端测试、真实接口与浏览器验收」,已依授权完成上述验证。真实设备均未校验坐标,实际可上图仍为0;验收比较的是筛选后的业务对象集13→1→2,未冒充地图渲染数量变化。