feat: Implement result deduplication by email and enhance summary reporting to detail only failed accounts.

This commit is contained in:
2026-01-18 06:59:35 +08:00
parent 49cb2430c8
commit 95fa705768
3 changed files with 135 additions and 15 deletions

View File

@@ -203,6 +203,14 @@ def print_summary(results: list):
Args:
results: [{"team": "...", "email": "...", "status": "...", "crs_id": "..."}]
"""
# 去重 (按 email 去重,保留最后一条记录)
seen = {}
for r in results:
email = r.get("email", "")
if email:
seen[email] = r
results = list(seen.values())
log.separator("=", 60)
log.header("执行摘要")
log.separator("=", 60)
@@ -212,30 +220,31 @@ def print_summary(results: list):
log.info(f"总计: {len(results)} 个账号")
log.success(f"成功: {success_count}")
log.error(f"失败: {failed_count}")
if failed_count > 0:
log.error(f"失败: {failed_count}")
# 按 Team 分组
teams = {}
for r in results:
team = r.get("team", "Unknown")
if team not in teams:
teams[team] = {"success": 0, "failed": 0, "accounts": []}
teams[team] = {"success": [], "failed": []}
if r.get("status") == "success":
teams[team]["success"] += 1
teams[team]["success"].append(r)
else:
teams[team]["failed"] += 1
teams[team]["failed"].append(r)
teams[team]["accounts"].append(r)
log.info("按 Team 统计:")
for team_name, data in teams.items():
log.info(f"{team_name}: 成功 {data['success']}, 失败 {data['failed']}", icon="team")
for acc in data["accounts"]:
if acc.get("status") == "success":
log.success(f"{acc.get('email', 'Unknown')}")
else:
log.error(f"{acc.get('email', 'Unknown')}")
if teams:
log.info("按 Team 统计:")
for team_name, data in teams.items():
success_list = data["success"]
failed_list = data["failed"]
log.info(f" {team_name}: 成功 {len(success_list)}, 失败 {len(failed_list)}")
# 只显示失败的账号详情
for acc in failed_list:
log.error(f"{acc.get('email', 'Unknown')}")
log.separator("=", 60)