mirror of
https://github.com/zyycn/codex-proxy-rs.git
synced 2026-11-13 08:06:41 +00:00
134 lines
2.9 KiB
TypeScript
134 lines
2.9 KiB
TypeScript
import { requestJson } from '../request'
|
|
|
|
export type DashboardTrendKind = 'usage' | 'latency' | 'errors'
|
|
|
|
export interface DashboardSummary {
|
|
cards: DashboardCards
|
|
trend: DashboardTrend
|
|
accountUsage: DashboardAccountUsage[]
|
|
serviceStatuses: DashboardServiceStatus[]
|
|
eventLogs: DashboardEventLog[]
|
|
poolSummary: DashboardAccountPoolSummary
|
|
capacityInfo: DashboardAccountCapacityInfo
|
|
rotationStrategy?: string
|
|
}
|
|
|
|
export interface DashboardCards {
|
|
accounts: DashboardAccountsCard
|
|
traffic: DashboardTrafficCard
|
|
tokens: DashboardTokenCard
|
|
cache: DashboardCacheCard
|
|
}
|
|
|
|
export interface DashboardAccountsCard {
|
|
total: number
|
|
enabled: number
|
|
abnormal: number
|
|
}
|
|
|
|
export interface DashboardTrafficCard {
|
|
todayRequests: number
|
|
yesterdayRequests: number
|
|
totalRequests: number
|
|
rpm: number
|
|
tpm: number
|
|
}
|
|
|
|
export interface DashboardTokenCard {
|
|
todayTokens: number
|
|
yesterdayTokens: number
|
|
totalTokens: number
|
|
todayCostUsd?: number | null
|
|
totalCostUsd?: number | null
|
|
}
|
|
|
|
export interface DashboardCacheCard {
|
|
todayHitRate?: number | null
|
|
yesterdayHitRate?: number | null
|
|
totalHitRate?: number | null
|
|
totalCachedTokens: number
|
|
firstTokenLatencyMs?: number | null
|
|
completionLatencyMs?: number | null
|
|
}
|
|
|
|
export interface DashboardTrend {
|
|
kind: DashboardTrendKind
|
|
points: DashboardTrendPoint[]
|
|
summary: DashboardTrendSummary[]
|
|
}
|
|
|
|
export interface DashboardTrendPoint {
|
|
time: string
|
|
requests: number
|
|
inputTokens: number
|
|
outputTokens: number
|
|
cachedTokens: number
|
|
tokens: number
|
|
errors: number
|
|
latency: number
|
|
maxLatency: number
|
|
minLatency: number
|
|
successRate: number
|
|
}
|
|
|
|
export interface DashboardTrendSummary {
|
|
label: string
|
|
value: number
|
|
ratio?: number | null
|
|
}
|
|
|
|
export interface DashboardAccountUsage {
|
|
name: string
|
|
email: string
|
|
plan: string
|
|
requests: number
|
|
tokens: number
|
|
quotaUsedPercent?: number | null
|
|
lastUsed: string
|
|
status: 'active' | 'expired' | 'disabled' | 'banned' | 'quota_exhausted' | 'refreshing'
|
|
}
|
|
|
|
export interface DashboardEventLog {
|
|
id: string
|
|
time: string
|
|
level: 'debug' | 'info' | 'warn' | 'error'
|
|
requestId?: string
|
|
route?: string
|
|
model?: string
|
|
statusCode?: number
|
|
latencyMs?: number
|
|
}
|
|
|
|
export interface DashboardServiceStatus {
|
|
label: string
|
|
value: string
|
|
detail: string
|
|
tone: 'normal' | 'info' | 'success' | 'warning' | 'danger'
|
|
}
|
|
|
|
export interface DashboardAccountPoolSummary {
|
|
total: number
|
|
active: number
|
|
expired: number
|
|
quotaExhausted: number
|
|
refreshing: number
|
|
disabled: number
|
|
banned: number
|
|
}
|
|
|
|
export interface DashboardAccountCapacityInfo {
|
|
maxConcurrentPerAccount: number
|
|
totalSlots: number
|
|
usedSlots: number
|
|
availableSlots: number
|
|
}
|
|
|
|
export function getDashboardSummary() {
|
|
return requestJson<DashboardSummary>('/api/admin/dashboard/summary')
|
|
}
|
|
|
|
export function getDashboardTrend(kind: DashboardTrendKind) {
|
|
const params = new URLSearchParams({ kind })
|
|
return requestJson<DashboardTrend>(`/api/admin/dashboard/trend?${params}`)
|
|
}
|