UNPKG

@ui18n/angular

Version:

🅰️ Modern Angular internationalization with standalone components, signals, and dependency injection support for Angular 15+

170 lines 4.89 kB
/** * UI18n智能回退机制 * 实现大模型API → 云端服务 → 本地缓存的智能回退策略 */ import { DualAPIConfig, TranslationAPIRequest, TranslationAPIResponse } from './api-config'; export { TranslationAPIRequest, TranslationAPIResponse } from './api-config'; export declare enum FallbackErrorType { NETWORK_ERROR = "network_error",// 网络连接问题 API_RATE_LIMIT = "api_rate_limit",// API速率限制 API_QUOTA_EXCEEDED = "api_quota_exceeded",// API配额用完 API_AUTH_ERROR = "api_auth_error",// API认证失败 API_SERVER_ERROR = "api_server_error",// API服务器错误 TIMEOUT = "timeout",// 请求超时 UNKNOWN_ERROR = "unknown_error" } export interface RetryConfig { /** 最大重试次数 */ maxRetries: number; /** 初始重试延迟(毫秒) */ initialDelay: number; /** 退避倍数 */ backoffMultiplier: number; /** 最大延迟时间(毫秒) */ maxDelay: number; /** 抖动因子(0-1,添加随机性避免雷群效应) */ jitterFactor: number; } export interface FallbackResult { /** 是否成功获得翻译 */ success: boolean; /** 翻译结果 */ translation?: string; /** 使用的API来源 */ source: 'aiProvider' | 'cloudService' | 'cache' | 'builtin'; /** 总耗时(毫秒) */ totalDuration: number; /** 尝试次数 */ attemptCount: number; /** 错误信息(如果失败) */ error?: { type: FallbackErrorType; message: string; originalError?: any; }; /** 每次尝试的详细信息 */ attempts: Array<{ source: string; duration: number; success: boolean; error?: string; }>; } export interface TranslationProvider { /** 提供者名称 */ name: string; /** 是否可用 */ isAvailable(): Promise<boolean>; /** 执行翻译 */ translate(request: TranslationAPIRequest): Promise<TranslationAPIResponse>; /** 健康检查 */ healthCheck(): Promise<{ healthy: boolean; latency?: number; error?: string; }>; } /** * 智能回退管理器 * 协调多个翻译提供者,实现智能回退和重试策略 */ export declare class FallbackManager { private config; private retryConfig; providers: Map<string, TranslationProvider>; private circuitBreakers; constructor(config: DualAPIConfig, retryConfig?: Partial<RetryConfig>); /** * 执行带回退的翻译请求 */ translate(request: TranslationAPIRequest): Promise<FallbackResult>; /** * 尝试单个提供者的翻译(带重试) */ private attemptTranslation; /** * 获取回退顺序 */ private getFallbackOrder; /** * 错误分类(用于测试) */ classifyError(error: any): FallbackErrorType; /** * 判断是否应该重试 */ private shouldNotRetry; /** * 计算重试延迟(用于测试) */ calculateRetryDelay(attempt: number): number; /** * 判断熔断器是否打开(用于测试) */ isCircuitBreakerOpen(providerName: string): boolean; private recordSuccess; private recordFailure; /** * 内置回退(返回原文或友好提示) */ private tryBuiltinFallback; private getFriendlyErrorMessage; private formatError; private sleep; private initializeProviders; /** * 获取所有提供者的健康状态 */ getProvidersHealth(): Promise<Map<string, { healthy: boolean; latency?: number; error?: string; circuitBreakerOpen: boolean; }>>; /** * 重置指定提供者的熔断器 */ resetCircuitBreaker(providerName: string): void; /** * 获取回退统计信息 */ getFallbackStats(): { totalAttempts: number; successfulFallbacks: number; failedProviders: Map<string, number>; averageResponseTime: number; }; /** * 添加翻译提供者 */ addProvider(provider: { id: string; name: string; type: string; priority: number; isActive: boolean; config: any; capabilities: { languages: string[]; maxLength: number; batchSize: number; }; }): Promise<{ success: boolean; message?: string; }>; /** * 执行带回退的操作 */ executeWithFallback(operation: string, params: any, context?: any): Promise<{ result?: any; providerId?: string; attempts: number; success: boolean; }>; } /** * 创建默认的回退管理器 */ export declare function createFallbackManager(config: DualAPIConfig, retryConfig?: Partial<RetryConfig>): FallbackManager; //# sourceMappingURL=fallback-manager.d.ts.map