1
0
Files
DiAL/openspec/changes/enhance-frontend-metrics/proposal.md

3.0 KiB
Raw Blame History

Why

当前前端统计指标存在三个层面的问题1计算逻辑缺陷——可用率无时间窗口导致历史数据稀释近期变化、computeTrendStats 从百分比反推整数有精度损失、lastCheckTime 返回但未展示2指标维度单一——Summary 只有计数、Drawer 统计区 4 个指标本质是同一维度的重复表达、表格缺少连续状态等关键运维信息3缺少性能和可靠性指标——无 P95 延迟、无 MTTR、无故障分析。

What Changes

  • 计算逻辑修复:可用率查询增加时间窗口参数(默认 24hTrend API 直接返回 upChecks 消除前端反推精度损失Summary 展示 lastCheckTime 相对时间
  • Summary 增强:新增第 4 张卡片「24h 异常事件数」(状态翻转计数)
  • 表格增强新增「连续状态」列Tag 样式展示连续正常/异常次数
  • Drawer 统计区重构:从冗余的 4 指标改为多维度布局(可用率 / 平均延迟 / P95 延迟 / 检查总数支持时间窗口切换24h/7d/30d联动
  • Drawer 可靠性区块:新增 MTTR / 最长故障 / 故障次数 / 连续正常 4 个指标,与统计区合并为 2×4 布局
  • 趋势图增强增加延迟范围面积图min/max去掉可用率线改为异常时刻红色标记点
  • 新增 Stats APIGET /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 多维度布局,趋势图改为延迟范围面积图+异常标记点,删除 computeTrendStatsStatusDonut 数据来源改为 statsData

Impact

  • 后端src/server/checker/store.ts 增加带时间窗口的查询方法和新统计方法;新增 src/server/routes/stats.ts 路由
  • 共享类型src/shared/api.ts 扩展 SummaryResponseTargetStatusTrendPoint,新增 TargetStatsResponse 类型
  • 前端组件SummaryCardsOverviewTabTrendCharttarget-table-columns 均需修改;新增连续状态 Tag 组件
  • 前端工具utils/stats.tscomputeTrendStats 删除(不再有调用方)
  • API 端点:新增 /api/targets/:id/stats;修改 /api/summary/api/targets/api/targets/:id/trend 的响应结构