From 16c63b3be9a1935df7a5f0c24a238f0bd3aaa21c Mon Sep 17 00:00:00 2001 From: neotf <10400594+neotf@users.noreply.github.com> Date: Wed, 18 Jun 2025 20:11:48 +0800 Subject: [PATCH] fix(quota): refine cache token calculation for OpenRouter channel type --- service/quota.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/service/quota.go b/service/quota.go index 8c7ed07e..33cc65d7 100644 --- a/service/quota.go +++ b/service/quota.go @@ -232,9 +232,15 @@ func PostClaudeConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, cacheCreationRatio := priceData.CacheCreationRatio cacheCreationTokens := usage.PromptTokensDetails.CachedCreationTokens - if relayInfo.ChannelType == common.ChannelTypeOpenRouter && priceData.CacheCreationRatio != 1 { - cacheCreationTokens = CalcOpenRouterCacheCreateTokens(*usage, priceData) - promptTokens = promptTokens - cacheCreationTokens - cacheTokens + if relayInfo.ChannelType == common.ChannelTypeOpenRouter { + promptTokens -= cacheTokens + if cacheCreationTokens == 0 && priceData.CacheCreationRatio != 1 && usage.Cost != 0 { + maybeCacheCreationTokens := CalcOpenRouterCacheCreateTokens(*usage, priceData) + if promptTokens >= maybeCacheCreationTokens { + cacheCreationTokens = maybeCacheCreationTokens + } + } + promptTokens -= cacheCreationTokens } calculateQuota := 0.0