Merge pull request #4431 from yyhhyyyyyy/fix/tiered-billing-model-list

fix: include tiered billing models in model listing
This commit is contained in:
yyhhyyyyyy
2026-04-24 16:24:36 +08:00
committed by GitHub
parent 2e610e5fb3
commit e3d64cb76d
5 changed files with 272 additions and 19 deletions
+3
View File
@@ -578,6 +578,9 @@ func handleConfigUpdate(key, value string) bool {
performance_setting.UpdateAndSync()
} else if configName == "tool_price_setting" {
operation_setting.RebuildToolPriceIndex()
} else if configName == "billing_setting" {
InvalidatePricingCache()
ratio_setting.InvalidateExposedDataCache()
}
return true // 已处理
+24 -1
View File
@@ -77,6 +77,29 @@ func GetPricing() []Pricing {
return pricingMap
}
func InvalidatePricingCache() {
updatePricingLock.Lock()
defer updatePricingLock.Unlock()
pricingMap = nil
vendorsList = nil
lastGetPricingTime = time.Time{}
}
func HasModelBillingConfig(modelName string) bool {
if _, ok := ratio_setting.GetModelPrice(modelName, false); ok {
return true
}
if _, ok, _ := ratio_setting.GetModelRatio(modelName); ok {
return true
}
if billing_setting.GetBillingMode(modelName) != billing_setting.BillingModeTieredExpr {
return false
}
expr, ok := billing_setting.GetBillingExpr(modelName)
return ok && strings.TrimSpace(expr) != ""
}
// GetVendors 返回当前定价接口使用到的供应商信息
func GetVendors() []PricingVendor {
if time.Since(lastGetPricingTime) > time.Minute*1 || len(pricingMap) == 0 {
@@ -323,7 +346,7 @@ func updatePricing() {
pricing.AudioCompletionRatio = &audioCompletionRatio
}
if billingMode := billing_setting.GetBillingMode(model); billingMode == "tiered_expr" {
if expr, ok := billing_setting.GetBillingExpr(model); ok && expr != "" {
if expr, ok := billing_setting.GetBillingExpr(model); ok && strings.TrimSpace(expr) != "" {
pricing.BillingMode = billingMode
pricing.BillingExpr = expr
}