feat(health): refine health monitor metrics

- add TPS to model and provider health payloads

- exclude user-cancelled 499 requests from health statistics

- update model/provider health cards with average latency, average TTFB, TPS, and availability
This commit is contained in:
AAEE86
2026-06-01 18:34:51 +08:00
parent 6c2a57f237
commit 7ffe33f867
11 changed files with 366 additions and 172 deletions
+9
View File
@@ -272,6 +272,7 @@ const MOCK_MODEL_STATUS = {
success_rate: 0.9896,
avg_latency_ms: 1736,
avg_first_byte_ms: 176,
avg_tps: 84.6,
provider_count: 3,
last_event_at: new Date().toISOString(),
events: generateHealthEvents(60, 0.989, 0.008, 0.003, 1600, 460),
@@ -288,6 +289,7 @@ const MOCK_MODEL_STATUS = {
success_rate: 0.9751,
avg_latency_ms: 1280,
avg_first_byte_ms: 221,
avg_tps: 76.2,
provider_count: 2,
last_event_at: new Date().toISOString(),
events: generateHealthEvents(60, 0.975, 0.02, 0.005, 1200, 520),
@@ -304,6 +306,7 @@ const MOCK_MODEL_STATUS = {
success_rate: 0.9517,
avg_latency_ms: 940,
avg_first_byte_ms: 184,
avg_tps: 101.8,
provider_count: 2,
last_event_at: new Date().toISOString(),
events: generateHealthEvents(55, 0.952, 0.04, 0.008, 860, 300),
@@ -320,6 +323,7 @@ const MOCK_MODEL_STATUS = {
success_rate: 0.835,
avg_latency_ms: 2310,
avg_first_byte_ms: 420,
avg_tps: 38.4,
provider_count: 1,
last_event_at: new Date().toISOString(),
events: generateHealthEvents(45, 0.835, 0.145, 0.02, 2200, 780),
@@ -344,6 +348,7 @@ const MOCK_PROVIDER_HEALTH_STATUS = {
success_rate: 0.9896,
avg_latency_ms: 1736,
avg_first_byte_ms: 176,
avg_tps: 84.6,
model_count: 2,
last_event_at: new Date().toISOString(),
timeline: generateHealthTimeline(0.9, 0.05),
@@ -362,6 +367,7 @@ const MOCK_PROVIDER_HEALTH_STATUS = {
success_rate: 0.9751,
avg_latency_ms: 1280,
avg_first_byte_ms: 221,
avg_tps: 76.2,
model_count: 1,
last_event_at: new Date().toISOString(),
timeline: generateHealthTimeline(0.84, 0.09),
@@ -380,6 +386,7 @@ const MOCK_PROVIDER_HEALTH_STATUS = {
success_rate: 0.9517,
avg_latency_ms: 940,
avg_first_byte_ms: 184,
avg_tps: 101.8,
model_count: 1,
last_event_at: new Date().toISOString(),
timeline: generateHealthTimeline(0.78, 0.14),
@@ -398,6 +405,7 @@ const MOCK_PROVIDER_HEALTH_STATUS = {
success_rate: 1,
avg_latency_ms: null,
avg_first_byte_ms: null,
avg_tps: null,
model_count: 0,
last_event_at: null,
timeline: Array.from({ length: 60 }, () => 'unknown'),
@@ -1584,6 +1592,7 @@ const mockHandlers: Record<string, (config: AxiosRequestConfig) => Promise<Axios
success_rate: model.success_rate,
avg_latency_ms: model.avg_latency_ms,
avg_first_byte_ms: model.avg_first_byte_ms,
avg_tps: model.avg_tps,
last_event_at: model.last_event_at,
events: model.events.slice(0, 10),
timeline: model.timeline,