fix: 表格完整显示 + 事件区块样式重做 + 探测范围可选(probeScope)

1) 表格显示不全
   table-layout:fixed 保证不横向滚动后,列内仍是 nowrap,实测长 URL 被截
   388px、名称截 219px、可用率条截 35px(1440 宽共 14 个单元格)。
   改为允许换行(地址 break-all)并重排列宽 —— 数据完整且仍零横向滚动。

2) 最近事件完全没样式
   根因:上次追加 CSS 的命令是 `node --check app.js && cat >> style.css`,
   --check 报错导致 && 短路,CSS 从未写入(只有 HTML 裸奔)。
   本次用编辑器写入;同时重做为时间线样式(竖线 + 类型着色圆点 + 左描边)、
   名称列按内容自适应(消除大片空白)、默认折叠最近 8 条可展开全部。

3) dataFilter=uptimerobot 时仍在探测本地目标
   新增 settings.probeScope(all|config|uptimerobot),不填则跟随 dataFilter;
   显式设 all 可保留探测。启动日志打印当前口径与范围。

顺带修复两个连带问题:
- UR 镜像目标此前不产生事件也不告警(evaluateRound 只遍历本地目标),
  配 uptimerobot 口径等于收不到任何提醒 —— 现在两类目标统一纳入
- 去抖计数被评估频率放大:evaluateRound 每秒执行,原实现每次评估都
  failStreak+1,持续离线目标 1 秒即达阈值告警。改为按探测时间戳去重,
  且无状态变化时不再反复落盘

测试:verify-views [J] 扩到 11 条(长内容不截断/仍不滚动/时间线布局/
类型着色/折叠展开),verify-notify 新增 [D3] 4 条(范围跟随、不再探测本地、
显式 all 恢复、与展示口径解耦)+ 去抖计数断言。六套 170 项全通过。
This commit is contained in:
tamakyi
2026-10-14 10:22:05 +08:00
parent 4bb5296525
commit 25b8b97970
14 changed files with 858 additions and 672 deletions
+17 -1
View File
@@ -117,7 +117,8 @@ shiroko-monitor/
"theme": "shiroko", // shiroko(砂狼白子)| default
"artwork": "", // 立绘图片路径(相对 public/),留空则不显示
"decoOpacity": 0.78, // 人物/单车装饰的全局透明度(0~1,一个值同时作用于两者)
"dataFilter": "both", // both | config | uptimerobot(详见「面板形态与数据源」)
"dataFilter": "both", // 展示口径:both | config | uptimerobot(详见「面板形态与数据源」)
"probeScope": "all", // 探测范围:all | config | uptimerobot;不填则**跟随 dataFilter**
"refreshInterval": 30, // 面板检查数据的最大间隔(秒,最小 5);实际对齐服务端更新节奏
"dataSource": "auto", // auto | api | static | browser
"allowRefresh": true, // 是否允许触发强制探测(公网部署建议 false;详见 docs/SECURITY.md)
@@ -539,6 +540,21 @@ UptimeRobot 的探测来自其多个节点,适合作为**异地视角**与自
- [x] 页脚改为展示「数据更新于 … + 下次检查 Ns」,tooltip 内含服务端更新节奏与快照生成时间
- [x] `scripts/verify.cjs` 适配纯外部数据源部署(自动跳过不适用的探测类断言),并新增「倒计时对齐服务端」断言
### v0.11.1 已实现
**修复你反馈的三个问题**
- [x] **表格显示不全**:`table-layout: fixed` 保证了不横向滚动,但列内仍是 `nowrap`,实测**长 URL 被截掉 388px、名称截掉 219px、可用率条截掉 35px**(1440 宽下共 14 个单元格被截断)。改为**允许换行**(地址 `break-all`、名称/结果 `overflow-wrap: anywhere`)并重排列宽比例——数据完整显示且**仍然零横向滚动**(已加断言:注入超长名称/地址后截断单元格 = 0)
- [x] **「最近事件」完全没样式**:原因是上次追加 CSS 的命令是 `node --check app.js && cat >> style.css`,`--check` 报错导致 `&&` 短路,**CSS 根本没写进文件**(只有 HTML 裸奔)。这次用编辑器写入并加了断言。同时**重做为时间线样式**:左侧竖线 + 按类型着色的圆点、类型徽标、左描边分色;避免短名称后面拖出大片空白(名称列按内容自适应);**默认折叠为最近 8 条**,可「展开全部 N 条」
- [x] **`dataFilter: uptimerobot` 仍在探测本地目标**:新增 `settings.probeScope`(`all` / `config` / `uptimerobot`),**不填则跟随 `dataFilter`** —— 只展示一个来源时不再探测另一个来源的目标(省资源、少打扰);想保留探测可显式设 `"probeScope": "all"`。启动日志会明确打印当前口径与范围
**顺带修掉两个连带问题**
- [x] **UR 镜像目标此前不产生事件也不告警**:`evaluateRound` 只遍历本地配置目标,而配了 `uptimerobot` 口径时你关心的恰恰是 UR 目标 —— 等于「收不到任何提醒」。现在两类目标统一纳入事件与告警
- [x] **去抖计数被评估频率放大**:`evaluateRound` 每秒被调用,原来每次评估都让 `failStreak +1`,一个持续离线的目标 1 秒就凑够「连续 2 次失败」触发告警。改为**按探测时间戳去重**,只在真正产生新结果的那一轮累加;同时无状态变化时不再反复落盘
**测试**:`verify-views` [J] 段扩到 11 条(长内容不截断 / 仍不滚动 / 事件时间线布局 / 类型着色 / 折叠与展开),`verify-notify` 新增 [D3] 4 条(探测范围跟随、不再探测本地、显式 all 恢复探测、探测范围与展示口径解耦)与去抖计数断言。
### v0.11.0 已实现(P1 收尾)
- [x] **「最近事件」面板区块**:监控列表下方展示最近 20 条状态翻转(故障 / 恢复 / 证书 / 维护),无事件自动隐藏;窄屏隐藏「详情」列