PASS A1-mode-and-display-name-carried — mode=ALARM displayName=当前报警 PASS A2-inner-events-section-mapped — events.state=success 条数=2 PASS A3-order-section-present-untouched — orders.state=empty PASS A4-event-item-domain-fields — EventItem 领域行(编码/等级/设备编码/坐标校验) PASS A5-empty-events-section-mapped-empty — 空事件分区照后端 EMPTY 映射,不猜成成功 PASS B1-two-families-two-labels — 预警 {"key":"WARNING","label":"预警","title":"当前预警","codeLabel":"预警编号","nameLabel":"预警名称","statusLabel":"预警状态"} / 报警 {"key":"ALARM","label":"报警","title":"当前报警","codeLabel":"报警编号","nameLabel":"报警名称","statusLabel":"报警状态"} PASS B2-fields-and-status-label-sync-per-family — 同一对象的 codeLabel 与 statusLabel —— 切换时必然一起变(结构保证) PASS B3-switch-options-order-fixed — 分段顺序固定:预警在前、报警在后 PASS B4-known-mode-validation — 只认 WARNING/ALARM(认不出的不该拿去换后端 400) PASS B5-unknown-mode-falls-back-to-warning — 认不出的 mode 落回预警(视图不崩),但切换入口不认它 PASS C1-level-1-to-4-uses-level-tags — 1级 {"tone":"lv1","label":"1级"} / 4级 {"tone":"lv4","label":"4级"} PASS C2-level-tags-is-statusTones-source — 等级色键来自 statusTones 的 LEVEL_TAGS(唯一来源,与点位状态色分离) PASS C3-unknown-level-neutral-with-text — 认不出的等级落中性灰 + 文字,不猜成某个真实等级 PASS C4-column-level-tag-and-text — 行视图带等级标签(色键 + 文字) PASS D1-newest-first-by-event-time — 取最新 2 条:NEW,MID PASS D2-default-limit-in-10-15-range — DEFAULT_EVENT_LIMIT=12(验收「默认展示最新 10-15 条」) PASS D3-limit-caps-out — 不传 limit 时按默认上限截断(这里 4 条全保留) PASS D4-view-rows-are-latest-limit — 视图行 = 最新 N 条(纯函数层收口,组件不自己截) PASS D5-view-rows-are-view-shape — 视图行带等级 tag/状态文本/量值(组件可读的最终形状) PASS E1-domain-no-map-engine-import — 领域层不 import 引擎/地图服务(没有标记计划可产生) PASS E2-pane-no-map-engine-import — 组件不碰地图引擎/标记(事件只带设备编码,地图由票 14 回联) PASS E3-store-no-marker-plan — store 只驱动地图(相机/高亮),不产生标记计划 PASS E4-event-keeps-device-code-only — 事件以设备编码为回联键;坐标只作票 14 的输入,不在这里上图 PASS F1-no-accuracy-false-alarm-field — 领域层与组件不发明任何真伪/准确率/误报判定(后端契约就没有这些字段) PASS F2-mock-has-no-judgement-field — mock 不造「准确率/误报率」字段(照后端契约,系统不判断事件真伪) PASS F3-status-shown-as-backend-gives — 状态直译已知值、认不出的回原码、空回空串 —— 只呈现后端的判断,不替后端裁决 PASS G1-loads-warning-by-default — mode=WARNING 行数=12 PASS G2-set-mode-switches-family-and-reloads — 切换后 mode=ALARM 行数=12 PASS G3-switch-field-labels-follow-mode — 告警族的字段标签与状态标签(同一切换状态,同步变化) PASS G4-race-latest-mode-wins — 快速切族后停在 ALARM(迟到的 WARNING 被丢弃) PASS G5-invalid-mode-ignored — setMode('BOGUS') 不改状态(保持 ALARM) PASS H1-mock-filters-by-mode — 预警 14 条(WRN-*)、报警 14 条(ALM-*)—— 两种列表内容不同(12 条上限是视图层的活,见 H3) PASS H2-mock-empty-scenario — 空样例事件分区 empty、视图行 0(不画假数据) PASS H3-view-total-from-pagination — 视图 total=14、limited=true(样例共 14 条 > 默认 12) PASS I1-CockpitShell.vue-no-raw-fields — 零后端裸字段 PASS I1-components/EventListPane.vue-no-raw-fields — 零后端裸字段 PASS I1-stores/eventStore.js-no-raw-fields — 零后端裸字段 PASS I2-CockpitShell.vue-no-credential — 不碰凭据 PASS I2-components/EventListPane.vue-no-credential — 不碰凭据 PASS I2-stores/eventStore.js-no-credential — 不碰凭据 PASS I2-services/eventApi.js-no-credential — 不碰凭据 PASS I2-domain/eventList.js-no-credential — 不碰凭据 PASS I3-domain/eventList.js-pure — 领域转换不自己发请求 PASS I4-domain/eventList.js-no-service-import — domain 不 import service PASS I3-domain/events.js-pure — 领域转换不自己发请求 PASS I4-domain/events.js-no-service-import — domain 不 import service PASS I3-domain/statusTones.js-pure — 领域转换不自己发请求 PASS I4-domain/statusTones.js-no-service-import — domain 不 import service PASS I5-switch-state-lives-in-store — 分段按钮只调 store 的 setMode(组件不私藏切换状态) T13 事件列表检查:49/49 项通过。 T13 事件列表全部通过。