feat(stats): 添加 Provider 性能统计分析

This commit is contained in:
Entropy.Xu
2026-05-05 11:24:16 +08:00
parent 627eb4f335
commit ff1ed8b57d
17 changed files with 1683 additions and 22 deletions

View File

@@ -0,0 +1,53 @@
import { describe, expect, it } from 'vitest'
import {
buildProviderPerformanceChartData,
formatProviderPerformanceMetric,
} from '../performanceAnalysisHelpers'
import type { ProviderPerformanceItem, ProviderPerformanceTimelineItem } from '@/api/admin'
describe('performanceAnalysisHelpers', () => {
it('formats null provider metrics as placeholders', () => {
expect(formatProviderPerformanceMetric(null, 'ms')).toBe('-')
expect(formatProviderPerformanceMetric(undefined, '/s')).toBe('-')
expect(formatProviderPerformanceMetric(Number.NaN)).toBe('-')
expect(formatProviderPerformanceMetric(18.456, '/s')).toBe('18.46/s')
})
it('builds stable provider trend datasets with null gaps', () => {
const providers: Pick<ProviderPerformanceItem, 'provider_id' | 'provider'>[] = [
{ provider_id: 'provider-a', provider: 'OpenAI' },
{ provider_id: 'provider-b', provider: 'Anthropic' },
]
const timeline: ProviderPerformanceTimelineItem[] = [
{
date: '2024-03-21',
provider_id: 'provider-a',
provider: 'OpenAI',
request_count: 2,
output_tokens: 100,
avg_output_tps: 25,
avg_first_byte_time_ms: 120,
avg_response_time_ms: 1000,
success_rate: 100,
},
{
date: '2024-03-22',
provider_id: 'provider-b',
provider: 'Anthropic',
request_count: 1,
output_tokens: 40,
avg_output_tps: null,
avg_first_byte_time_ms: 220,
avg_response_time_ms: 1500,
success_rate: 100,
},
]
const chart = buildProviderPerformanceChartData(timeline, 'avg_output_tps', providers)
expect(chart.labels).toEqual(['2024-03-21', '2024-03-22'])
expect(chart.datasets.map(dataset => dataset.label)).toEqual(['OpenAI', 'Anthropic'])
expect(chart.datasets[0].data).toEqual([25, null])
expect(chart.datasets[1].data).toEqual([null, null])
})
})