909 行的单文件 api.ts 按域拆为 10 个模块 + 共享 client;barrel 保持 import from '../api' 不变,调用点零改动。 - api/client.ts:axios 实例 + 拦截器 + authToken + setOnUnauthorized (唯一住处)。 - 10 个域模块:auth / targets / scenarios / modelConfigs / runs / reports / stats / campaigns / intelligentEvals / files,每个 自包含类型声明与 API 方法。 - api/index.ts:barrel 再导出,调用点 import 路径全部不变。 - 原 api.ts 中的 Blob 导出仪式已在 Commit 4 下沉至 utils/download.ts,本 commit 仅做拆分与搬运。
35 lines
833 B
TypeScript
35 lines
833 B
TypeScript
import api from './client'
|
|
import type { Run, RunTrigger } from './runs'
|
|
|
|
export interface ScenarioStat {
|
|
scenario_id: string
|
|
scenario_name: string
|
|
run_count: number
|
|
avg_pass_rate: number | null
|
|
last_run_at: string | null
|
|
}
|
|
|
|
export interface DashboardStats {
|
|
targets_count: number
|
|
scenarios_count: number
|
|
runs_count: number
|
|
model_configs_count: number
|
|
today_runs: number
|
|
running_count: number
|
|
overall_pass_rate: number | null
|
|
trigger_breakdown: Partial<Record<RunTrigger, number>>
|
|
scenario_stats: ScenarioStat[]
|
|
recent_runs: Run[]
|
|
}
|
|
|
|
export interface TrendPoint {
|
|
date: string
|
|
pass_rate: number
|
|
run_count: number
|
|
}
|
|
|
|
export const statsApi = {
|
|
dashboard: () => api.get<DashboardStats>('/stats/dashboard'),
|
|
trend: (days?: number) => api.get<TrendPoint[]>('/stats/trend', { params: { days } }),
|
|
}
|