feat(ai): Phase 1C 管理看板 — 用量/成本/功能开关三合一
- UsageService 新增 get_daily_usage + aggregate_daily 日聚合能力 - 新增 3 个管理端点: /ai/admin/daily-usage, /ai/admin/flags (GET+POST) - AiUsageDashboard 扩展为三 Tab: 用量概览/成本分析/功能开关 - 功能开关支持 Switch 实时切换,权限码 ai.admin.flags - 日聚合用量 30 天趋势表,含 Token/成本汇总统计
This commit is contained in:
@@ -45,6 +45,22 @@ export interface CostEstimate {
|
||||
currency: string;
|
||||
}
|
||||
|
||||
export interface DailyUsageRow {
|
||||
date: string;
|
||||
feature: string;
|
||||
provider: string;
|
||||
model: string;
|
||||
total_calls: number;
|
||||
total_input_tokens: number;
|
||||
total_output_tokens: number;
|
||||
total_cost_cents: number;
|
||||
}
|
||||
|
||||
export interface FeatureFlag {
|
||||
feature: string;
|
||||
is_enabled: boolean;
|
||||
}
|
||||
|
||||
export const usageApi = {
|
||||
overview: async () => {
|
||||
const resp = await client.get('/ai/usage/overview');
|
||||
@@ -74,4 +90,18 @@ export const usageApi = {
|
||||
const resp = await client.get('/ai/cost/estimate', { params });
|
||||
return resp.data.data as CostEstimate;
|
||||
},
|
||||
getDailyUsage: async (startDate: string, endDate: string) => {
|
||||
const resp = await client.get('/ai/admin/daily-usage', {
|
||||
params: { start_date: startDate, end_date: endDate },
|
||||
});
|
||||
return resp.data.data as DailyUsageRow[];
|
||||
},
|
||||
getFeatureFlags: async () => {
|
||||
const resp = await client.get('/ai/admin/flags');
|
||||
return resp.data.data as FeatureFlag[];
|
||||
},
|
||||
updateFeatureFlag: async (feature: string, enabled: boolean) => {
|
||||
const resp = await client.post('/ai/admin/flags', { feature, enabled });
|
||||
return resp.data.data as { feature: string; enabled: boolean };
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user