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 仅做拆分与搬运。
14 lines
563 B
TypeScript
14 lines
563 B
TypeScript
import api from './client'
|
|
import { downloadBlob } from '../utils/download'
|
|
|
|
export const reportsApi = {
|
|
get: (runId: string) => api.get(`/reports/${runId}`),
|
|
download: async (runId: string, format: 'html' | 'json' | 'markdown') => {
|
|
const ext = format === 'markdown' ? 'md' : format
|
|
const res = await api.get(`/reports/${runId}/${format}`, { responseType: 'blob' })
|
|
downloadBlob(res.data as Blob, `report-${runId.slice(0, 8)}.${ext}`)
|
|
},
|
|
compare: (run1: string, run2: string) =>
|
|
api.get(`/reports/compare`, { params: { run1, run2 } }),
|
|
}
|