56-untitled.md 8.1 KB

前端执行票 —— 运行概况顶部摘要折叠消息交互

Label: wayfinder:task Category: monitoring-feedback

Question

运行概况顶部的统计窗口、离线摘要等纯文字信息占用过高。需要把它们收成紧凑的摘要消息入口,默认折叠;hover 与点击可以查看完整详情,键盘焦点与触屏点击均可用。折叠只改变信息呈现,不改变真实数据、状态词、失败态与列表分页。

Acceptance

  • 默认状态明显比当前纯文字块紧凑,且保留可读的摘要标题/状态。
  • hover 可查看详情,点击可固定展开;离开 hover 不应覆盖点击固定状态。
  • 键盘 focus/Enter/Space 和触屏 click 均可用,具备可访问名称与状态。
  • 真实数据、异常统计、时间窗口、离线设备摘要和失败态不丢失。
  • build/dev/browser 按 AGENTS.md 默认跳过,除非维护者明确授权。

Context

相关文件:domain/monitoringPanels.js、components/PanelBlocks.vue、EventListPane.vue 的紧凑事件卡交互;相关已关闭票:40、44。

Related spec

../specs/2026-10-17-monitoring-feedback.md

进度

Status: resolved Type: task Blocked by: Labels: wayfinder:task

Comments

local — 2026-10-19T05:44:50.719Z

第二轮(维护者 2026-10-18 两条反馈)已实施:① 撤销 hover/focus 自动展开,只留点击 toggle(原生 button 覆盖 Enter/Space/触屏,删掉了会双触发的显式 keydown 处理器);② 折叠推广到所有面板顶部说明,含点名的总体概览-运行监测(其 gap=MONITORING_FAULT_GAP 原为头部外裸段落,一并收进)。八个 Note/gap 字段单表声明,保留原 data- 断言面,v-show 折叠信息不丢。t56 26/26 + 变异 8/8 + SFC 编译;t55/t20/t15/t27/t38/t39/t40/t43/t44/t50/t53/t54 回归全绿。t17/t18 导入期既有红与 t05 MapCanvas 既有红零交集。按 AGENTS.md 跳过 build/dev/browser。改动未提交。

local — 2026-10-19(第三轮)

维护者第三条反馈「故障口径说明也包含到摘要里去」:故障口径本身已在第二轮的 gap 条目里,但据此做完备性普查时发现折叠表本身不完备——真实注册表(15 个面板)的视图级说明字段并集是 11 个,表里只有 8 个。漏掉的 note / linkNote / excludedNote 在渲染层从来没有消费点,即「预警设置两族口径」「态势总览与基础设施的联动出口」「基础设施口径剔除」三句话在界面上是隐形的(既有缺陷,非折叠引入;excludedNote 正是票 17/20「口径剔除要看得见」的立场,落盘时只写了 domain)。本轮补齐三条 + 把完备性做成机制(行为层双向普查,不靠正则扫源码、不靠人记得去查),并限定提交入库。

Answer

第一轮(已实施,后被第二轮裁定覆盖):为运行概况顶部摘要增加紧凑 disclosure 入口,hover / focus 临时展开、click 固定展开。

第二轮(维护者 2026-10-17 两条反馈):

  1. 撤销 hover 自动展开——大屏上鼠标掠过就弹开等于没有折叠。现在只有一份状态 summaryOpen,初值 false,唯一 toggle 路径是原生 <button> 的 click(Enter / Space / 触屏点击都走同一条),组件里不再有 summaryHover / summaryFocus / summaryPinned。aria-expanded 绑定同一状态,aria-controls 按面板名唯一(多面板共存不串 target)。
  2. 推广到所有面板,含被点名的「总体概览-运行监测」(monitoringSummary):该面板原先把契约缺口 gap(MONITORING_FAULT_GAP)作为头部外的裸 <p> 常驻占高,现与其他说明一并折叠。折叠条目由 SUMMARY_SOURCES 单表声明;旧的独立渲染全部删除(变异 M6 证实「同一句话画两遍」会被抓住)。没有摘要的面板连头部都不画。

第三轮(维护者 2026-10-19「故障口径说明也包含到摘要里去」,最终形态):

故障口径已经在表里(gap 条目 → monitoringSummary 的 MONITORING_FAULT_GAP)。按这条反馈核验时做了完备性普查,暴露折叠表本身不完备:用真实注册表收集 15 个面板的视图级说明字段,并集 11 个,表里只有 8 个。漏掉的 note / linkNote / excludedNote 在渲染层从来没有消费点——「预警设置的两族口径说明」「态势总览与基础设施的联动出口说明」「基础设施的口径剔除」这些必须让值班人员看见的话,实际是隐形的。这是既有缺陷(excludedNote 正是票 17/20 立的「口径剔除要看得见」立场,落盘时只写了 domain、没写渲染层),本票把它一起接上。

把完备性做成机制(同票 44 对普查、票 49/50 对定位入口的立场,不靠人记得去查):

  • t56 闸门 C 组=行为层双向普查:用 panelView() 真算 15 个面板视图,「domain 声明的说明字段 ⊆ 折叠表」与「折叠表内字段仍有面板声明」两个方向都锁死;表外新增判红(会在界面隐形),表内无声明判红(死接线早晚漂移)。
  • 判据取真实视图对象而不是正则扫源码——正则会被换缩进/换行写法静默绕过(票 43 的「守卫比要守的东西窄就等于没守」)。变异 M8(把 gap 改名成表外字段名)与 M9(domain 新增说明字段不进表)实测都能被当场抓住。
  • 覆盖度哨兵:普查必须真的见到 ≥12 个面板视图、并集含 gap/note/linkNote/excludedNote/offlineNote/pageNote,防止守卫自己被写窄。

不丢信息的机制:折叠用 v-show(不是 v-if),文本始终在 DOM;每条保留原有 data-* 选择器(另加 data-summary="<键>"),既有走查脚本 t17/t18/t20 零改动、读的还是同一句 domain 文案。措辞与有无全部由 domain 决定,渲染层不重写、不合成、不按面板名分支(票 18 解耦与票 05 的裸字段守卫仍然成立)。折叠态读数不谎报:有离线显示「有离线设备」,gap || note || excludedNote 任一存在显示「有口径提示」(三类口径说明同档,不得在折叠态被读成「一切正常」),否则显示条数。布局 flex: 1 1 100% 独占头部一行,详情区 overflow-wrap: anywhere,等宽 ISO 时间串不顶出横向溢出(票 13 的「右侧被裁」同类缺陷)。

验证(第三轮终态):t56 闸门 32/32 + 变异闸 9/9 打红并按字节还原(M1 hover 复活 / M2 漏条目 / M3 改 v-if / M4 默认展开 / M5 aria 写死 / M6 gap 裸渲染 / M7 撤下 note 条目 / M8 故障口径改挂表外字段名 / M9 domain 新增说明字段不进表)+ SFC 编译自检。回归全绿:t55 5/5、t20 66/66、t15 11/11、t27、t38 68、t39 24、t40 16、t43 23、t44 109、t50 30、t53 29、t54 24;t05 的 PanelBlocks 三条守卫绿。普查证据留在 verify/artifacts/t56/(字段并集与缩进覆盖探针)。

如实记录既有红(与本票零交集,未触碰):t17/t18 导入期即 SyntaxError(infrastructurePanels.js 缺 MANAGEMENT_REGION_GAP、filterOptions.js 缺 REGION_MAP_GAP 导出,票 50/51 已留档);t05 的 282/283 唯一红是 MapCanvas.vue 裸字段(并行在制品改动)。

入库:按 AGENTS.md 跳过 build/dev/browser;本票只动 components/PanelBlocks.vue(domain 零改动,说明字段本来就由 domain 单源给出)。工作树混有并行票在制品,以临时 index 的 plumbing 限定提交(6deb474,只含本票 9 个路径:PanelBlocks 的本票 hunks + map.md 本票两行 + 票面/三份闸门/三份探针),未触碰他人暂存区与工作树;已推送 origin/master(快进,携带中间两个并行会话已关闭提交 c88296e/147bced)。