From 06b18b718605ab0a040736b000421e12fb19083e Mon Sep 17 00:00:00 2001 From: lusipad Date: Fri, 5 Dec 2025 08:12:51 +0800 Subject: [PATCH] refactor: extract isProAccount helper for Pro account detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extract duplicate Pro account detection logic into a reusable helper function that handles both API-returned (hasClaudePro) and locally configured (accountType) data sources. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/services/claudeAccountService.js | 29 ++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/services/claudeAccountService.js b/src/services/claudeAccountService.js index 9b00958b..10e6e86a 100644 --- a/src/services/claudeAccountService.js +++ b/src/services/claudeAccountService.js @@ -18,6 +18,21 @@ const LRUCache = require('../utils/lruCache') const { formatDateWithTimezone, getISOStringWithTimezone } = require('../utils/dateHelper') const { isOpus45OrNewer } = require('../utils/modelHelper') +/** + * 判断账号是否为 Pro 账号(非 Max) + * 兼容两种数据来源:API 实时返回的 hasClaudePro 和本地配置的 accountType + * @param {Object} info - 订阅信息对象 + * @returns {boolean} + */ +function isProAccount(info) { + // API 返回的实时状态优先 + if (info.hasClaudePro === true && info.hasClaudeMax !== true) { + return true + } + // 本地配置的账户类型 + return info.accountType === 'claude_pro' +} + class ClaudeAccountService { constructor() { this.claudeApiUrl = 'https://console.anthropic.com/v1/oauth/token' @@ -868,11 +883,8 @@ class ClaudeAccountService { } // Pro 账号:仅支持 Opus 4.5+ - if (info.hasClaudePro === true && info.hasClaudeMax !== true) { - return isNewOpus // 仅新版 Opus 支持 - } - if (info.accountType === 'claude_pro') { - return isNewOpus // 仅新版 Opus 支持 + if (isProAccount(info)) { + return isNewOpus } // Max 账号支持所有 Opus 版本 @@ -997,11 +1009,8 @@ class ClaudeAccountService { } // Pro 账号:仅支持 Opus 4.5+ - if (info.hasClaudePro === true && info.hasClaudeMax !== true) { - return isNewOpus // 仅新版 Opus 支持 - } - if (info.accountType === 'claude_pro') { - return isNewOpus // 仅新版 Opus 支持 + if (isProAccount(info)) { + return isNewOpus } // Max 账号支持所有 Opus 版本