feat(dashboard): add per-user drill-down for group, model, and endpoint distributions

Click on a group name, model name, or endpoint name in the distribution
tables to expand and show per-user usage breakdown (requests, tokens,
actual cost, standard cost).

Backend: new GET /admin/dashboard/user-breakdown API with group_id,
model, endpoint, endpoint_type filters.
Frontend: clickable rows with expand/collapse sub-table in all three
distribution charts.
This commit is contained in:
erio
2026-03-16 21:31:52 +08:00
parent f42c8f2abe
commit 4b41e898a4
16 changed files with 474 additions and 74 deletions

View File

@@ -12,6 +12,7 @@ import type {
ApiKeyUsageTrendPoint,
UserUsageTrendPoint,
UserSpendingRankingResponse,
UserBreakdownItem,
UsageRequestType
} from '@/types'
@@ -156,6 +157,29 @@ export async function getGroupStats(params?: GroupStatsParams): Promise<GroupSta
return data
}
export interface UserBreakdownParams {
start_date?: string
end_date?: string
group_id?: number
model?: string
endpoint?: string
endpoint_type?: 'inbound' | 'upstream' | 'path'
limit?: number
}
export interface UserBreakdownResponse {
users: UserBreakdownItem[]
start_date: string
end_date: string
}
export async function getUserBreakdown(params: UserBreakdownParams): Promise<UserBreakdownResponse> {
const { data } = await apiClient.get<UserBreakdownResponse>('/admin/dashboard/user-breakdown', {
params
})
return data
}
/**
* Get dashboard snapshot v2 (aggregated response for heavy admin pages).
*/