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

34 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 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 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 多维度布局,趋势图改为延迟范围面积图+异常标记点,删除 computeTrendStatsStatusDonut 数据来源改为 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` 的响应结构