44-untitled.md 9.0 KB

前端执行票 —— 类型分布降序与统计条视觉密度优化

Label: ready-for-agent Category: frontend-execution

来源

承接票37收口时维护者反馈第3条。

范围

  1. 排查所有「类型分布」统计块是否真正使用设备数/点数降序排序;补齐遗漏块并添加稳定并列排序测试。
  2. 优化当前文字 + 颜色条的视觉模型:每行文字与统计条更紧密,条段之间有明确分割,增加轻量装饰/层次但不牺牲读数密度和可读性。
  3. 保持 EllipsisText、panel-action、全局 deviceType 筛选接缝不变。
  4. 验收:类型分布所有相关块按计数降序;并列稳定;桌面/窄面板可辨识;交互与已有横条图一致。

非目标

  • 不修改后端统计口径。
  • 不把固定语义顺序(状态、等级、生命周期)强行改为降序。

实施记录(2026-10-15,本会话)

状态:已实施、已入库、维护者确认收口(2026-10-15,本票关闭)。 改动随并行会话合批提交 bd45f27(标题即「票43/44 图表语义与分布排序…」)入库;本地未推送(分支领先 origin/master 26 提交,多为并行在制品,推送由维护者统筹,不代推)。

交付 1:完备性普查(范围第 1 条)

  • 排查结论:无遗漏块。新增离线闸门 t44-distribution-ranking.mjs:把故意打乱次序的后端载荷灌进真实适配层(toXxx → xxxPanel,14 个面板视图),对每一块 bars/donut/stacked 断言精确次序——普查是行为层,不是正则。票 37 的 t50 只钉住「监测概览·设备类型分布」一块;本票要的是「所有块」,只测一块等于没测完备性(票 20 教训:测试与实现同错时闸门照样绿)。
  • 期望表穷举且双向锁定:表外新分布块判红(新增块必须显式归类 RANK/FIXED——这就是「补齐遗漏块」的机制,不靠人记得查);表内期望若在面板里消失(块被改名/删除)也判红(表不许骗人)。
  • RANK 组(降序+并列保序)实测全部已生效:监测概览设备类型分布、监测分布覆盖三块、概览类型分布·行业构成·片区分布、预警设置行业/片区分布(票 42 族)、预警分析类型/行业/片区、基础档案行业/片区、应急保障区域分布。
  • FIXED 组(固定语义序未被强行降序)实测全部保持:异常桶(点/指标五桶字典序)、异常态势指标状态分布、生命周期状态、等级分布(语义阶梯)、建成年限(时间轴分桶)、工单状态 0–7 全铺。FIXED 断言带牙:期望本身必须非单调,否则证明不了没被重排。
  • 并列稳定性测试(范围第 1 条「添加稳定并列排序测试」):B1 全并列原样带出、并列次序跟传入不跟码值(手写 index 比较,不依赖引擎排序稳定性——票 37 条文复验);B2 并列行条长相同、全 0 不产生 NaN。
  • 闸门 103/103 全绿;变异闸 t44-mutations.mjs 6/6 全部打红(M1 排序改恒等→RANK 全红;M2 异常桶被强行降序→FIXED 红;M3 行距退回宽间距→B3 红;M4 删端帽→B4b 红;M5 删轨道发丝边→B4 红;M6 行标签退回裸 span→B7 红),每条变异后按字节还原并校验哈希。

交付 2:统计条视觉密度(范围第 2 条,PanelBlocks.vue 条形块 CSS,单区域改动)

  • 文字与条更紧密:条形行列间距 var(--space-2)(8u) → calc(4 * var(--u));行间距维持 2u(收紧的是行内,不是把行堆挤)。
  • 条段明确分割:① 删掉填充的 8px 外辉光 box-shadow: 0 0 8px——辉光越过 2u 行距渗进相邻条,正是「条段之间没有明确分割」的直接成因;② 轨道 5u→6u 并加 1u 内发丝描边(条段有了起止容器边界);③ 填充加 ::after 装饰层:顶部白色渐隐高光(层次)+ 右端 1px 亮色端帽(条段终点可辨),pointer-events:none 不挡悬停。装饰层与 tone 色无关(叠在任意分类色上成立)。
  • 读数密度与可读性不牺牲:读数列保持右对齐等宽数字;窄面板下标签列 64u/读数 26u 不变、收紧的列间距反而给轨道让出更多宽度。
  • 接缝零改动(范围第 3 条):EllipsisText 行标签、panel-action 只转发 actionKey、data-bar-* 走查断言面、悬停增亮与共享浮层交互、选中态不改条长口径——t44 B7/B8/B9 逐条静态守卫锁定,票 37 的 t50(30/30)与 A4 省略唯一性不回归。

验收对照(票面四条)

  1. 所有相关块按计数降序:普查 14 面板 × 全部分布块,RANK 全绿、FIXED 未被误伤(见上)。✅
  2. 并列稳定:B1/B2 + 变异 M1。✅
  3. 桌面/窄面板可辨识:维护者 2026-10-15 确认收口(目视/口头验收达成;此前按项目规则未自动运行 dev/截图走查)。✅
  4. 交互与已有横条图一致:交互代码零改动,守卫 B7/B8 锁定。✅

回归(离线可跑组)

  • 全绿:t44(103/103+变异6/6)、t50(30/30)、t15(11/11)、t27、t23、t16-stores、t16-alarm-order、t22、t42、t36;对提交态(bd45f27)复跑 t44/t50 仍全绿。
  • 既有红(均与本票 diff 零交集,归因沿用票 37/42 记录):t17/t18 崩溃于 import(REGION_MAP_GAP 等旧守卫 vs 现行字段漂移,HEAD 即如此);t20 60/66(B4/C2/D2b/D3/E2/F3 六条,票 42 已用 HEAD worktree 基线对照证实既有);t20-mutations 11/15(M5/M6/M8 变异锚点失配=脚本自身需修、M12 红错对象);t05 D1-overviewStore(已提交的 deviceStatistics = null 命中裸字段守卫,本票未动该文件)。这些既有红如需处置应另立票,不随本票关闭。

收口说明

  • 本票全部改动(PanelBlocks.vue 条形 CSS hunks,带「票 44」注释锚点 + 两个 verify 脚本)已随 bd45f27 入库;未推送——本地领先 origin/master 26 提交、多为并行在制品,推送由维护者统筹。
  • 维护者新增反馈若再落在这条视觉/排序线上,按票 37 成例另立执行票,不重开本票。

进度

  • 2026-10-15:认领并排查——普查结论「无遗漏块」,新增 t44 完备性闸门(103/103,双向锁定+并列稳定)与 t44 变异闸(6/6 打红);条形块视觉密度落地(收紧行内、删越界辉光、轨道发丝边、填充端帽+高光装饰层),三条接缝零改动由守卫锁定;离线回归全绿、既有红归因沿用票 37/42 记录。
  • 2026-10-15(收口更正):本票全部改动(PanelBlocks.vue 条形 CSS hunks + verify/t44-distribution-ranking.mjs + verify/t44-mutations.mjs)已由并行会话随提交 bd45f27(标题即「票43/44 图表语义与分布排序…」)入库——工作树对 PanelBlocks.vue 的 diff 已为空,HEAD 含「票 44」注释 hunks;对提交态复跑 t44 103/103、t50 30/30 全绿。bd45f27 本地未推送(分支领先 origin/master 26 提交,多为并行在制品,不代推)。
  • 2026-10-15:维护者确认收口,验收第 3 条达成;本票关闭,地图 Decisions so far 已追加。

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

Comments

local — 2026-10-15T03:47:52.674Z

执行中收口本轮(2026-10-15):① 排查结论——无遗漏块,但票 37 只测了一块不构成完备性证据,故新增 t44 普查闸门(14 面板视图 × 全部分布块,乱序载荷灌真实适配层,RANK 降序+并列保序 / FIXED 固定语义序双向锁定,103/103)与 t44 变异闸(6/6 打红、按字节还原)。② 视觉密度落地于 PanelBlocks.vue 条形块 CSS:行内间距 8u→4u、删 8px 越界辉光(条段糊邻行的直接成因)、轨道 6u+发丝内描边、填充 ::after 高光+端帽装饰层;EllipsisText/panel-action/data-bar-* 三条接缝零改动并由守卫锁定。③ 离线回归全绿(t50/t15/t27/t23/t16×2/t22/t42/t36);t17/t18/t20/t20-mutations/t05 既有红与本票 diff 零交集(归因沿用票 37/42 记录)。票保持 open:验收第 3 条「桌面/窄面板可辨识」待维护者授权走查或目视确认后关闭;改动未提交(工作树混有票 43/45/46/47 在制品,按「票 44」注释锚点单独裁剪)。

Answer

结论:无遗漏块 + 密度落地 + 三接缝零改动,四条验收全部达成(2026-10-15 维护者确认收口)。 排序完备性由 t44 普查闸门永久锁定(乱序载荷灌真实适配层、期望表双向锁定、变异 6/6 有牙)——此后任何新分布块不显式归类 RANK/FIXED 即判红,「补齐遗漏」从人工排查变成机制。视觉密度:条形行内 8u→4u、删 8px 越界辉光、轨道 6u+发丝内描边、填充 ::after 高光+端帽;读数密度与既有交互(悬停增亮/共享浮层/点击筛选)不变。改动随 bd45f27 入库(本地未推送,推送归维护者统筹)。