Merge pull request #4297 from wp-a/fix/openai-reset-credit-malformed-details

fix(openai): preserve reset count on malformed details
This commit is contained in:
Wesley Liddick
2026-07-15 11:08:25 +08:00
committed by GitHub
3 changed files with 17 additions and 2 deletions
@@ -59,7 +59,7 @@ func parseOpenAIRateLimitResetCreditDetails(body []byte) (openAIRateLimitResetCr
payload.Data,
)
if err != nil {
return openAIRateLimitResetCreditDetails{}, err
return openAIRateLimitResetCreditDetails{AvailableCount: availableCount}, err
}
}
@@ -82,6 +82,19 @@ func TestQueryUsageResetCreditCountPrecedence(t *testing.T) {
wantCount: 5,
wantCredits: 1,
},
{
name: "valid detail count survives malformed authoritative list",
usageBody: `{"rate_limit_reset_credits":{"available_count":7,"credits":[{"expires_at":"usage-expiry"}]}}`,
detailBody: `{"available_count":2,"credits":"malformed"}`,
wantCount: 2,
wantCredits: 1,
},
{
name: "valid detail count creates quota despite malformed authoritative list",
usageBody: `{}`,
detailBody: `{"available_count":2,"credits":"malformed"}`,
wantCount: 2,
},
{
name: "negative detail count without list preserves usage",
usageBody: `{"rate_limit_reset_credits":{"available_count":4}}`,
@@ -230,7 +230,9 @@ func (s *OpenAIQuotaService) queryResetCreditDetails(ctx context.Context, client
details, err := parseOpenAIRateLimitResetCreditDetails(resp.Bytes())
if err != nil {
slog.Warn("openai_quota_reset_credit_details_parse_failed", "account_id", accountID, "error", err)
return nil
if details.AvailableCount == nil {
return nil
}
}
if details.AvailableCount == nil && !details.CreditListPresent {
return nil