diff --git a/server-rs/crates/api-server/src/config.rs b/server-rs/crates/api-server/src/config.rs index 6a50319a2..ae144dd7b 100644 --- a/server-rs/crates/api-server/src/config.rs +++ b/server-rs/crates/api-server/src/config.rs @@ -19,6 +19,10 @@ const DEFAULT_EXTERNAL_GENERATION_WORKER_JOB_TIMEOUT_SECONDS: u64 = 900; const DEFAULT_EXTERNAL_GENERATION_WORKER_LONG_JOB_TIMEOUT_SECONDS: u64 = 1_800; pub(crate) const DEFAULT_VECTOR_ENGINE_IMAGE_REQUEST_TIMEOUT_MS: u64 = 1_000_000; pub(crate) const DEFAULT_ELEVENLABS_REQUEST_TIMEOUT_MS: u64 = 180_000; +/// Tripo 官方网关地址;只作为默认值,部署可用 `TRIPO_BASE_URL` 覆盖。 +const DEFAULT_TRIPO_BASE_URL: &str = "https://openapi.tripo3d.com/v3"; +pub(crate) const DEFAULT_TRIPO_REQUEST_TIMEOUT_MS: u64 = 60_000; +const DEFAULT_TRIPO_RETRIES: u32 = 2; const DEFAULT_EDITOR_BGFILTER_BASE_URL: &str = "http://58.87.105.82/bgfilter"; const DEFAULT_EDITOR_BGFILTER_SINGLE_IMAGE_ESTIMATE_MS: u64 = 5_000; const BGFILTER_ATTEMPT_SAFETY_FACTOR: u64 = 2; @@ -219,6 +223,10 @@ pub struct AppConfig { pub hyper3d_base_url: String, pub hyper3d_api_key: Option, pub hyper3d_model_request_timeout_ms: u64, + pub tripo_base_url: String, + pub tripo_api_key: Option, + pub tripo_request_timeout_ms: u64, + pub tripo_retries: u32, pub volcengine_speech_api_key: Option, pub volcengine_speech_app_id: Option, pub volcengine_speech_access_key: Option, @@ -529,6 +537,10 @@ impl Default for AppConfig { hyper3d_base_url: "https://api.hyper3d.com/api/v2".to_string(), hyper3d_api_key: None, hyper3d_model_request_timeout_ms: 180_000, + tripo_base_url: DEFAULT_TRIPO_BASE_URL.to_string(), + tripo_api_key: None, + tripo_request_timeout_ms: DEFAULT_TRIPO_REQUEST_TIMEOUT_MS, + tripo_retries: DEFAULT_TRIPO_RETRIES, volcengine_speech_api_key: None, volcengine_speech_app_id: None, volcengine_speech_access_key: None, @@ -1347,6 +1359,22 @@ impl AppConfig { config.hyper3d_model_request_timeout_ms = hyper3d_model_request_timeout_ms; } + if let Some(tripo_base_url) = read_first_non_empty_env(&["TRIPO_BASE_URL"]) { + config.tripo_base_url = tripo_base_url; + } + + config.tripo_api_key = read_first_non_empty_env(&["TRIPO_API_KEY"]); + + if let Some(tripo_request_timeout_ms) = + read_first_positive_u64_env(&["TRIPO_REQUEST_TIMEOUT_MS"]) + { + config.tripo_request_timeout_ms = tripo_request_timeout_ms; + } + + if let Some(tripo_retries) = read_first_u32_env(&["TRIPO_RETRIES"]) { + config.tripo_retries = tripo_retries; + } + config.volcengine_speech_api_key = read_first_non_empty_env(&["VOLCENGINE_SPEECH_API_KEY", "VOLCENGINE_API_KEY"]); config.volcengine_speech_app_id = @@ -1837,6 +1865,13 @@ mod tests { ); assert!(config.ark_character_video_base_url.is_empty()); assert_eq!(config.hyper3d_base_url, "https://api.hyper3d.com/api/v2"); + assert_eq!(config.tripo_base_url, DEFAULT_TRIPO_BASE_URL); + assert!(config.tripo_api_key.is_none()); + assert_eq!( + config.tripo_request_timeout_ms, + DEFAULT_TRIPO_REQUEST_TIMEOUT_MS + ); + assert_eq!(config.tripo_retries, DEFAULT_TRIPO_RETRIES); assert!(config.ark_character_video_model.is_empty()); assert!(config.dashscope_scene_image_model.is_empty()); assert!(config.dashscope_reference_image_model.is_empty());