update
This commit is contained in:
90
utils.py
90
utils.py
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user