基线卡片 06:预警设置端点预警自身生命周期统计
按决策票 05 真实联调基线与收口证据门槛 的固定骨架产出,对应执行票 41 预警设置端点改为预警自身生命周期统计。状态判定:③ 真实数据联调完成(2026-10-14 第二实例实测通过,见 §4;共享实例部署窗口与前端走查不在本票范围)。
一、基线
| 项 |
值 |
| 记录时间 |
2026-10-14(本地时钟) |
| 记录角色 |
后端执行代理(实施 + 编译 + 契约测试 + 第二实例复验 + 推送) |
| 联调环境 baseUrl |
http://192.168.110.96:8301(共享实例)+ 复验用第二实例 http://127.0.0.1:8399(本票构建,已停机) |
| 后端仓库 / 分支 / 提交 |
http://192.168.110.30:3000/shaoy/pipe-ner-server / master / b047a60d(本票 fix(cockpit): 预警设置端点改为预警自身生命周期统计 (#41),变基含上游 05c23774) |
| 复验方式 |
不动共享实例:t41 本地 profile(同库同 Redis,端口 8399、nacos 注册关闭、推送任务 delay 1h)起第二实例实测;对照共享实例区分上游修复与本票新契约 |
| 后端推送状态 |
已推送;远端 master=b047a60d,05c23774..b047a60d |
| 前端仓库 |
本票不涉及前端(消费侧另立票,见票面「前端后续」) |
| 访问控制 |
驾驶舱只读 REST 免鉴权(ADR 0005);两实例实测无凭据 HTTP 200 |
| 只读数据源 |
联调库只读快照;readOnly: true |
二、收口条件五行
| # |
条件 |
状态 |
证据 |
未完成项 |
| ① |
后端提交 / 编译 / 契约测试 |
已完成 |
编译通过;针对性 24/24;全量 Cockpit*Test,BusinessCockpit*Test 498/498(变基后复跑) |
无 |
| ② |
新字段形状(状态/等级/趋势/分布) |
已完成 |
§4.2 实测:六态/1–4/四行业/三片区+未分区全铺,和恒等于 total |
无 |
| ③ |
趋势窗口跟随 range |
已完成 |
§4.2 实测:LAST_7_DAYS 只留窗口内日桶(窗外桶被裁) |
无 |
| ④ |
空态 |
已完成 |
契约测试 emptyFamilyUsesExplicitEmptyState:state=EMPTY、处置率 NO_WARNINGS、分布仍全铺计数 0 |
无 |
| ⑤ |
真实环境复验「不再 500」 |
已完成(第二实例) |
§4.1 实测 code=200;共享实例 8301 的 500 已由上游 94bb7e4d(删 dept_id)先行消除,与本票改动叠加后新契约生效 |
共享实例滚动重启窗口归票 17;前端走查归前端消费票 |
三、契约变更摘要
| 维度 |
预警族(warning) |
报警族(alarm) |
| 状态分布 |
statusDistribution:WarningWorkflow 六态(DRAFT/PENDING/RECEIVED/PROCESSING/HANDLED/CLOSED)全铺 |
statusDistribution:alarm_status 归一 UNHANDLED/HANDLED(新增) |
| 工单口径字段 |
null(handled/pending/cancelledCount/unlinkedEventCount/invalidWorkOrderStateCount/workOrderStates) |
原样保留(含 workOrderStates 0–7、未回联/脏码/已取消分列) |
handlingEfficiency |
已解除 ÷ 预警总数(预警自身口径;分母 0 → NO_WARNINGS) |
状态 5 ÷ 状态 0–6 工单数(工单口径,决策票 06) |
| 等级分布 |
levelDistribution 1–4 全铺(warning_level 字符串解析) |
levelDistribution 1–4 全铺(alarm_level) |
| 行业 / 片区 |
沿 equipment_base + equipment_type 树上溯;未知/未分区显式入桶 |
同左 |
| 趋势 |
按发布时间分桶;handled=桶内已解除 |
按更新时间分桶;handled=关联工单已结案 |
分布读数取整个快照(不随 range 收缩),故 sum(分布桶) == total 可被审计复算;只有趋势桶跟随窗口。
四、实测记录
4.1 端点 200 复验(第二实例,真实联调库)
$r = Invoke-WebRequest 'http://127.0.0.1:8399/api/cockpit/v1/overview/warning-settings?mode=WARNING&range=LAST_7_DAYS' -UseBasicParsing
# HTTP 200, code=200(改造前同库同端点为 HTTP 200 + body code=500:字段 "dept_id" 不存在)
4.2 预警族自洽性(真实数据复算)
| 分布 |
实测计数 |
和 |
| 状态 |
DRAFT 2 + PENDING 4 + RECEIVED 0 + PROCESSING 4 + HANDLED 2 + CLOSED 19 |
31 = total ✓ |
| 等级 |
1级 13 + 2级 5 + 3级 1 + 4级 12 |
31 ✓ |
| 行业 |
供水 2 + 排水 24 + 窨井 1 + UNKNOWN 4(燃气 0) |
31 ✓ |
| 片区 |
城南 24 + 城北 1 + 太常 2 + 未分区 4 |
31 ✓ |
| 处置率 |
19/31 = 0.6129(已解除÷总数) |
✓ |
| 趋势 |
2026-10-09/10/14 三桶(LAST_7_DAYS 窗内) |
✓ |
报警族:total=66,handled=64,statusDistribution 2+64=66 ✓,workOrderStates 0–7 齐全,处置率 1/5=0.2000(工单口径)。
4.3 对照证据(共享实例 vs 第二实例,同时刻)
| 实例 |
构建 |
HTTP/body code |
契约 |
8301 共享 |
上游 05c23774(已被他人重启) |
200/200 |
旧契约:warning.handled=0、workOrderStates 在、无 statusDistribution、处置率 0.2000 |
8399 第二 |
本票 b047a60d |
200/200 |
新契约:见 §4.2 |
判读:8301 的 500→200 恢复来自上游 94bb7e4d 删 dept_id(诊断期实测 dispatch_user → 复测 dept_id,两形态都是「实体声明了库中已删列」);本票在其上把预警族口径换为自身生命周期,8399 实测生效。
五、已知边界与后续
- 共享实例重启加载
b047a60d 前,8301 仍回旧契约(预警族工单字段为旧口径);滚动部署归票 17。
- 前端消费侧(
toOverviewWarningSettings / alertSettingsPanel / contractMocks.js)尚未读新分布块,
预警半边会显示全 0 —— 按票面验收另立前端票,不阻塞本票收口。
- 预警族
handlingEfficiency 语义已从「工单处置率」改为「已解除率」;消费方必须连 state/reason 一起读,
分母 0 显示「不适用」而非 0%。