route-claudecode
Version:
Advanced routing and transformation system for Claude Code outputs to multiple AI providers
107 lines • 2.62 kB
TypeScript
/**
* 响应统计管理器 - 记录每个provider和模型的响应数量
* Owner: Jason Zhang
*/
export interface CategoryStats {
totalResponses: number;
successfulResponses: number;
failedResponses: number;
streamingResponses: number;
nonStreamingResponses: number;
totalResponseTime: number;
averageResponseTime: number;
}
export interface ResponseStat {
providerId: string;
model: string;
totalResponses: number;
successfulResponses: number;
failedResponses: number;
streamingResponses: number;
nonStreamingResponses: number;
lastResponseTime: Date;
averageResponseTime: number;
totalResponseTime: number;
categories: {
[category: string]: CategoryStats;
};
}
export interface ProviderStats {
[providerId: string]: {
[model: string]: ResponseStat;
};
}
export declare class ResponseStatsManager {
private stats;
private startTime;
private logInterval;
private statsFilePath;
constructor();
/**
* 记录成功响应
*/
recordSuccess(providerId: string, model: string, responseTimeMs: number, isStreaming?: boolean): void;
/**
* 记录失败响应
*/
recordFailure(providerId: string, model: string, error: string, isStreaming?: boolean): void;
/**
* 获取或创建统计记录
*/
private getOrCreateStat;
/**
* 获取所有统计数据
*/
getAllStats(): ProviderStats;
/**
* 获取特定provider的统计
*/
getProviderStats(providerId: string): {
[model: string]: ResponseStat;
} | null;
/**
* 获取汇总统计
*/
getSummaryStats(): {
totalRequests: number;
totalProviders: number;
totalModels: number;
topProvider: {
providerId: string;
count: number;
} | null;
topModel: {
model: string;
count: number;
} | null;
overallSuccessRate: number;
};
/**
* 开始定期日志输出
*/
private startPeriodicLogging;
/**
* 输出汇总统计日志
*/
logSummaryStats(): void;
/**
* 输出详细统计日志
*/
private logDetailedStats;
/**
* 输出权重效果验证日志
*/
private logWeightEffectiveness;
/**
* 重置统计数据
*/
reset(): void;
/**
* 停止定期日志
*/
private loadStats;
private saveStats;
destroy(): void;
}
export declare const responseStatsManager: ResponseStatsManager;
//# sourceMappingURL=response-stats.d.ts.map