fix: 修复重置账号状态后仍被认为不可用的bug

问题描述:
- 重置账号状态时虽然正确设置了 schedulable: 'true'
- 但在账号选择逻辑中缺少对 schedulable !== 'false' 的检查
- 导致重置后的账号仍被认为不可用

修复内容:
- selectAvailableAccount: 在 activeAccounts 过滤中添加 schedulable 检查
- selectAccountForApiKey: 在绑定账户和 sharedAccounts 过滤中添加 schedulable 检查
- 确保重置状态后的账号能正确被识别为可用

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
sczheng189
2025-08-25 11:44:26 +08:00
parent 81ad8a787f
commit 5366dc70e1

View File

@@ -630,7 +630,10 @@ class ClaudeAccountService {
const accounts = await redis.getAllClaudeAccounts()
let activeAccounts = accounts.filter(
(account) => account.isActive === 'true' && account.status !== 'error'
(account) =>
account.isActive === 'true' &&
account.status !== 'error' &&
account.schedulable !== 'false'
)
// 如果请求的是 Opus 模型,过滤掉 Pro 和 Free 账号
@@ -717,7 +720,12 @@ class ClaudeAccountService {
// 如果API Key绑定了专属账户优先使用
if (apiKeyData.claudeAccountId) {
const boundAccount = await redis.getClaudeAccount(apiKeyData.claudeAccountId)
if (boundAccount && boundAccount.isActive === 'true' && boundAccount.status !== 'error') {
if (
boundAccount &&
boundAccount.isActive === 'true' &&
boundAccount.status !== 'error' &&
boundAccount.schedulable !== 'false'
) {
logger.info(
`🎯 Using bound dedicated account: ${boundAccount.name} (${apiKeyData.claudeAccountId}) for API key ${apiKeyData.name}`
)
@@ -736,6 +744,7 @@ class ClaudeAccountService {
(account) =>
account.isActive === 'true' &&
account.status !== 'error' &&
account.schedulable !== 'false' &&
(account.accountType === 'shared' || !account.accountType) // 兼容旧数据
)