mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-01 17:00:21 +08:00
fix: 链路预览只显示白名单匹配的 Endpoint 和 Key
修复链路预览显示不相关 Endpoint 的问题: - 新增 is_key_model_allowed 函数检查 Key 白名单是否匹配当前 GlobalModel - 过滤掉白名单不匹配的 Key - 跳过没有任何匹配 Key 的 Endpoint - 简化 active_keys 计算逻辑
This commit is contained in:
@@ -289,10 +289,34 @@ class AdminGetModelRoutingPreviewAdapter(AdminApiAdapter):
|
||||
keys_by_endpoint[fmt] = []
|
||||
keys_by_endpoint[fmt].append(key)
|
||||
|
||||
# 定义 Key 模型权限匹配检查函数(用于过滤 Key)
|
||||
def is_key_model_allowed(key: ProviderAPIKey) -> bool:
|
||||
"""检查 Key 的白名单是否匹配当前 GlobalModel"""
|
||||
raw_allowed_models = key.allowed_models
|
||||
if not raw_allowed_models:
|
||||
# 没有白名单限制,允许所有模型
|
||||
return True
|
||||
allowed_models_list = parse_allowed_models_to_list(raw_allowed_models)
|
||||
is_allowed, _ = check_model_allowed_with_mappings(
|
||||
model_name=global_model.name,
|
||||
allowed_models=allowed_models_list,
|
||||
resolved_model_name=global_model.name,
|
||||
model_mappings=global_model_mappings,
|
||||
)
|
||||
return is_allowed
|
||||
|
||||
endpoint_infos = []
|
||||
for ep in provider_endpoints:
|
||||
# 获取该 Endpoint 格式对应的 Keys
|
||||
ep_keys = keys_by_endpoint.get(ep.api_format or "", [])
|
||||
|
||||
# 过滤:只保留白名单匹配当前 GlobalModel 的 Keys
|
||||
ep_keys = [k for k in ep_keys if is_key_model_allowed(k)]
|
||||
|
||||
# 如果该 Endpoint 没有任何匹配的 Key,跳过此 Endpoint
|
||||
if not ep_keys:
|
||||
continue
|
||||
|
||||
# 按优先级排序(使用当前格式的全局优先级)
|
||||
api_format = ep.api_format or ""
|
||||
def get_key_priority(k: ProviderAPIKey) -> tuple[int, int]:
|
||||
@@ -374,20 +398,8 @@ class AdminGetModelRoutingPreviewAdapter(AdminApiAdapter):
|
||||
)
|
||||
)
|
||||
|
||||
# 计算有效 Keys 数量:is_active 且模型权限匹配
|
||||
def is_key_effective(k: RoutingKeyInfo) -> bool:
|
||||
if not k.is_active:
|
||||
return False
|
||||
# 检查模型权限(包括正则映射匹配)
|
||||
is_allowed, _ = check_model_allowed_with_mappings(
|
||||
model_name=global_model.name,
|
||||
allowed_models=k.allowed_models,
|
||||
resolved_model_name=global_model.name,
|
||||
model_mappings=global_model_mappings,
|
||||
)
|
||||
return is_allowed
|
||||
|
||||
active_keys = sum(1 for k in key_infos if is_key_effective(k))
|
||||
# 计算有效 Keys 数量:is_active 即可(模型权限已在前面过滤)
|
||||
active_keys = sum(1 for k in key_infos if k.is_active)
|
||||
endpoint_infos.append(
|
||||
RoutingEndpointInfo(
|
||||
id=ep.id or "",
|
||||
|
||||
Reference in New Issue
Block a user