mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-03 01:40:21 +08:00
fix(admin): 优先级脏检查、base_url 校验、usage detail 延迟加载及导入数据验证
- 前端优先级管理: 保存时对比原始快照,仅提交实际变更的 provider/key 优先级, 并限制并发请求数(SAVE_CONCURRENCY=6),避免无效 API 调用 - handler_adapter_base: _normalize_test_base_url 改为 _validate_test_base_url, 移除对 dict 类型 base_url 的兼容,严格要求字符串输入 - provider_query: 新增 _require_test_endpoint_base_url,在测试链路提前校验 endpoint.base_url 类型和非空 - system.py: 导入 endpoint 时通过 ProviderEndpointCreate 模型校验数据, 拒绝非法 base_url 类型(如 dict) - usage detail: 使用 defer() 延迟加载 body 列,通过 SQL CASE 表达式在 数据库端计算 has_*_body 标记,减少不必要的大字段传输 - provider routes: 新建 provider 时 priority=0 边界处理,clamp 并 shift
This commit is contained in:
@@ -9,6 +9,7 @@ from src.api.admin.provider_query import (
|
||||
_build_test_attempts_from_candidate_keys,
|
||||
_filter_test_candidates_by_endpoint,
|
||||
_flatten_test_candidates_for_concurrency,
|
||||
_require_test_endpoint_base_url,
|
||||
_resolve_test_effective_model,
|
||||
)
|
||||
from src.services.scheduling.schemas import PoolCandidate
|
||||
@@ -148,3 +149,18 @@ def test_test_model_failover_request_validates_concurrency_range() -> None:
|
||||
model_name="gpt-4o-mini",
|
||||
concurrency=0,
|
||||
)
|
||||
|
||||
|
||||
def test_require_test_endpoint_base_url_rejects_non_string() -> None:
|
||||
endpoint = SimpleNamespace(id="ep-bad", api_format="claude:chat", base_url={"url": "https://x"})
|
||||
|
||||
with pytest.raises(ValueError, match="invalid base_url type"):
|
||||
_require_test_endpoint_base_url(endpoint)
|
||||
|
||||
|
||||
def test_require_test_endpoint_base_url_trims_whitespace() -> None:
|
||||
endpoint = SimpleNamespace(
|
||||
id="ep-ok", api_format="claude:chat", base_url=" https://api.anthropic.com "
|
||||
)
|
||||
|
||||
assert _require_test_endpoint_base_url(endpoint) == "https://api.anthropic.com"
|
||||
|
||||
Reference in New Issue
Block a user