@ui18n/angular
Version:
🅰️ Modern Angular internationalization with standalone components, signals, and dependency injection support for Angular 15+
170 lines • 4.89 kB
TypeScript
/**
* 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