fix(gemini): relax validation when adding providers (#210)
Allow users to create Gemini provider configurations without API key and fill it in later. Split validation into two modes: - validate_gemini_settings: Basic structure check (used when adding) - validate_gemini_settings_strict: Full validation (used when switching) This fixes the error 'Gemini config missing required field: GEMINI_API_KEY' when trying to add Gemini providers from presets like PackyCode or Google. Changes: - Add validate_gemini_settings_strict for switching validation - Update write_gemini_live to use strict validation - Add comprehensive tests for both validation modes
This commit is contained in:
@@ -1465,7 +1465,7 @@ impl ProviderService {
|
||||
|
||||
fn write_gemini_live(provider: &Provider) -> Result<(), AppError> {
|
||||
use crate::gemini_config::{
|
||||
json_to_env, validate_gemini_settings, write_gemini_env_atomic,
|
||||
json_to_env, validate_gemini_settings_strict, write_gemini_env_atomic,
|
||||
};
|
||||
|
||||
// 一次性检测认证类型,避免重复检测
|
||||
@@ -1479,15 +1479,15 @@ impl ProviderService {
|
||||
Self::ensure_google_oauth_security_flag(provider)?;
|
||||
}
|
||||
GeminiAuthType::Packycode => {
|
||||
// PackyCode 供应商,使用 API Key
|
||||
validate_gemini_settings(&provider.settings_config)?;
|
||||
// PackyCode 供应商,使用 API Key(切换时严格验证)
|
||||
validate_gemini_settings_strict(&provider.settings_config)?;
|
||||
let env_map = json_to_env(&provider.settings_config)?;
|
||||
write_gemini_env_atomic(&env_map)?;
|
||||
Self::ensure_packycode_security_flag(provider)?;
|
||||
}
|
||||
GeminiAuthType::Generic => {
|
||||
// 通用供应商,使用 API Key
|
||||
validate_gemini_settings(&provider.settings_config)?;
|
||||
// 通用供应商,使用 API Key(切换时严格验证)
|
||||
validate_gemini_settings_strict(&provider.settings_config)?;
|
||||
let env_map = json_to_env(&provider.settings_config)?;
|
||||
write_gemini_env_atomic(&env_map)?;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user