3.0 KiB
3.0 KiB
Why
当前前端统计指标存在三个层面的问题:(1)计算逻辑缺陷——可用率无时间窗口导致历史数据稀释近期变化、computeTrendStats 从百分比反推整数有精度损失、lastCheckTime 返回但未展示;(2)指标维度单一——Summary 只有计数、Drawer 统计区 4 个指标本质是同一维度的重复表达、表格缺少连续状态等关键运维信息;(3)缺少性能和可靠性指标——无 P95 延迟、无 MTTR、无故障分析。
What Changes
- 计算逻辑修复:可用率查询增加时间窗口参数(默认 24h);Trend API 直接返回
upChecks消除前端反推精度损失;Summary 展示lastCheckTime相对时间 - Summary 增强:新增第 4 张卡片「24h 异常事件数」(状态翻转计数)
- 表格增强:新增「连续状态」列,Tag 样式展示连续正常/异常次数
- Drawer 统计区重构:从冗余的 4 指标改为多维度布局(可用率 / 平均延迟 / P95 延迟 / 检查总数),支持时间窗口切换(24h/7d/30d)联动
- Drawer 可靠性区块:新增 MTTR / 最长故障 / 故障次数 / 连续正常 4 个指标,与统计区合并为 2×4 布局
- 趋势图增强:增加延迟范围面积图(min/max),去掉可用率线改为异常时刻红色标记点
- 新增 Stats API:
GET /api/targets/:id/stats端点,返回 P95(应用层排序计算)、MTTR、故障分析等深度统计
Capabilities
New Capabilities
target-stats-api: 单目标深度统计 API 端点,提供 P95/P99 延迟、MTTR、故障分析等非时序聚合指标
Modified Capabilities
probe-api: Summary API 增加incidents24h字段;Targets API 可用率改为固定 24h 窗口;Trend API 增加upChecks/minDurationMs/maxDurationMs字段probe-data-store:getAllTargetStats/getTargetStats增加时间窗口参数;getTrend增加 min/max 聚合;新增异常事件计数和检查序列查询方法probe-dashboard: Summary Cards 从 3 张扩展为 4 张,增加lastCheckTime展示target-table: 新增「连续状态」列(Tag 样式),可用率列标题改为"可用率(24h)"target-detail-drawer: 概览面板统计区重构为 2×4 多维度布局,趋势图改为延迟范围面积图+异常标记点,删除 computeTrendStats,StatusDonut 数据来源改为 statsData
Impact
- 后端:
src/server/checker/store.ts增加带时间窗口的查询方法和新统计方法;新增src/server/routes/stats.ts路由 - 共享类型:
src/shared/api.ts扩展SummaryResponse、TargetStatus、TrendPoint,新增TargetStatsResponse类型 - 前端组件:
SummaryCards、OverviewTab、TrendChart、target-table-columns均需修改;新增连续状态 Tag 组件 - 前端工具:
utils/stats.ts的computeTrendStats删除(不再有调用方) - API 端点:新增
/api/targets/:id/stats;修改/api/summary、/api/targets、/api/targets/:id/trend的响应结构