feat: 新增两个 OpenSpec 变更提案 — CMD Checker 增强与前端指标增强
This commit is contained in:
33
openspec/changes/enhance-frontend-metrics/proposal.md
Normal file
33
openspec/changes/enhance-frontend-metrics/proposal.md
Normal file
@@ -0,0 +1,33 @@
|
||||
## 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` 的响应结构
|
||||
Reference in New Issue
Block a user