feat: 前端指标体系增强 — Dashboard/Metrics API、2×4 统计区、趋势图面积+异常标记、连续状态列
- 新增 GET /api/dashboard 合并原 summary+targets 首屏接口 - 新增 GET /api/targets/:id/metrics 合并原 stats+trend 概览接口 - 后端指标纯函数:可用率、百分位、故障段分析、连续状态、UTC 小时分桶 - ProbeStore 窗口取数方法替代全量历史查询 - SummaryCards 扩展为 4 卡片(新增异常事件数)+ 数据新鲜度展示 - 表格新增「连续」列(Tag 渲染 capped 状态) - OverviewTab 重构为 2×4 Statistic 多维度布局 - TrendChart 改为延迟范围面积图 + 红色异常标记点 - 删除旧路由(summary/targets/trend)和 computeTrendStats - 同步 delta specs 到主 specs 并归档变更
This commit is contained in:
@@ -20,6 +20,28 @@ export interface CheckResult {
|
||||
timestamp: string;
|
||||
}
|
||||
|
||||
export interface CurrentStreak {
|
||||
capped?: boolean;
|
||||
count: number;
|
||||
up: boolean;
|
||||
}
|
||||
|
||||
export interface DashboardResponse {
|
||||
summary: {
|
||||
down: number;
|
||||
incidents: number;
|
||||
lastCheckTime: null | string;
|
||||
total: number;
|
||||
up: number;
|
||||
window: {
|
||||
from: string;
|
||||
label: string;
|
||||
to: string;
|
||||
};
|
||||
};
|
||||
targets: TargetStatus[];
|
||||
}
|
||||
|
||||
export interface HealthResponse {
|
||||
ok: true;
|
||||
service: "dial-server";
|
||||
@@ -45,19 +67,38 @@ export interface RecentSample {
|
||||
|
||||
export type RuntimeMode = "development" | "production" | "test";
|
||||
|
||||
export interface SummaryResponse {
|
||||
down: number;
|
||||
lastCheckTime: null | string;
|
||||
total: number;
|
||||
up: number;
|
||||
export interface TargetMetricsResponse {
|
||||
stats: {
|
||||
availability: number;
|
||||
avgDurationMs: null | number;
|
||||
currentStreak: CurrentStreak | null;
|
||||
downChecks: number;
|
||||
incidentCount: number;
|
||||
longestOutage: null | number;
|
||||
mttr: null | number;
|
||||
p95DurationMs: null | number;
|
||||
p99DurationMs: null | number;
|
||||
totalChecks: number;
|
||||
upChecks: number;
|
||||
};
|
||||
targetId: number;
|
||||
trend: TrendPoint[];
|
||||
window: {
|
||||
bucket: "1h";
|
||||
from: string;
|
||||
to: string;
|
||||
};
|
||||
}
|
||||
|
||||
export interface TargetStats {
|
||||
availability: number;
|
||||
downChecks: number;
|
||||
totalChecks: number;
|
||||
upChecks: number;
|
||||
}
|
||||
|
||||
export interface TargetStatus {
|
||||
currentStreak: CurrentStreak | null;
|
||||
group: string;
|
||||
id: number;
|
||||
interval: string;
|
||||
@@ -72,6 +113,10 @@ export interface TargetStatus {
|
||||
export interface TrendPoint {
|
||||
availability: number;
|
||||
avgDurationMs: null | number;
|
||||
hour: string;
|
||||
bucketStart: string;
|
||||
downChecks: number;
|
||||
maxDurationMs: null | number;
|
||||
minDurationMs: null | number;
|
||||
totalChecks: number;
|
||||
upChecks: number;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user