fix(priority): keep readable priority sync details
This commit is contained in:
@@ -247,10 +247,11 @@ def _priority_result(
|
||||
account_name: str | None = None,
|
||||
old_priority: Any = None,
|
||||
source_rate: float | None = None,
|
||||
target_group_name: str | None = None,
|
||||
) -> dict:
|
||||
"""构建统一的优先级同步结果 dict,支持丰富的展示和后向兼容性。"""
|
||||
tg_id = row.imported_target_group_id or row.group_id
|
||||
tg_name = row.imported_target_group_name or tg_id
|
||||
tg_name = target_group_name or row.imported_target_group_name or tg_id
|
||||
return {
|
||||
# 兼容旧字段
|
||||
"account_id": row.imported_account_id,
|
||||
@@ -547,8 +548,9 @@ def sync_account_priorities_for_upstream(
|
||||
auth_config=json.loads(website.auth_config_json or "{}"),
|
||||
timeout=float(website.timeout_seconds),
|
||||
) as client:
|
||||
# 尽量拉取目标网站账号列表以获取账号名称和旧 priority,失败不阻断
|
||||
# 尽量拉取目标网站账号列表以获取账号名称和旧 priority,并拉取分组以获取分组名称,失败不阻断
|
||||
account_info_map: dict[str, dict[str, Any]] = {}
|
||||
target_group_names: dict[str, str] = {}
|
||||
try:
|
||||
remote_accounts = client.list_accounts() or []
|
||||
for acc in remote_accounts:
|
||||
@@ -561,18 +563,33 @@ def sync_account_priorities_for_upstream(
|
||||
except Exception as e:
|
||||
logger.warning("failed to fetch remote accounts for website %s: %s", wid, e)
|
||||
|
||||
try:
|
||||
grps = client.get_groups(endpoint=website.groups_endpoint) or []
|
||||
for g in grps:
|
||||
g_id = g.get("id")
|
||||
if g_id is not None:
|
||||
target_group_names[str(g_id)] = g.get("name") or str(g_id)
|
||||
except Exception as e:
|
||||
logger.warning("failed to fetch groups for website %s at sync: %s", wid, e)
|
||||
|
||||
for comp_rows in competitive_buckets.values():
|
||||
for row in comp_rows:
|
||||
account_id = row.imported_account_id
|
||||
new_priority = priority_assignment.get(account_id)
|
||||
if new_priority is None:
|
||||
continue
|
||||
|
||||
|
||||
acc_info = account_info_map.get(str(account_id)) or {}
|
||||
acc_name = acc_info.get("name") or str(account_id)
|
||||
old_prio = acc_info.get("priority")
|
||||
src_rate = raw_rate_map.get(f"{row.upstream_id}:{row.group_id}")
|
||||
|
||||
tg_id_str = str(row.imported_target_group_id or row.group_id)
|
||||
tg_name = target_group_names.get(tg_id_str)
|
||||
if tg_name and row.imported_target_group_name != tg_name:
|
||||
row.imported_target_group_name = tg_name
|
||||
db.commit()
|
||||
|
||||
try:
|
||||
client.update_account(account_id, {"priority": new_priority})
|
||||
logger.info(
|
||||
@@ -590,6 +607,7 @@ def sync_account_priorities_for_upstream(
|
||||
account_name=acc_name,
|
||||
old_priority=old_prio,
|
||||
source_rate=src_rate,
|
||||
target_group_name=tg_name or row.imported_target_group_name,
|
||||
)
|
||||
)
|
||||
except Exception as exc:
|
||||
@@ -606,6 +624,7 @@ def sync_account_priorities_for_upstream(
|
||||
account_name=acc_name,
|
||||
old_priority=old_prio,
|
||||
source_rate=src_rate,
|
||||
target_group_name=tg_name or row.imported_target_group_name,
|
||||
)
|
||||
)
|
||||
except Exception as exc:
|
||||
|
||||
Reference in New Issue
Block a user