fix(quota): detect Claude plan from account flags

This commit is contained in:
Supra4E8C
2026-03-14 14:53:10 +08:00
Unverified
parent beeecf7d01
commit e833c03c68
4 changed files with 21 additions and 8 deletions
+18 -8
View File
@@ -675,11 +675,16 @@ const buildClaudeQuotaWindows = (
return windows;
};
const CLAUDE_PLAN_TYPE_MAP: Record<string, string> = {
default_claude_max_5x: 'plan_max5',
default_claude_max_20x: 'plan_max20',
default_claude_pro: 'plan_pro',
default_claude_ai: 'plan_free',
const normalizeFlagValue = (value: unknown): boolean | undefined => {
if (value === undefined || value === null) return undefined;
if (typeof value === 'boolean') return value;
if (typeof value === 'number') return value !== 0;
if (typeof value === 'string') {
const trimmed = value.trim().toLowerCase();
if (['true', '1', 'yes', 'y', 'on'].includes(trimmed)) return true;
if (['false', '0', 'no', 'n', 'off'].includes(trimmed)) return false;
}
return undefined;
};
const parseClaudeProfilePayload = (payload: unknown): ClaudeProfileResponse | null => {
@@ -702,10 +707,15 @@ const parseClaudeProfilePayload = (payload: unknown): ClaudeProfileResponse | nu
const resolveClaudePlanType = (profile: ClaudeProfileResponse | null): string | null => {
if (!profile) return null;
const tier = normalizeStringValue(profile.organization?.rate_limit_tier);
if (!tier) return null;
const hasClaudeMax = normalizeFlagValue(profile.account?.has_claude_max);
if (hasClaudeMax) return 'plan_max';
return CLAUDE_PLAN_TYPE_MAP[tier] ?? 'plan_unknown';
const hasClaudePro = normalizeFlagValue(profile.account?.has_claude_pro);
if (hasClaudePro) return 'plan_pro';
if (hasClaudeMax === false && hasClaudePro === false) return 'plan_free';
return null;
};
const fetchClaudeQuota = async (
+1
View File
@@ -604,6 +604,7 @@
"plan_unknown": "Unknown",
"plan_free": "Free",
"plan_pro": "Pro",
"plan_max": "Max",
"plan_max5": "Max 5x",
"plan_max20": "Max 20x"
},
+1
View File
@@ -607,6 +607,7 @@
"plan_unknown": "Неизвестно",
"plan_free": "Free",
"plan_pro": "Pro",
"plan_max": "Max",
"plan_max5": "Max 5x",
"plan_max20": "Max 20x"
},
+1
View File
@@ -604,6 +604,7 @@
"plan_unknown": "未知",
"plan_free": "免费版",
"plan_pro": "专业版",
"plan_max": "Max",
"plan_max5": "Max 5x",
"plan_max20": "Max 20x"
},