修复禁用 Sub2API 后删除账号仍报 500 的问题#50
Merged
Merged
Conversation
`get_available_sync_targets` 之前只看配置项是否非空,忽略了用户显式 设置的 `SYNC_TARGET_*=false` 开关。结果是用户把 Sub2API 关掉但 .env 里残留占位符配置时,删除账号仍会尝试调用 Sub2API,连接失败抛 500 导致本地账号也清理不掉。 - 显式 false 的 toggle 在 include_disabled 路径下也要被尊重 - 远端清理调用包 try/except,单个目标失败不再阻断本地删除 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概述
修复仪表盘从 Team 移除账号时返回
500 Internal Server Error的问题。复现路径:用户在
.env中显式设置SYNC_TARGET_SUB2API=false,仅保留 SUB2API_URL/EMAIL/PASSWORD 的占位符值(.env.example复制过来),点击删除账号 → 后端抛JSONDecodeError: Expecting value: line 1 column 1 (char 0)→ 本地账号也没清理掉。根因
delete_account_from_configured_targets删除时使用include_disabled=True以兼容"先关同步、再清理残留"的场景,走的是get_available_sync_targets()分支。而原始的
get_available_sync_targets只检查配置项是否非空,完全忽略了用户显式设置的SYNC_TARGET_*=false开关。因为.env.example里 SUB2API 三项有占位值(http://127.0.0.1:8080/admin@example.com/your_password),仅复制过来就会让该函数判定 Sub2API "可用",于是删除流程仍会尝试_login():连接
127.0.0.1:8080失败,响应体为空,JSON 解析炸开,异常一路冒到 FastAPI 变成 500,本地账号清理流程被中断。修改
src/autoteam/sync_targets.py:get_available_sync_targets尊重显式falsetoggle。如果用户写明SYNC_TARGET_SUB2API=false,即使配置项有占位值也跳过该目标 —— 与get_sync_target_states的语义保持一致。toggle 未设置时仍按"配置齐全即可用"的旧行为处理,向后兼容。远端清理调用全部
try/except包裹。delete_main_codex_from_configured_targets/delete_account_from_configured_targets中每个远端目标的删除调用单独捕获异常,失败时记 WARNING 日志并在results中带error字段返回。这样即便将来配置正确但远端临时不可达(网络抖动、服务重启等),本地账号删除也不会再被阻塞。Test plan
.env中SYNC_TARGET_SUB2API=false+ 占位符配置,仪表盘删除账号不再 500.env未设置 toggle 但配置齐全时 sub2api 仍在 available 列表(向后兼容)SYNC_TARGET_SUB2API=true时仍可正常调用远端[Sub2API] 删除账号 xxx 失败的 warning