refactor: 提取模型可用性查询到独立模块 ModelAvailabilityQuery

Close #101

- 新增 src/services/model/availability.py,集中管理系统级模型可用性查询条件
- 重构 models_service.py,复用 ModelAvailabilityQuery 的查询方法
- 删除 find_model_by_id 的 provider_model_name 回退逻辑
- 支持 model_mappings 正则匹配(使用 check_model_allowed_with_mappings)
- 修复 test_auth.py 中缺少的 is_locked mock 属性
- 新增 ModelAvailabilityQuery 单元测试
This commit is contained in:
fawney19
2026-01-18 01:45:25 +08:00
parent b98fc8497f
commit 0c5c6b3288
5 changed files with 1052 additions and 185 deletions

View File

@@ -235,6 +235,7 @@ class TestAPIKeyAuthentication:
mock_api_key = MagicMock()
mock_api_key.is_active = True
mock_api_key.is_locked = False
mock_api_key.expires_at = None
mock_api_key.user = mock_user
mock_api_key.balance_used_usd = 0.0
@@ -271,6 +272,7 @@ class TestAPIKeyAuthentication:
"""测试 API Key 已禁用"""
mock_api_key = MagicMock()
mock_api_key.is_active = False
mock_api_key.is_locked = False
mock_db = MagicMock()
mock_db.query.return_value.options.return_value.filter.return_value.first.return_value = (
@@ -286,6 +288,7 @@ class TestAPIKeyAuthentication:
"""测试 API Key 已过期"""
mock_api_key = MagicMock()
mock_api_key.is_active = True
mock_api_key.is_locked = False
mock_api_key.expires_at = datetime.now(timezone.utc) - timedelta(days=1)
mock_db = MagicMock()