fix: miscellaneous quick fixes from CodeRabbit review

- log_info_generate.go: add nil guard in InjectTieredBillingInfo
- billing_expr_request.go: merge headers instead of replacing
- go.mod: remove incorrect // indirect on expr-lang/expr
- ToolPriceSettings.jsx: add null check in syncToVisual
- tool_billing.go: fix PricePer1K for image_generation (per-call, not per-1K)
- utils.jsx: add minute() to time condition regex
- useUsageLogsData.jsx: pass displayMode to renderTieredModelPrice
- AGENTS.md, CLAUDE.md: fix Rule 6/7 ordering
- relay-gemini.go: add TEXT modality case in CandidatesTokensDetails
This commit is contained in:
CaIon
2026-04-24 00:34:06 +08:00
parent 3e5f2ee1d6
commit eab478bdc8
10 changed files with 22 additions and 14 deletions
+2
View File
@@ -1045,6 +1045,8 @@ func buildUsageFromGeminiMetadata(metadata dto.GeminiUsageMetadata, fallbackProm
usage.CompletionTokenDetails.ImageTokens += detail.TokenCount
case "AUDIO":
usage.CompletionTokenDetails.AudioTokens += detail.TokenCount
case "TEXT":
usage.CompletionTokenDetails.TextTokens += detail.TokenCount
}
}
+4 -2
View File
@@ -13,9 +13,11 @@ import (
func ResolveIncomingBillingExprRequestInput(c *gin.Context, info *relaycommon.RelayInfo) (billingexpr.RequestInput, error) {
if info != nil && info.BillingRequestInput != nil {
input := cloneRequestInput(*info.BillingRequestInput)
if len(input.Headers) == 0 {
input.Headers = cloneStringMap(info.RequestHeaders)
merged := cloneStringMap(info.RequestHeaders)
for k, v := range input.Headers {
merged[k] = v
}
input.Headers = merged
return input, nil
}