mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-01 17:00:21 +08:00
feat(pool,admin): 拆分调度维度、重构调度 UI 与增强配置导入导出
调度维度: - 新增 cache_affinity/free_first/team_first/plus_first/load_balance 五个独立维度 - 将 free_team_first 标记为 hidden,保留后向兼容但不再显示 - Registry 新增 hidden 属性,_helpers 新增 plus_only 优先级评分 前端调度对话框: - 分配模式(互斥组)独立为按钮组选择,策略调度保留拖拽排序 - 默认调度从 LRU 轮转改为缓存亲和 - 提取 buildPresetListItem/insertMissingByPreferredOrder 消除重复代码 配置导入导出: - 导出时 api_formats 支持规范化、去重与 None 回退到 Provider 端点 - 导入时兼容 supported_endpoints 别名与历史 None 语义 - 新增 test_admin_system_key_formats 单元测试
This commit is contained in:
61
tests/unit/test_admin_system_key_formats.py
Normal file
61
tests/unit/test_admin_system_key_formats.py
Normal file
@@ -0,0 +1,61 @@
|
||||
from src.api.admin.system import AdminExportConfigAdapter, AdminImportConfigAdapter
|
||||
|
||||
|
||||
def test_export_key_api_formats_falls_back_to_provider_endpoints_when_none() -> None:
|
||||
adapter = AdminExportConfigAdapter()
|
||||
|
||||
result = adapter._resolve_export_key_api_formats(
|
||||
None,
|
||||
["claude:chat", "openai:cli"],
|
||||
)
|
||||
|
||||
assert result == ["claude:chat", "openai:cli"]
|
||||
|
||||
|
||||
def test_export_key_api_formats_keeps_explicit_empty_list() -> None:
|
||||
adapter = AdminExportConfigAdapter()
|
||||
|
||||
result = adapter._resolve_export_key_api_formats(
|
||||
[],
|
||||
["openai:chat"],
|
||||
)
|
||||
|
||||
assert result == []
|
||||
|
||||
|
||||
def test_export_key_api_formats_normalizes_and_deduplicates() -> None:
|
||||
adapter = AdminExportConfigAdapter()
|
||||
|
||||
result = adapter._resolve_export_key_api_formats(
|
||||
[" OPENAI:CHAT ", "openai:chat", "openai:cli", "bad-format"],
|
||||
["claude:chat"],
|
||||
)
|
||||
|
||||
assert result == ["openai:chat", "openai:cli"]
|
||||
|
||||
|
||||
def test_import_key_api_formats_uses_supported_endpoints_alias() -> None:
|
||||
result = AdminImportConfigAdapter._extract_import_key_api_formats(
|
||||
{"supported_endpoints": ["openai:chat"]},
|
||||
{"openai:chat", "openai:cli"},
|
||||
)
|
||||
|
||||
assert result == ["openai:chat"]
|
||||
|
||||
|
||||
def test_import_key_api_formats_falls_back_to_provider_endpoints_when_none() -> None:
|
||||
result = AdminImportConfigAdapter._extract_import_key_api_formats(
|
||||
{"api_formats": None},
|
||||
{"openai:chat", "claude:cli"},
|
||||
)
|
||||
|
||||
assert result == ["claude:cli", "openai:chat"]
|
||||
|
||||
|
||||
def test_import_key_api_formats_keeps_explicit_empty_list() -> None:
|
||||
result = AdminImportConfigAdapter._extract_import_key_api_formats(
|
||||
{"api_formats": []},
|
||||
{"openai:chat"},
|
||||
)
|
||||
|
||||
assert result == []
|
||||
Reference in New Issue
Block a user