mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 01:10:23 +08:00
refactor: 调度器迁移至独立模块,消除 services->api 反向依赖
- 将调度器相关模块从 src/services/cache/ 迁移到 src/services/scheduling/ - 下沉类型定义到 core 层: AccessRestrictions, ProviderAuthInfo, ParsedChunk/StreamStats, 视频工具函数 - 提取 thinking_cache 签名缓存到 core/api_format/conversion/ - 提取 provider 认证逻辑到 services/provider/auth - 提取遥测记录到 services/usage/telemetry - 提取 models 列表缓存到 services/cache/model_list_cache - 更新所有引用方的 import 路径及相关测试
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from types import SimpleNamespace
|
||||
from typing import cast
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from src.services.cache.candidate_sorter import CandidateSorter
|
||||
from src.services.cache.scheduling_config import SchedulingConfig
|
||||
from src.services.cache.schemas import ProviderCandidate
|
||||
from src.models.database import Provider, ProviderAPIKey, ProviderEndpoint
|
||||
from src.services.scheduling.candidate_sorter import CandidateSorter
|
||||
from src.services.scheduling.scheduling_config import SchedulingConfig
|
||||
from src.services.scheduling.schemas import ProviderCandidate
|
||||
|
||||
|
||||
def _make_candidate(
|
||||
@@ -28,12 +30,12 @@ def _make_candidate(
|
||||
global_priority_by_format={"openai:chat": global_priority},
|
||||
)
|
||||
return ProviderCandidate(
|
||||
provider=provider,
|
||||
endpoint=endpoint,
|
||||
key=key,
|
||||
provider=cast(Provider, provider),
|
||||
endpoint=cast(ProviderEndpoint, endpoint),
|
||||
key=cast(ProviderAPIKey, key),
|
||||
needs_conversion=needs_conversion,
|
||||
provider_api_format="openai:chat",
|
||||
) # type: ignore[arg-type]
|
||||
)
|
||||
|
||||
|
||||
def test_priority_sort_global_key_does_not_demote_when_global_keep_priority_enabled() -> None:
|
||||
@@ -59,7 +61,7 @@ def test_priority_sort_global_key_does_not_demote_when_global_keep_priority_enab
|
||||
|
||||
# 全局 keep_priority_on_conversion=True:不做 needs_conversion 降级分组,纯按 global_priority 排序
|
||||
with patch(
|
||||
"src.services.cache.candidate_sorter.SystemConfigService.is_keep_priority_on_conversion",
|
||||
"src.services.scheduling.candidate_sorter.SystemConfigService.is_keep_priority_on_conversion",
|
||||
return_value=True,
|
||||
):
|
||||
result = sorter._apply_priority_mode_sort([exact, demoted], db, None, "openai:chat")
|
||||
@@ -90,7 +92,7 @@ def test_priority_sort_global_key_demotes_convertible_when_global_keep_priority_
|
||||
|
||||
# 全局 keep_priority_on_conversion=False:需要降级的 convertible 候选整体排后
|
||||
with patch(
|
||||
"src.services.cache.candidate_sorter.SystemConfigService.is_keep_priority_on_conversion",
|
||||
"src.services.scheduling.candidate_sorter.SystemConfigService.is_keep_priority_on_conversion",
|
||||
return_value=False,
|
||||
):
|
||||
result = sorter._apply_priority_mode_sort([exact, demoted], db, None, "openai:chat")
|
||||
@@ -126,7 +128,7 @@ def test_priority_sort_global_key_provider_keep_priority_overrides_demotion_grou
|
||||
)
|
||||
|
||||
with patch(
|
||||
"src.services.cache.candidate_sorter.SystemConfigService.is_keep_priority_on_conversion",
|
||||
"src.services.scheduling.candidate_sorter.SystemConfigService.is_keep_priority_on_conversion",
|
||||
return_value=False,
|
||||
):
|
||||
result = sorter._apply_priority_mode_sort(
|
||||
@@ -163,7 +165,7 @@ def test_priority_sort_provider_mode_demotes_convertible_when_global_keep_priori
|
||||
)
|
||||
|
||||
with patch(
|
||||
"src.services.cache.candidate_sorter.SystemConfigService.is_keep_priority_on_conversion",
|
||||
"src.services.scheduling.candidate_sorter.SystemConfigService.is_keep_priority_on_conversion",
|
||||
return_value=False,
|
||||
):
|
||||
result = sorter._apply_priority_mode_sort([demoted, exact], db, None, "openai:chat")
|
||||
@@ -193,7 +195,7 @@ def test_priority_sort_provider_mode_does_not_demote_when_global_keep_priority_e
|
||||
)
|
||||
|
||||
with patch(
|
||||
"src.services.cache.candidate_sorter.SystemConfigService.is_keep_priority_on_conversion",
|
||||
"src.services.scheduling.candidate_sorter.SystemConfigService.is_keep_priority_on_conversion",
|
||||
return_value=True,
|
||||
):
|
||||
result = sorter._apply_priority_mode_sort([demoted, exact], db, None, "openai:chat")
|
||||
|
||||
@@ -2,7 +2,7 @@ from __future__ import annotations
|
||||
|
||||
from types import SimpleNamespace
|
||||
|
||||
from src.services.cache.aware_scheduler import ProviderCandidate
|
||||
from src.services.scheduling.aware_scheduler import ProviderCandidate
|
||||
|
||||
|
||||
def _make_candidate(
|
||||
|
||||
Reference in New Issue
Block a user