refactor(model-permissions): 简化 allowed_models 为纯列表格式

移除按 API 格式区分的字典模式(Dict[str, List[str]]),统一使用简单列表格式。

- 删除 normalize_allowed_models 的 api_format 参数
- 删除 check_model_allowed 的 api_format 参数
- 简化 merge_allowed_models 为直接列表交集
- 移除前端的字典模式兼容代码和警告 UI
- 删除 is_format_mode、convert_to_format_mode 等辅助函数
This commit is contained in:
fawney19
2026-01-14 17:57:21 +08:00
parent 133f3108f0
commit b272109055
9 changed files with 62 additions and 345 deletions

View File

@@ -524,8 +524,7 @@ class CacheAwareScheduler:
user_api_key.allowed_providers, user.allowed_providers if user else None
)
# 合并 allowed_models
# allowed_models 支持 list/dict 两种结构,不能转成 set 否则会导致权限校验失效
# 合并 allowed_models(取交集)
from src.core.model_permissions import merge_allowed_models
result["allowed_models"] = merge_allowed_models(
@@ -612,13 +611,12 @@ class CacheAwareScheduler:
)
return [], global_model_id
# 0.2 检查模型是否被允许(支持简单列表和按格式字典两种模式)
# 0.2 检查模型是否被允许
from src.core.model_permissions import check_model_allowed, get_allowed_models_preview
if not check_model_allowed(
model_name=requested_model_name,
allowed_models=allowed_models,
api_format=target_format.value,
resolved_model_name=resolved_model_name,
):
resolved_note = (
@@ -915,7 +913,7 @@ class CacheAwareScheduler:
if not is_available:
return False, circuit_reason or "熔断器已打开", None
# 模型权限检查:使用 allowed_models 白名单(支持简单列表和按格式字典两种模式)
# 模型权限检查:使用 allowed_models 白名单
# None = 允许所有模型,[] = 拒绝所有模型,["a","b"] = 只允许指定模型
# 支持通配符别名匹配(通过 model_aliases
from src.core.model_permissions import (
@@ -927,7 +925,6 @@ class CacheAwareScheduler:
is_allowed, alias_matched_model = check_model_allowed_with_aliases(
model_name=model_name,
allowed_models=key.allowed_models,
api_format=api_format,
resolved_model_name=resolved_model_name,
model_aliases=model_aliases,
candidate_models=candidate_models,