mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-27 16:26:16 +08:00
e6654bd7f9
- Remove `is_proxy_target` field from Provider struct (Rust & TypeScript) - Remove related DAO methods: get_proxy_target_provider, set_proxy_target - Remove deprecated Tauri commands: get_proxy_targets, set_proxy_target - Add `is_available()` method to CircuitBreaker for availability checks without consuming HalfOpen probe permits (used in select_providers) - Keep `allow_request()` for actual request gating with permit tracking - Update stream_check to use failover_queue instead of is_proxy_target - Clean up commented-out reset circuit breaker button in ProviderActions - Remove unused useProxyTargets and useSetProxyTarget hooks
108 lines
2.8 KiB
TypeScript
108 lines
2.8 KiB
TypeScript
import { invoke } from "@tauri-apps/api/core";
|
|
import type {
|
|
ProviderHealth,
|
|
CircuitBreakerConfig,
|
|
CircuitBreakerStats,
|
|
FailoverQueueItem,
|
|
} from "@/types/proxy";
|
|
|
|
export interface Provider {
|
|
id: string;
|
|
name: string;
|
|
settingsConfig: unknown;
|
|
websiteUrl?: string;
|
|
category?: string;
|
|
createdAt?: number;
|
|
sortIndex?: number;
|
|
notes?: string;
|
|
meta?: unknown;
|
|
icon?: string;
|
|
iconColor?: string;
|
|
}
|
|
|
|
export const failoverApi = {
|
|
// ========== 熔断器 API ==========
|
|
|
|
// 获取供应商健康状态
|
|
async getProviderHealth(
|
|
providerId: string,
|
|
appType: string,
|
|
): Promise<ProviderHealth> {
|
|
return invoke("get_provider_health", { providerId, appType });
|
|
},
|
|
|
|
// 重置熔断器
|
|
async resetCircuitBreaker(
|
|
providerId: string,
|
|
appType: string,
|
|
): Promise<void> {
|
|
return invoke("reset_circuit_breaker", { providerId, appType });
|
|
},
|
|
|
|
// 获取熔断器配置
|
|
async getCircuitBreakerConfig(): Promise<CircuitBreakerConfig> {
|
|
return invoke("get_circuit_breaker_config");
|
|
},
|
|
|
|
// 更新熔断器配置
|
|
async updateCircuitBreakerConfig(
|
|
config: CircuitBreakerConfig,
|
|
): Promise<void> {
|
|
return invoke("update_circuit_breaker_config", { config });
|
|
},
|
|
|
|
// 获取熔断器统计信息
|
|
async getCircuitBreakerStats(
|
|
providerId: string,
|
|
appType: string,
|
|
): Promise<CircuitBreakerStats | null> {
|
|
return invoke("get_circuit_breaker_stats", { providerId, appType });
|
|
},
|
|
|
|
// ========== 故障转移队列 API(新) ==========
|
|
|
|
// 获取故障转移队列
|
|
async getFailoverQueue(appType: string): Promise<FailoverQueueItem[]> {
|
|
return invoke("get_failover_queue", { appType });
|
|
},
|
|
|
|
// 获取可添加到队列的供应商(不在队列中的)
|
|
async getAvailableProvidersForFailover(appType: string): Promise<Provider[]> {
|
|
return invoke("get_available_providers_for_failover", { appType });
|
|
},
|
|
|
|
// 添加供应商到故障转移队列
|
|
async addToFailoverQueue(appType: string, providerId: string): Promise<void> {
|
|
return invoke("add_to_failover_queue", { appType, providerId });
|
|
},
|
|
|
|
// 从故障转移队列移除供应商
|
|
async removeFromFailoverQueue(
|
|
appType: string,
|
|
providerId: string,
|
|
): Promise<void> {
|
|
return invoke("remove_from_failover_queue", { appType, providerId });
|
|
},
|
|
|
|
// 重新排序故障转移队列
|
|
async reorderFailoverQueue(
|
|
appType: string,
|
|
providerIds: string[],
|
|
): Promise<void> {
|
|
return invoke("reorder_failover_queue", { appType, providerIds });
|
|
},
|
|
|
|
// 设置故障转移队列项的启用状态
|
|
async setFailoverItemEnabled(
|
|
appType: string,
|
|
providerId: string,
|
|
enabled: boolean,
|
|
): Promise<void> {
|
|
return invoke("set_failover_item_enabled", {
|
|
appType,
|
|
providerId,
|
|
enabled,
|
|
});
|
|
},
|
|
};
|