mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 01:10:23 +08:00
refactor: Antigravity/Codex 服务重构为插件化适配器架构
- 将 Antigravity 和 Codex 从独立模块迁移至 src/services/provider/adapters/ 插件体系 - 新增 provider_types 和 oauth_token 模块,移除 maintenance_scheduler 中的 OAuth 定时刷新 - 增强 admin API:扩展 keys 和 provider_query 端点,新增 dashboard 路由 - 大幅增强 ProviderDetailDrawer 组件,新增 AntigravityQuotaDialog - 改进 handler 基类(chat/cli)和错误分类器 - 优化 fetch_scheduler 和 upstream_fetcher - 前端 UI 组件清理和优化 - 更新测试以匹配新模块结构
This commit is contained in:
@@ -1,12 +1,15 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import src.services.antigravity.url_availability as ua_mod
|
||||
from src.services.antigravity.constants import (
|
||||
from typing import Any
|
||||
|
||||
import src.services.provider.adapters.antigravity.url_availability as ua_mod
|
||||
from src.services.provider.adapters.antigravity.constants import (
|
||||
DAILY_BASE_URL,
|
||||
PROD_BASE_URL,
|
||||
SANDBOX_BASE_URL,
|
||||
URL_UNAVAILABLE_TTL_SECONDS,
|
||||
)
|
||||
from src.services.antigravity.url_availability import url_availability
|
||||
from src.services.provider.adapters.antigravity.url_availability import url_availability
|
||||
|
||||
|
||||
def _reset_state() -> None:
|
||||
@@ -31,11 +34,13 @@ def test_mark_unavailable_filters_url() -> None:
|
||||
url_availability.mark_unavailable(DAILY_BASE_URL)
|
||||
ordered = url_availability.get_ordered_urls(prefer_daily=True)
|
||||
|
||||
assert ordered[0] == PROD_BASE_URL
|
||||
# Sandbox → Prod(Daily 被标记为不可用,应被过滤掉)
|
||||
assert ordered[0] == SANDBOX_BASE_URL
|
||||
assert DAILY_BASE_URL not in ordered
|
||||
assert url_availability.is_available(DAILY_BASE_URL) is False
|
||||
|
||||
|
||||
def test_ttl_recovery(monkeypatch) -> None:
|
||||
def test_ttl_recovery(monkeypatch: Any) -> None:
|
||||
_reset_state()
|
||||
|
||||
t0 = 1000.0
|
||||
@@ -50,9 +55,10 @@ def test_ttl_recovery(monkeypatch) -> None:
|
||||
def test_all_unavailable_fallback_returns_base_order() -> None:
|
||||
_reset_state()
|
||||
|
||||
url_availability.mark_unavailable(PROD_BASE_URL)
|
||||
url_availability.mark_unavailable(SANDBOX_BASE_URL)
|
||||
url_availability.mark_unavailable(DAILY_BASE_URL)
|
||||
url_availability.mark_unavailable(PROD_BASE_URL)
|
||||
|
||||
ordered = url_availability.get_ordered_urls(prefer_daily=True)
|
||||
assert ordered == [DAILY_BASE_URL, PROD_BASE_URL]
|
||||
|
||||
# 全部不可用时仍返回基础顺序(允许继续尝试,等 TTL 恢复)
|
||||
assert ordered == [SANDBOX_BASE_URL, DAILY_BASE_URL, PROD_BASE_URL]
|
||||
|
||||
Reference in New Issue
Block a user