补全图片 provider 启动报错与日志信息

缺少 BASE_URL / API_KEY 时点名对应环境变量

启动成功时记录 provider、base_url 与超时配置
This commit is contained in:
2026-09-21 20:06:24 +08:00
parent 784f38220b
commit 8988e91ee9
+26 -6
View File
@@ -2518,6 +2518,7 @@ fn build_required_image_provider_client(
api_key: Option<String>,
request_timeout_ms: u64,
) -> Result<ImageProviderClient, AppStateInitError> {
let (base_url_env, api_key_env) = required_image_provider_env_vars(provider);
#[cfg(test)]
let (base_url, api_key) = (
if base_url.trim().is_empty() {
@@ -2532,8 +2533,9 @@ fn build_required_image_provider_client(
let base_url = base_url.trim().trim_end_matches('/');
if base_url.is_empty() {
return Err(AppStateInitError::DependencyUnavailable(format!(
"{} 图片 provider 缺少 BASE_URL 配置",
provider.as_str()
"{} 图片 provider 缺少 BASE_URL 配置:请设置 {}。两个图片 provider 都在启动时构造,缺失即阻止 api-server 启动,不做 provider 回退。",
provider.as_str(),
base_url_env
)));
}
let api_key = api_key
@@ -2542,18 +2544,36 @@ fn build_required_image_provider_client(
.filter(|value| !value.is_empty())
.ok_or_else(|| {
AppStateInitError::DependencyUnavailable(format!(
"{} 图片 provider 缺少 API_KEY 配置",
provider.as_str()
"{} 图片 provider 缺少 API_KEY 配置:请设置 {}。两个图片 provider 都在启动时构造,缺失即阻止 api-server 启动,不做 provider 回退。",
provider.as_str(),
api_key_env
))
})?;
build_image_provider_client(ImageProviderSettings {
let client = build_image_provider_client(ImageProviderSettings {
provider,
base_url: base_url.to_string(),
api_key: api_key.to_string(),
request_timeout_ms: request_timeout_ms.max(1),
request_deadline: None,
})
.map_err(|error| AppStateInitError::DependencyUnavailable(error.to_string()))
.map_err(|error| AppStateInitError::DependencyUnavailable(error.to_string()))?;
info!(
provider = provider.as_str(),
base_url = %base_url,
request_timeout_ms = request_timeout_ms.max(1),
env = base_url_env,
api_key_env,
"图片 provider client 已启用"
);
Ok(client)
}
/// 图片 provider 在启动期必须齐备的环境变量名,用于给出可直接执行的报错与启动日志。
fn required_image_provider_env_vars(provider: ImageProvider) -> (&'static str, &'static str) {
match provider {
ImageProvider::VectorEngine => ("VECTOR_ENGINE_BASE_URL", "VECTOR_ENGINE_API_KEY"),
ImageProvider::Tiantoken => ("TIANTOKEN_BASE_URL", "TIANTOKEN_API_KEY"),
}
}
fn build_oss_client(config: &AppConfig) -> Result<Option<OssClient>, AppStateInitError> {