update
This commit is contained in:
242
run.py
242
run.py
@@ -364,139 +364,139 @@ def process_accounts(accounts: list, team_name: str, team_index: int = 0,
|
||||
if is_team_owner_otp:
|
||||
# 旧格式 Team Owner: 使用 OTP 登录授权
|
||||
log.info("Team Owner 账号 (旧格式),使用一次性验证码登录...", icon="auth")
|
||||
progress_update(step="OTP Login...")
|
||||
auth_success, codex_data = login_and_authorize_with_otp(email)
|
||||
register_success = auth_success
|
||||
elif need_crs_only:
|
||||
# 已授权但未入库: 跳过授权,直接尝试入库
|
||||
log.info(f"已授权账号 (状态: {account_status}),跳过授权,直接入库...", icon="auth")
|
||||
progress_update(step="Adding to CRS...")
|
||||
register_success = True
|
||||
codex_data = None # CPA/S2A 模式不需要 codex_data
|
||||
# CRS 模式下,由于没有 codex_data,无法入库,需要重新授权
|
||||
if AUTH_PROVIDER not in ("cpa", "s2a"):
|
||||
log.warning("CRS 模式下已授权账号缺少 codex_data,需要重新授权")
|
||||
auth_success, codex_data = authorize_only(email, password)
|
||||
progress_update(step="OTP Login...")
|
||||
auth_success, codex_data = login_and_authorize_with_otp(email)
|
||||
register_success = auth_success
|
||||
elif need_auth_only:
|
||||
# 已注册账号 (包括新格式 Owner): 使用密码登录授权
|
||||
log.info(f"已注册账号 (状态: {account_status}, 角色: {account_role}),使用密码登录授权...", icon="auth")
|
||||
progress_update(step="Authorizing...")
|
||||
auth_success, codex_data = authorize_only(email, password)
|
||||
register_success = True
|
||||
else:
|
||||
# 新账号: 注册 + Codex 授权
|
||||
progress_update(step="Registering...")
|
||||
register_success, codex_data = register_and_authorize(email, password)
|
||||
|
||||
# 检查是否是域名黑名单错误
|
||||
if register_success == "domain_blacklisted":
|
||||
domain = get_domain_from_email(email)
|
||||
log.error(f"域名 {domain} 不被支持,加入黑名单")
|
||||
add_domain_to_blacklist(domain)
|
||||
|
||||
# 从 tracker 中移除
|
||||
remove_account_from_tracker(_tracker, team_name, email)
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
# 尝试创建新邮箱替代
|
||||
log.info("尝试创建新邮箱替代...")
|
||||
new_email, new_password = unified_create_email()
|
||||
if new_email and not is_email_blacklisted(new_email):
|
||||
# 邀请新邮箱
|
||||
if invite_single_to_team(new_email, _get_team_by_name(team_name)):
|
||||
add_account_with_password(_tracker, team_name, new_email, new_password, "invited")
|
||||
save_team_tracker(_tracker)
|
||||
log.success(f"已创建新邮箱: {new_email},将在下次运行时处理")
|
||||
else:
|
||||
log.error("新邮箱邀请失败")
|
||||
else:
|
||||
log.error("无法创建有效的新邮箱")
|
||||
|
||||
continue # 跳过当前账号,继续下一个
|
||||
|
||||
if register_success and register_success != "domain_blacklisted":
|
||||
update_account_status(_tracker, team_name, email, "registered")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
# CPA 模式: codex_data 为 None,授权成功后直接标记完成
|
||||
# CRS 模式: 需要 codex_data,手动添加到 CRS
|
||||
if AUTH_PROVIDER == "s2a":
|
||||
# S2A 模式: 授权成功后验证账号是否入库
|
||||
from s2a_service import s2a_verify_account_in_pool
|
||||
|
||||
update_account_status(_tracker, team_name, email, "authorized")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
# 验证账号是否成功入库
|
||||
log.step("正在验证 S2A 账号入库状态...")
|
||||
progress_update(step="验证入库...")
|
||||
verified, account_data = s2a_verify_account_in_pool(email)
|
||||
|
||||
if verified:
|
||||
account_id = account_data.get("id", "")
|
||||
account_name = account_data.get("name", "")
|
||||
result["status"] = "success"
|
||||
result["crs_id"] = f"S2A-{account_id}"
|
||||
|
||||
update_account_status(_tracker, team_name, email, "completed")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
log.success(f"✅ S2A 账号入库成功 (ID: {account_id}, 名称: {account_name})")
|
||||
else:
|
||||
log.warning("⚠️ S2A 授权成功但入库验证失败")
|
||||
result["status"] = "partial"
|
||||
update_account_status(_tracker, team_name, email, "partial")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
elif AUTH_PROVIDER == "cpa":
|
||||
# CPA 模式: 授权成功即完成 (后台自动处理账号)
|
||||
update_account_status(_tracker, team_name, email, "authorized")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
result["status"] = "success"
|
||||
result["crs_id"] = "CPA-AUTO"
|
||||
|
||||
update_account_status(_tracker, team_name, email, "completed")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
log.success(f"✅ CPA 账号处理完成: {email}")
|
||||
elif need_crs_only:
|
||||
# 已授权但未入库: 跳过授权,直接尝试入库
|
||||
log.info(f"已授权账号 (状态: {account_status}),跳过授权,直接入库...", icon="auth")
|
||||
progress_update(step="Adding to CRS...")
|
||||
register_success = True
|
||||
codex_data = None # CPA/S2A 模式不需要 codex_data
|
||||
# CRS 模式下,由于没有 codex_data,无法入库,需要重新授权
|
||||
if AUTH_PROVIDER not in ("cpa", "s2a"):
|
||||
log.warning("CRS 模式下已授权账号缺少 codex_data,需要重新授权")
|
||||
auth_success, codex_data = authorize_only(email, password)
|
||||
register_success = auth_success
|
||||
elif need_auth_only:
|
||||
# 已注册账号 (包括新格式 Owner): 使用密码登录授权
|
||||
log.info(f"已注册账号 (状态: {account_status}, 角色: {account_role}),使用密码登录授权...", icon="auth")
|
||||
progress_update(step="Authorizing...")
|
||||
auth_success, codex_data = authorize_only(email, password)
|
||||
register_success = True
|
||||
else:
|
||||
# CRS 模式: 原有逻辑
|
||||
if codex_data:
|
||||
# 新账号: 注册 + Codex 授权
|
||||
progress_update(step="Registering...")
|
||||
register_success, codex_data = register_and_authorize(email, password)
|
||||
|
||||
# 检查是否是域名黑名单错误
|
||||
if register_success == "domain_blacklisted":
|
||||
domain = get_domain_from_email(email)
|
||||
log.error(f"域名 {domain} 不被支持,加入黑名单")
|
||||
add_domain_to_blacklist(domain)
|
||||
|
||||
# 从 tracker 中移除
|
||||
remove_account_from_tracker(_tracker, team_name, email)
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
# 尝试创建新邮箱替代
|
||||
log.info("尝试创建新邮箱替代...")
|
||||
new_email, new_password = unified_create_email()
|
||||
if new_email and not is_email_blacklisted(new_email):
|
||||
# 邀请新邮箱
|
||||
if invite_single_to_team(new_email, _get_team_by_name(team_name)):
|
||||
add_account_with_password(_tracker, team_name, new_email, new_password, "invited")
|
||||
save_team_tracker(_tracker)
|
||||
log.success(f"已创建新邮箱: {new_email},将在下次运行时处理")
|
||||
else:
|
||||
log.error("新邮箱邀请失败")
|
||||
else:
|
||||
log.error("无法创建有效的新邮箱")
|
||||
|
||||
continue # 跳过当前账号,继续下一个
|
||||
|
||||
if register_success and register_success != "domain_blacklisted":
|
||||
update_account_status(_tracker, team_name, email, "registered")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
# CPA 模式: codex_data 为 None,授权成功后直接标记完成
|
||||
# CRS 模式: 需要 codex_data,手动添加到 CRS
|
||||
if AUTH_PROVIDER == "s2a":
|
||||
# S2A 模式: 授权成功后验证账号是否入库
|
||||
from s2a_service import s2a_verify_account_in_pool
|
||||
|
||||
update_account_status(_tracker, team_name, email, "authorized")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
# 添加到 CRS
|
||||
log.step("添加到 CRS...")
|
||||
crs_result = crs_add_account(email, codex_data)
|
||||
|
||||
if crs_result:
|
||||
crs_id = crs_result.get("id", "")
|
||||
|
||||
# 验证账号是否成功入库
|
||||
log.step("正在验证 S2A 账号入库状态...")
|
||||
progress_update(step="验证入库...")
|
||||
verified, account_data = s2a_verify_account_in_pool(email)
|
||||
|
||||
if verified:
|
||||
account_id = account_data.get("id", "")
|
||||
account_name = account_data.get("name", "")
|
||||
result["status"] = "success"
|
||||
result["crs_id"] = crs_id
|
||||
|
||||
result["crs_id"] = f"S2A-{account_id}"
|
||||
|
||||
update_account_status(_tracker, team_name, email, "completed")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
log.success(f"账号处理完成: {email}")
|
||||
|
||||
log.success(f"✅ S2A 账号入库成功 (ID: {account_id}, 名称: {account_name})")
|
||||
else:
|
||||
log.warning("CRS 入库失败,但注册和授权成功")
|
||||
log.warning("⚠️ S2A 授权成功但入库验证失败")
|
||||
result["status"] = "partial"
|
||||
update_account_status(_tracker, team_name, email, "partial")
|
||||
save_team_tracker(_tracker)
|
||||
else:
|
||||
log.warning("Codex 授权失败")
|
||||
result["status"] = "auth_failed"
|
||||
update_account_status(_tracker, team_name, email, "auth_failed")
|
||||
|
||||
elif AUTH_PROVIDER == "cpa":
|
||||
# CPA 模式: 授权成功即完成 (后台自动处理账号)
|
||||
update_account_status(_tracker, team_name, email, "authorized")
|
||||
save_team_tracker(_tracker)
|
||||
elif register_success != "domain_blacklisted":
|
||||
if is_team_owner_otp:
|
||||
log.error(f"OTP 登录授权失败: {email}")
|
||||
else:
|
||||
log.error(f"注册/授权失败: {email}")
|
||||
update_account_status(_tracker, team_name, email, "register_failed")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
result["status"] = "success"
|
||||
result["crs_id"] = "CPA-AUTO"
|
||||
|
||||
update_account_status(_tracker, team_name, email, "completed")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
log.success(f"✅ CPA 账号处理完成: {email}")
|
||||
else:
|
||||
# CRS 模式: 原有逻辑
|
||||
if codex_data:
|
||||
update_account_status(_tracker, team_name, email, "authorized")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
# 添加到 CRS
|
||||
log.step("添加到 CRS...")
|
||||
crs_result = crs_add_account(email, codex_data)
|
||||
|
||||
if crs_result:
|
||||
crs_id = crs_result.get("id", "")
|
||||
result["status"] = "success"
|
||||
result["crs_id"] = crs_id
|
||||
|
||||
update_account_status(_tracker, team_name, email, "completed")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
log.success(f"账号处理完成: {email}")
|
||||
else:
|
||||
log.warning("CRS 入库失败,但注册和授权成功")
|
||||
result["status"] = "partial"
|
||||
update_account_status(_tracker, team_name, email, "partial")
|
||||
save_team_tracker(_tracker)
|
||||
else:
|
||||
log.warning("Codex 授权失败")
|
||||
result["status"] = "auth_failed"
|
||||
update_account_status(_tracker, team_name, email, "auth_failed")
|
||||
save_team_tracker(_tracker)
|
||||
elif register_success != "domain_blacklisted":
|
||||
if is_team_owner_otp:
|
||||
log.error(f"OTP 登录授权失败: {email}")
|
||||
else:
|
||||
log.error(f"注册/授权失败: {email}")
|
||||
update_account_status(_tracker, team_name, email, "register_failed")
|
||||
save_team_tracker(_tracker)
|
||||
|
||||
except ShutdownRequested:
|
||||
# 用户请求停止,保存当前状态并退出
|
||||
|
||||
Reference in New Issue
Block a user