feat: ProviderOpsConfig 支持独立存储 base_url

将 base_url 作为 ProviderOpsConfig 的独立字段存储,
获取时优先读取配置中的值,否则回退到 endpoint/provider。
This commit is contained in:
fawney19
2026-01-18 13:20:14 +08:00
parent aa57f78561
commit e2e14fd09c
3 changed files with 19 additions and 15 deletions

View File

@@ -217,19 +217,19 @@ async def get_provider_ops_config(
is_configured=False,
)
# 获取 base_url
provider = db.query(Provider).filter(Provider.id == provider_id).first()
base_url = None
if provider:
provider_config = provider.config or {}
# base_url 可能存储在 provider_ops 配置中,也可能从 provider 获取
if provider.endpoints:
for endpoint in provider.endpoints:
if endpoint.base_url:
base_url = endpoint.base_url
break
if not base_url:
base_url = provider_config.get("base_url") or provider.website
# 获取 base_url:优先从 provider_ops 配置读取,否则回退到 endpoint/provider
base_url = config.base_url
if not base_url:
provider = db.query(Provider).filter(Provider.id == provider_id).first()
if provider:
if provider.endpoints:
for endpoint in provider.endpoints:
if endpoint.base_url:
base_url = endpoint.base_url
break
if not base_url:
provider_config = provider.config or {}
base_url = provider_config.get("base_url") or provider.website
# 获取脱敏后的凭据
masked_credentials = service.get_masked_credentials(config.connector_credentials)
@@ -265,6 +265,7 @@ async def save_provider_ops_config(
# 构建配置对象
config = ProviderOpsConfig(
architecture_id=request.architecture_id,
base_url=request.base_url,
connector_auth_type=ConnectorAuthType(request.connector.auth_type),
connector_config=request.connector.config,
connector_credentials=credentials,

View File

@@ -177,8 +177,8 @@ class ProviderOpsService:
registry = get_registry()
architecture = registry.get_or_default(config.architecture_id)
# 获取 base_url
base_url = self._get_provider_base_url(provider)
# 获取 base_url:优先从 config 读取
base_url = config.base_url or self._get_provider_base_url(provider)
if not base_url:
return False, "Provider 未配置 base_url"

View File

@@ -114,6 +114,7 @@ class ProviderOpsConfig:
"""Provider 操作配置(存储在 Provider.config['provider_ops'] 中)"""
architecture_id: str = "generic_api"
base_url: Optional[str] = None # API 基础地址
# 连接器配置
connector_auth_type: ConnectorAuthType = ConnectorAuthType.API_KEY
@@ -134,6 +135,7 @@ class ProviderOpsConfig:
return cls(
architecture_id=data.get("architecture_id", "generic_api"),
base_url=data.get("base_url"),
connector_auth_type=ConnectorAuthType(
data.get("connector", {}).get("auth_type", "api_key")
),
@@ -147,6 +149,7 @@ class ProviderOpsConfig:
"""转换为字典(用于存储)"""
return {
"architecture_id": self.architecture_id,
"base_url": self.base_url,
"connector": {
"auth_type": self.connector_auth_type.value,
"config": self.connector_config,