fix: 删除 routers/websites 中残留的死代码函数 _build_rate_priority_map,并为 build_target_group_priority_map 引入严格的分组倍率解析,防止非法/缺失倍率的分组以 1.0 的降级值参与排序

This commit is contained in:
liumangmang
2026-07-01 20:26:23 +08:00
parent dd3649a6ad
commit 7ae9ad9292
3 changed files with 19 additions and 8 deletions
+14 -2
View File
@@ -220,6 +220,17 @@ def _snapshot_group_rate(group: dict) -> float:
return 1.0
def _strict_snapshot_group_rate(group: dict) -> float | None:
"""从快照分组数据中严格提取倍率,若缺失或非数值则返回 None。"""
raw = group.get("rate") or group.get("default_rate") or group.get("rate_multiplier")
if raw is None or raw == "":
return None
try:
return float(raw)
except (TypeError, ValueError):
return None
def build_rate_priority_map(db: Session, upstream_ids: set[int]) -> dict[str, int]:
"""根据上游分组倍率构建 f"{upstream_id}:{group_id}" → priority 映射。
@@ -465,8 +476,9 @@ def build_target_group_priority_map(
groups = rate_maps.get(upstream_id) or {}
g = groups.get(group_id)
if isinstance(g, dict):
rate = _snapshot_group_rate(g)
rated_sources.append(((upstream_id, group_id), rate))
rate = _strict_snapshot_group_rate(g)
if rate is not None:
rated_sources.append(((upstream_id, group_id), rate))
if not rated_sources:
continue