# 16: 前端执行票 —— 报警–工单闭环消费(事件/工单状态/时间线/处置率/异常点) Type: task Status: resolved Label: ready-for-agent Blocked by: 01, 06 Category: frontend-execution ## 来源 - 决策:[01 报警—工单闭环读模型与 Gogs 票拆分边界](01-backend-slice-ticket-boundary.md)、[06 异常统计、工单处置率与管理字段词汇](06-cross-mode-business-semantics.md) - 规格:[10 业务语义规格](10-business-semantics-spec.md) ## 状态 **已完成,Status: resolved。** 依赖决策01/06已关闭,原标签ready-for-agent,无needs-triage前置闸门。消费侧契约与mock交付完成;真实后端联调、提交基线及真人闭环验收由[前端真实接口联调与阶段收口](18-frontend-real-integration-gate.md)承接,不把mock走查当真实环境证据。 ### 实施结果 - 处置率读取真实 `summary.handlingEfficiency` 的 numerator/denominator,状态5÷状态0–6;零分母显示「不适用」与工单语义提示,取消态7不计分母。状态分布读取 `workOrderStateCounts[]`,basis不显示。 - 监测点异常桶与设备/指标异常桶分别显示、缺桶补0,不跨对象相加。监测分布后端统计混入设备,故监测点统计改用地图摘要明确的全局监测点桶,并标注「全局未筛」;未发布不伪造0。地图仍只按设备WARNING/ALARM回联,OFFLINE/EXPIRED不冒充异常点。 - 事件详情显示真实工单摘要;设备工单保留associatedWithCurrentEvent三态并明确关联提示。0–7字典、4→3回退、6延期旁路、7取消终态共用既有单源。 - 工单扫描帧独立解析/订阅,逐工单拒绝旧与重复帧;新帧刷新事件、概览和受影响当前设备详情,并使关闭期间的设备缓存失效。设备帧eventId触发报警REST重取。详情重取失败/未返回事件时显示旧数据说明,不制造关联或时间线动作。 - 真实历史rows按时间桶呈现;多维分析dimensions/buckets真实形状已接入。结案时长与趋势使用averageDuration及中文时间单位,缺少平均响应时长显示占位。mock同步正式形状,不以比例冒充时长或位置文本冒充片区。 ### 验收证据 - [闭环消费契约脚本](../verify/t16-alarm-order.mjs):通过效率真实响应、零分母、basis不泄漏、两组异常桶、关联三态、0–7词典、历史rows/分析buckets、中文时长单位、旧帧/退订/工单设备通道隔离、WARNING/ALARM窄地图与旧详情说明。 - [真实Pinia回归](../verify/t16-stores.mjs):使用[地图引擎替身loader](../verify/t16-store-loader.mjs),通过逐单乱序、同时间不同单、只刷新受影响设备、关闭缓存失效、eventId报警刷新及设备状态/选择身份隔离。命令:`node --loader ./.scratch/cockpit-real-data-wayfinding/verify/t16-store-loader.mjs .scratch/cockpit-real-data-wayfinding/verify/t16-stores.mjs`。 - 8001 mock浏览器走查(用户明确授权):零分母不适用;正常2/3=66.7%;监测点全局离线0与设备离线1分别显示;0–7路径、回退/延期/取消只读详情;历史时间桶;结案时长2.4小时及逐桶中文单位;行业/片区正式分析桶。图形布局允许面板内部滚动,未新增写操作。 - 独立只读审阅发现报警帧漏刷新、关闭缓存未失效、真实history漏读取及mock比例时长混用,均已修复并加入回归。复审唯一残留的趋势单位缺失已修复,脚本与浏览器均确认中文单位。 - 限定源码 `git diff --check` 通过。未运行生产build;浏览器调试在本票获得明确授权后执行。工作区已有其它未提交修改,本票未创建commit或推送,提交基线待阶段收口处理。 ## Answer 已完成报警—工单只读消费的前端契约/mock切片。处置率、异常统计、关联提示、状态路径与增量刷新遵循权威后端语义;验收结果见上方。真实后端业务联调仍由阶段收口票承担。 ## 范围(做什么) 1. **报警/工单只读消费**:事件列表、事件详情、事件/设备工单摘要与等级/状态展示;驾驶舱不提供工单写操作。 2. **处置率视图**:`状态5 ÷ 状态0–6`;分母 0 → 显示"不适用"(文案「当前范围没有可计入工单,处置率不适用」);`basis` 原始码不泄漏到界面。 3. **异常统计桶**:监测点异常桶(`ALARM/WARNING/OFFLINE/EMPTY`)、设备/指标异常桶(`WARNING/ALARM/EXPIRED/OFFLINE/UNKNOWN`)按对象分别计数;成功响应缺失桶显 0,分区无数据才 EMPTY/UNAVAILABLE。 4. **异常点地图**:预警处置地图只认设备 `WARNING/ALARM` 回联为异常点(宽清单窄地图);`OFFLINE/EXPIRED` 只进运行概况清单,不冒充异常点。 5. **工单状态字典展示**:沿用已对齐的 0–7 字典(前端 `workOrder.js`),事件/工单摘要与时间线状态码一致。 ## 非目标 - 不创建/处置工单(外部业务系统承担)。 - 不实现实时推送连接本身(连接归执行票 14 与规格 09);增量帧消费按后端执行票 13 的契约接入。 ## 验收(后续执行) 零依赖逻辑闸门 + 浏览器走查(`data-*`:处置率不适用提示、异常桶计数、地图异常点不含离线、事件/工单状态码 0–7)。 ## 关联 - 上游:决策 01/06、规格 10、后端执行票 13 - 下游:为总体概览/基础设施后续接线提供模板