This commit is contained in:
2026-01-21 22:24:36 +08:00
parent 6600195a3f
commit 421caca1b7
3 changed files with 335 additions and 1 deletions

View File

@@ -370,3 +370,93 @@ def add_team_owners_to_tracker(tracker: dict, password: str) -> int:
log.info(f"已添加 {added_count} 个 Team Owner 到 tracker", icon="sync")
return added_count
def get_completed_teams(tracker: dict) -> list:
"""获取所有处理成功的 Team 列表
处理成功的定义:所有账号状态都是 completed且没有失败的账号
Args:
tracker: team_tracker 数据
Returns:
list: [{"name": "team_name", "total": 4, "completed": 4, "failed": 0, "pending": 0}]
"""
completed_teams = []
teams_data = tracker.get("teams", {})
for team_name, accounts in teams_data.items():
total = len(accounts)
if total == 0:
continue
completed = sum(1 for a in accounts if a.get("status") == "completed")
failed = sum(1 for a in accounts if "fail" in a.get("status", "").lower())
pending = total - completed - failed
# 全部完成且没有失败的才算成功
if completed == total and failed == 0:
completed_teams.append({
"name": team_name,
"total": total,
"completed": completed,
"failed": failed,
"pending": pending
})
return completed_teams
def remove_team_from_tracker(tracker: dict, team_name: str) -> bool:
"""从 tracker 中删除整个 Team
Args:
tracker: team_tracker 数据
team_name: Team 名称
Returns:
bool: 是否成功删除
"""
if team_name in tracker.get("teams", {}):
del tracker["teams"][team_name]
return True
return False
def batch_remove_completed_teams(tracker: dict) -> dict:
"""批量删除所有处理成功的 Team
Args:
tracker: team_tracker 数据
Returns:
dict: {"success": 删除成功数, "failed": 删除失败数, "total": 总数, "details": [...]}
"""
completed_teams = get_completed_teams(tracker)
results = {
"success": 0,
"failed": 0,
"total": len(completed_teams),
"details": []
}
for team_info in completed_teams:
team_name = team_info["name"]
if remove_team_from_tracker(tracker, team_name):
results["success"] += 1
results["details"].append({
"name": team_name,
"status": "success",
"accounts": team_info["total"]
})
else:
results["failed"] += 1
results["details"].append({
"name": team_name,
"status": "failed",
"message": "删除失败"
})
return results