From ef1a992cf0a15d8ed0323a959c7747c4404eb26d Mon Sep 17 00:00:00 2001 From: QTom Date: Thu, 2 Apr 2026 20:44:12 +0800 Subject: [PATCH] fix(openai): refresh token when expires_at missing and account is rate-limited Prevents token silent expiry during 7-day rate limit periods. Made-with: Cursor --- backend/internal/service/token_refresher.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/internal/service/token_refresher.go b/backend/internal/service/token_refresher.go index 5a214161..6d732b9c 100644 --- a/backend/internal/service/token_refresher.go +++ b/backend/internal/service/token_refresher.go @@ -109,11 +109,11 @@ func (r *OpenAITokenRefresher) CanRefresh(account *Account) bool { } // NeedsRefresh 检查token是否需要刷新 -// 基于 expires_at 字段判断是否在刷新窗口内 +// expires_at 缺失且处于限流状态时需要刷新,防止限流期间 token 静默过期 func (r *OpenAITokenRefresher) NeedsRefresh(account *Account, refreshWindow time.Duration) bool { expiresAt := account.GetCredentialAsTime("expires_at") if expiresAt == nil { - return false + return account.IsRateLimited() } return time.Until(*expiresAt) < refreshWindow