From a1dfdf4e68bc20c79ac3c99114f1316882591278 Mon Sep 17 00:00:00 2001 From: Jason Date: Fri, 5 Sep 2025 15:11:20 +0800 Subject: [PATCH] refactor(provider): remove runtime duplicate checks in add/update; dedupe only during initial migration per product decision --- src-tauri/src/commands.rs | 39 --------------------------------------- 1 file changed, 39 deletions(-) diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index 1c46504..43a34dd 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -10,23 +10,6 @@ use crate::config::{ConfigStatus, get_claude_settings_path}; use crate::provider::Provider; use crate::store::AppState; -fn norm_name(s: &str) -> String { s.trim().to_lowercase() } - -fn extract_key_for(app_type: &crate::app_config::AppType, settings: &serde_json::Value) -> Option { - match app_type { - crate::app_config::AppType::Claude => settings - .get("env") - .and_then(|env| env.get("ANTHROPIC_AUTH_TOKEN")) - .and_then(|v| v.as_str()) - .map(|s| s.to_string()), - crate::app_config::AppType::Codex => settings - .get("auth") - .and_then(|auth| auth.get("OPENAI_API_KEY").or_else(|| auth.get("openai_api_key"))) - .and_then(|v| v.as_str()) - .map(|s| s.to_string()), - } -} - /// 获取所有供应商 #[tauri::command] pub async fn get_providers( @@ -100,17 +83,6 @@ pub async fn add_provider( .get_manager_mut(&app_type) .ok_or_else(|| format!("应用类型不存在: {:?}", app_type))?; - // 名称(忽略大小写)+Key 唯一性校验 - let new_key = extract_key_for(&app_type, &provider.settings_config).unwrap_or_default(); - let new_name = norm_name(&provider.name); - if manager.providers.iter().any(|(id, p)| { - *id != provider.id - && norm_name(&p.name) == new_name - && extract_key_for(&app_type, &p.settings_config).unwrap_or_default() == new_key - }) { - return Err("已存在同名(不区分大小写)且相同密钥的供应商".to_string()); - } - // 根据应用类型保存配置文件 // 不再写入供应商副本文件,仅更新内存配置(SSOT) let is_current = manager.current == provider.id; @@ -203,17 +175,6 @@ pub async fn update_provider( return Err(format!("供应商不存在: {}", provider.id)); } - // 名称(忽略大小写)+Key 唯一性校验(允许覆盖自身) - let new_key = extract_key_for(&app_type, &provider.settings_config).unwrap_or_default(); - let new_name = norm_name(&provider.name); - if manager.providers.iter().any(|(id, p)| { - *id != provider.id - && norm_name(&p.name) == new_name - && extract_key_for(&app_type, &p.settings_config).unwrap_or_default() == new_key - }) { - return Err("已存在同名(不区分大小写)且相同密钥的供应商".to_string()); - } - // 不再写入供应商副本文件,仅更新内存配置(SSOT) let is_current = manager.current == provider.id;