api-server 增加 Tripo 生成的环境配置

- AppConfig 新增 tripo_base_url / tripo_api_key / 请求超时 / 重试四个字段
- 默认网关指向 Tripo 官方 v3 地址,可由 TRIPO_BASE_URL 覆盖
- 环境变量沿用 provider 示例的 TRIPO_* 口径,API Key 缺省为空
- 默认值断言补进配置测试
This commit is contained in:
2026-09-21 13:23:18 +08:00
parent 2182b075b8
commit d012392779
+35
View File
@@ -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<String>,
pub hyper3d_model_request_timeout_ms: u64,
pub tripo_base_url: String,
pub tripo_api_key: Option<String>,
pub tripo_request_timeout_ms: u64,
pub tripo_retries: u32,
pub volcengine_speech_api_key: Option<String>,
pub volcengine_speech_app_id: Option<String>,
pub volcengine_speech_access_key: Option<String>,
@@ -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());