78-kpi.md 4.1 KB

前端执行票 —— 预警效率面板消费预警自身处置流程(三张 KPI 换成条数/已解除率/平均处置时长)

Question

票 74 已把后端契约补上(提交 983fc27a 已推 origin/master,尚未部署):GET /api/cockpit/v1/events/handling-efficiency?eventFamily=WARNING 现在回预警自身的处置流程段,票 65 当时记录的契约缺口不复存在。本票是那张缺口关闭后的前端消费票(票 74 验收第 5 条明令另立)。

后端新契约(票 74,已实测)

位置 预警族 报警族
warningStateCounts [{stateCode, stateName, count}],WarningWorkflow 六态全铺(缺桶计 0),脏状态进 UNKNOWN 桶 null
summary.warningHandlingEfficiency {value, numerator, denominator, state, reason, basis},已解除 ÷ 窗口内预警数;分母 0 → state=EMPTY + reason=NO_WARNINGS null
summary.warningDuration {value, unit, sampleCount, state, reason},发布→已解除平均时长;无样本 → EMPTY + NO_CLOSED_WARNINGS null
summary.handledCount/inProgressCount/cancelledCount、handlingEfficiency、averageDuration、workOrderStateCounts 全部 null 原样
durationTrend[] eventCount 保留,handledCount/averageDuration 为 null 原样

真实环境实测(第二实例 8399,同一联调库,窗口 2026-09-23 ~ 2026-10-23):totalEvents=7、linkedWorkOrderCount=0、六态 PENDING 3 / PROCESSING 1 / CLOSED 3(和=7)、已解除率 3/7=0.4286、时长 0.64h(3 样本)。证据:verify/artifacts/t74/warning-family-live.json(票 74 落盘)。

本票要做的

  1. toHandlingEfficiency() 读新字段(warningStateCounts / summary.warningHandlingEfficiency / summary.warningDuration),null 保真(不把 null 数成 0;票 42/票 20 同一纪律)。
  2. warningEfficiencyKpis() 三张卡换成预警自身读数:预警条数 / 已解除率 / 平均处置时长(块结构不重排,票 65 已预留接缝)。
  3. 预警模式补「预警状态分布」块(六态,用 barsBlock 或既有分布块,词表取 WarningWorkflow 中文名,不在前端另造一套状态词)。
  4. WARNING_EFFICIENCY_GAP 这段「后端尚未提供」的口径说明必须改写——缺口已补,留着就是谎话;新文案说清「这些数是预警自身的处置流程统计」与已解除率的分母。
  5. contractMocks.js 的 efficiency mock 同步新形状(含 EMPTY/NO_WARNINGS 空态),静态样例仍遵守本图 Notes 的「不为演示改写样例」裁定。
  6. 闸门 t65(51/51 现役)按新契约改写/扩条:预警族 null 纪律、六态和=条数、空态原因码、报警族零回归。

非目标

  • 不动后端(票 74 已交付)。
  • 不改报警族工单口径与工单列表(票 65 已收口)。

验收

  1. 预警模式下三张 KPI=条数 / 已解除率 / 平均处置时长,读数与后端回显一致;空态走占位符不画假 0。
  2. 预警状态分布六态与响应一致(含 0 桶),脏状态进「未知」。
  3. 报警模式零回归(t65 既有断言全绿)。
  4. WARNING_EFFICIENCY_GAP 不再声称「后端未提供」。
  5. 后端部署后在 http://127.0.0.1:8000/#/cockpit 走查预警模式三卡与分布块(走查归票 18 联调窗口;本机 mock 可先验形状)。

关联

进度

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

Comments

Answer