feat(provider): 新增 keep_priority_on_conversion 字段,支持格式转换时保持调度优先级

This commit is contained in:
fawney19
2026-03-05 15:28:03 +08:00
parent b1be413dc0
commit e86c8edd4b
4 changed files with 24 additions and 0 deletions

View File

@@ -39,6 +39,7 @@ export async function updateProvider(
description: string | null
website: string
provider_priority: number
keep_priority_on_conversion: boolean
billing_type: 'monthly_quota' | 'pay_as_you_go' | 'free_tier'
monthly_quota_usd: number
quota_reset_day: number

View File

@@ -470,6 +470,7 @@ class AdminCreateProviderAdapter(AdminApiAdapter):
quota_last_reset_at=validated_data.quota_last_reset_at,
quota_expires_at=validated_data.quota_expires_at,
provider_priority=validated_data.provider_priority,
keep_priority_on_conversion=validated_data.keep_priority_on_conversion,
is_active=validated_data.is_active,
concurrent_limit=validated_data.concurrent_limit,
max_retries=validated_data.max_retries,

View File

@@ -396,6 +396,10 @@ class CreateProviderRequest(BaseModel):
provider_priority: int | None = Field(
100, ge=0, le=10000, description="提供商优先级(数字越小越优先)"
)
keep_priority_on_conversion: bool = Field(
False,
description="格式转换时是否保持优先级True=保持原优先级False=需要转换时降级)",
)
is_active: bool | None = Field(True, description="是否启用")
concurrent_limit: int | None = Field(None, ge=0, description="并发限制")
# 请求配置(从 Endpoint 迁移)
@@ -506,6 +510,10 @@ class UpdateProviderRequest(BaseModel):
quota_last_reset_at: datetime | None = None
quota_expires_at: datetime | None = None
provider_priority: int | None = Field(None, ge=0, le=10000)
keep_priority_on_conversion: bool | None = Field(
None,
description="格式转换时是否保持优先级True=保持原优先级False=需要转换时降级)",
)
is_active: bool | None = None
concurrent_limit: int | None = Field(None, ge=0)
# 请求配置(从 Endpoint 迁移)

View File

@@ -0,0 +1,14 @@
from src.models.admin_requests import CreateProviderRequest, UpdateProviderRequest
def test_create_provider_request_accepts_keep_priority_on_conversion() -> None:
req = CreateProviderRequest.model_validate(
{"name": "Provider Keep Priority", "keep_priority_on_conversion": True}
)
assert req.keep_priority_on_conversion is True
def test_update_provider_request_preserves_keep_priority_on_conversion() -> None:
req = UpdateProviderRequest.model_validate({"keep_priority_on_conversion": True})
data = req.model_dump(exclude_unset=True)
assert data["keep_priority_on_conversion"] is True