From 0099167a6d8fd45eb7ed4f82b176fb51553dc65e Mon Sep 17 00:00:00 2001 From: ZheFox Date: Thu, 16 Jul 2026 19:13:09 +0800 Subject: [PATCH] =?UTF-8?q?fix(codex):=20=E9=81=BF=E5=85=8D=E9=87=8D?= =?UTF-8?q?=E7=BD=AE=E6=9C=BA=E4=BC=9A=E7=BC=BA=E5=A4=B1=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E9=85=8D=E9=A2=9D=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/ProviderDetailDrawer.vue | 9 ++------- .../__tests__/codex-reset-credit-display.spec.ts | 16 ---------------- .../components/codex-reset-credit-display.ts | 12 ------------ 3 files changed, 2 insertions(+), 35 deletions(-) diff --git a/frontend/src/features/providers/components/ProviderDetailDrawer.vue b/frontend/src/features/providers/components/ProviderDetailDrawer.vue index a1a52e63e..bc4cef6ff 100644 --- a/frontend/src/features/providers/components/ProviderDetailDrawer.vue +++ b/frontend/src/features/providers/components/ProviderDetailDrawer.vue @@ -1020,7 +1020,6 @@ import { getCodexResetCreditAvailableCount as getCodexResetCreditAvailableCountFromSnapshot, getVisibleCodexResetCreditItems as getVisibleCodexResetCreditItemsFromSnapshot, mergeCodexQuotaDisplays, - shouldRefreshMissingCodexResetCredits, } from './codex-reset-credit-display' // 扩展端点类型,包含密钥列表 @@ -2444,12 +2443,8 @@ function shouldAutoRefreshCodexQuota(): boolean { if (isTokenExpiringSoon(key, now)) return true - // 旧缓存缺少 reset-credit 数据时补拉;近期已检查过则等待缓存过期 - if (!hasCodexQuotaDisplayData(key) || shouldRefreshMissingCodexResetCredits( - getCodexResetCreditsDisplay(key), - now, - AUTO_QUOTA_REFRESH_STALE_SECONDS, - )) { + // reset-credit 独立于 Token 刷新;这里只按账号配额缓存决定是否后台更新 + if (!hasCodexQuotaDisplayData(key)) { return true } // 配额数据超过 5 分钟未更新,也触发刷新 diff --git a/frontend/src/features/providers/components/__tests__/codex-reset-credit-display.spec.ts b/frontend/src/features/providers/components/__tests__/codex-reset-credit-display.spec.ts index e2ea35ce3..64d566d87 100644 --- a/frontend/src/features/providers/components/__tests__/codex-reset-credit-display.spec.ts +++ b/frontend/src/features/providers/components/__tests__/codex-reset-credit-display.spec.ts @@ -7,7 +7,6 @@ import { getCodexResetCreditAvailableCount, getVisibleCodexResetCreditItems, mergeCodexQuotaDisplays, - shouldRefreshMissingCodexResetCredits, } from '@/features/providers/components/codex-reset-credit-display' import type { QuotaResetCreditsSnapshot } from '@/api/endpoints/types' @@ -60,21 +59,6 @@ describe('codex reset credit display helpers', () => { expect(getVisibleCodexResetCreditItems(snapshot, 1_700_000_000)).toEqual([]) }) - it('retries missing reset credits only when the cached detail check is stale', () => { - expect(shouldRefreshMissingCodexResetCredits(null, 1_700_000_000)).toBe(true) - expect(shouldRefreshMissingCodexResetCredits({ - detail_status: 'failed', - updated_at: 1_699_999_900, - }, 1_700_000_000)).toBe(false) - expect(shouldRefreshMissingCodexResetCredits({ - detail_status: 'failed', - updated_at: 1_699_999_600, - }, 1_700_000_000)).toBe(true) - expect(shouldRefreshMissingCodexResetCredits({ - available_count: 0, - }, 1_700_000_000)).toBe(false) - }) - it('sorts available detail items by remaining time and labels visible items with short ordinal keys', () => { const snapshot: QuotaResetCreditsSnapshot = { available_count: 7, diff --git a/frontend/src/features/providers/components/codex-reset-credit-display.ts b/frontend/src/features/providers/components/codex-reset-credit-display.ts index b6add4005..07f437592 100644 --- a/frontend/src/features/providers/components/codex-reset-credit-display.ts +++ b/frontend/src/features/providers/components/codex-reset-credit-display.ts @@ -57,18 +57,6 @@ export function getCodexResetCreditAvailableCount( return typeof count === 'number' && Number.isFinite(count) && count >= 0 ? count : null } -export function shouldRefreshMissingCodexResetCredits( - snapshot: QuotaResetCreditsSnapshot | null | undefined, - nowUnixSecs = Math.floor(Date.now() / 1000), - staleSeconds = 5 * 60, -): boolean { - if (getCodexResetCreditAvailableCount(snapshot) !== null) return false - - const updatedAt = Number(snapshot?.updated_at) - if (!Number.isFinite(updatedAt)) return true - return (nowUnixSecs - updatedAt) > staleSeconds -} - export function formatCodexResetCreditCount(count: number | null | undefined): string { return `共 ${count ?? 0} 次机会` }