4
This commit is contained in:
47
run.py
47
run.py
@@ -133,7 +133,7 @@ def process_single_team(team: dict, team_index: int = 0, teams_total: int = 0) -
|
||||
# 如果普通成员已完成目标数量,且没有未完成的 Owner,跳过
|
||||
owner_incomplete = len(owner_accounts)
|
||||
if member_count >= ACCOUNTS_PER_TEAM and completed_count == member_count and owner_incomplete == 0:
|
||||
print_team_summary(team)
|
||||
# 已完成的 Team 直接跳过,不调用 API
|
||||
log.success(f"{team_name} 已完成 {completed_count}/{ACCOUNTS_PER_TEAM} 个成员账号,跳过")
|
||||
return results, []
|
||||
|
||||
@@ -1133,26 +1133,59 @@ def run_all_teams():
|
||||
log.warning(f"发现 {total_incomplete} 个未完成账号,将优先处理")
|
||||
|
||||
_current_results = []
|
||||
teams_total = len(TEAMS)
|
||||
|
||||
# 筛选需要处理的 Team (有未完成账号或还没开始处理的)
|
||||
teams_to_process = []
|
||||
for i, team in enumerate(TEAMS):
|
||||
team_name = team["name"]
|
||||
team_accounts = _tracker.get("teams", {}).get(team_name, [])
|
||||
member_accounts = [acc for acc in team_accounts if acc.get("role") != "owner"]
|
||||
owner_accounts = [acc for acc in team_accounts if acc.get("role") == "owner" and acc.get("status") != "completed"]
|
||||
|
||||
completed_count = sum(1 for acc in member_accounts if acc.get("status") == "completed")
|
||||
member_count = len(member_accounts)
|
||||
|
||||
# 需要处理的条件:
|
||||
# 1. 成员数量未达标
|
||||
# 2. 有未完成的成员
|
||||
# 3. 有未完成的 Owner
|
||||
needs_processing = (
|
||||
member_count < ACCOUNTS_PER_TEAM or
|
||||
completed_count < member_count or
|
||||
len(owner_accounts) > 0
|
||||
)
|
||||
|
||||
if needs_processing:
|
||||
teams_to_process.append((i, team))
|
||||
|
||||
if not teams_to_process:
|
||||
log.success("所有 Team 已完成处理,无需继续")
|
||||
return _current_results
|
||||
|
||||
skipped_count = len(TEAMS) - len(teams_to_process)
|
||||
if skipped_count > 0:
|
||||
log.info(f"跳过 {skipped_count} 个已完成的 Team,处理剩余 {len(teams_to_process)} 个")
|
||||
|
||||
teams_total = len(teams_to_process)
|
||||
|
||||
with Timer("全部流程"):
|
||||
# ========== 处理所有 Team (成员 + Owner 一起) ==========
|
||||
for i, team in enumerate(TEAMS):
|
||||
# ========== 处理需要处理的 Team (成员 + Owner 一起) ==========
|
||||
for idx, (original_idx, team) in enumerate(teams_to_process):
|
||||
if _shutdown_requested:
|
||||
log.warning("检测到中断请求,停止处理...")
|
||||
break
|
||||
|
||||
log.separator("★", 60)
|
||||
team_email = team.get('account') or team.get('owner_email', '')
|
||||
log.highlight(f"Team {i + 1}/{teams_total}: {team['name']} ({team_email})", icon="team")
|
||||
log.highlight(f"Team {idx + 1}/{teams_total}: {team['name']} ({team_email})", icon="team")
|
||||
log.separator("★", 60)
|
||||
|
||||
# 传递 Team 序号信息
|
||||
results, _ = process_single_team(team, team_index=i + 1, teams_total=teams_total)
|
||||
results, _ = process_single_team(team, team_index=idx + 1, teams_total=teams_total)
|
||||
_current_results.extend(results)
|
||||
|
||||
# Team 之间的间隔
|
||||
if i < teams_total - 1 and not _shutdown_requested:
|
||||
if idx < teams_total - 1 and not _shutdown_requested:
|
||||
wait_time = 3
|
||||
log.countdown(wait_time, "下一个 Team")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user