diff --git a/src-tauri/src/database/dao/proxy.rs b/src-tauri/src/database/dao/proxy.rs index 0303481cf..1e6344b61 100644 --- a/src-tauri/src/database/dao/proxy.rs +++ b/src-tauri/src/database/dao/proxy.rs @@ -230,6 +230,17 @@ impl Database { Ok(()) } + /// 清空所有Provider健康状态(代理停止时调用) + pub async fn clear_all_provider_health(&self) -> Result<(), AppError> { + let conn = lock_conn!(self.conn); + + conn.execute("DELETE FROM provider_health", []) + .map_err(|e| AppError::Database(e.to_string()))?; + + log::debug!("Cleared all provider health records"); + Ok(()) + } + // ==================== Circuit Breaker Config ==================== /// 获取熔断器配置 diff --git a/src-tauri/src/services/proxy.rs b/src-tauri/src/services/proxy.rs index bb4fed5be..9c82481f3 100644 --- a/src-tauri/src/services/proxy.rs +++ b/src-tauri/src/services/proxy.rs @@ -306,6 +306,12 @@ impl ProxyService { .await .map_err(|e| format!("删除备份失败: {e}"))?; + // 5. 重置健康状态(让健康徽章恢复为正常) + self.db + .clear_all_provider_health() + .await + .map_err(|e| format!("重置健康状态失败: {e}"))?; + log::info!("代理已停止,Live 配置已恢复"); Ok(()) }