mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-29 09:37:37 +08:00
feat(db): add usage tracking schema and types
Add database tables for proxy request logs and model pricing. Extend Provider and error types to support usage statistics.
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
// 使用统计相关类型定义
|
||||
|
||||
export interface TokenUsage {
|
||||
inputTokens: number;
|
||||
outputTokens: number;
|
||||
cacheReadTokens: number;
|
||||
cacheCreationTokens: number;
|
||||
}
|
||||
|
||||
export interface RequestLog {
|
||||
requestId: string;
|
||||
providerId: string;
|
||||
appType: string;
|
||||
model: string;
|
||||
inputTokens: number;
|
||||
outputTokens: number;
|
||||
cacheReadTokens: number;
|
||||
cacheCreationTokens: number;
|
||||
inputCostUsd: string;
|
||||
outputCostUsd: string;
|
||||
cacheReadCostUsd: string;
|
||||
cacheCreationCostUsd: string;
|
||||
totalCostUsd: string;
|
||||
latencyMs: number;
|
||||
statusCode: number;
|
||||
errorMessage?: string;
|
||||
createdAt: number;
|
||||
}
|
||||
|
||||
export interface ModelPricing {
|
||||
modelId: string;
|
||||
displayName: string;
|
||||
inputCostPerMillion: string;
|
||||
outputCostPerMillion: string;
|
||||
cacheReadCostPerMillion: string;
|
||||
cacheCreationCostPerMillion: string;
|
||||
}
|
||||
|
||||
export interface UsageSummary {
|
||||
totalRequests: number;
|
||||
totalCost: string;
|
||||
totalInputTokens: number;
|
||||
totalOutputTokens: number;
|
||||
successRate: number;
|
||||
}
|
||||
|
||||
export interface DailyStats {
|
||||
date: string;
|
||||
requestCount: number;
|
||||
totalCost: string;
|
||||
totalTokens: number;
|
||||
}
|
||||
|
||||
export interface ProviderStats {
|
||||
providerId: string;
|
||||
providerName: string;
|
||||
requestCount: number;
|
||||
totalTokens: number;
|
||||
totalCost: string;
|
||||
successRate: number;
|
||||
avgLatencyMs: number;
|
||||
}
|
||||
|
||||
export interface ModelStats {
|
||||
model: string;
|
||||
requestCount: number;
|
||||
totalTokens: number;
|
||||
totalCost: string;
|
||||
avgCostPerRequest: string;
|
||||
}
|
||||
|
||||
export interface LogFilters {
|
||||
providerId?: string;
|
||||
model?: string;
|
||||
statusCode?: number;
|
||||
startDate?: number;
|
||||
endDate?: number;
|
||||
}
|
||||
|
||||
export interface ProviderLimitStatus {
|
||||
providerId: string;
|
||||
dailyUsage: string;
|
||||
dailyLimit?: string;
|
||||
dailyExceeded: boolean;
|
||||
monthlyUsage: string;
|
||||
monthlyLimit?: string;
|
||||
monthlyExceeded: boolean;
|
||||
}
|
||||
|
||||
export type TimeRange = '7d' | '30d' | '90d';
|
||||
|
||||
export interface StatsFilters {
|
||||
timeRange: TimeRange;
|
||||
providerId?: string;
|
||||
appType?: string;
|
||||
}
|
||||
Reference in New Issue
Block a user