Przeglądaj źródła

🚚 Refactor(ratio_setting): refactor ratio management into standalone `ratio_setting` package

Summary
• Migrated all ratio-related sources into `setting/ratio_setting/`
  – `model_ratio.go` (renamed from model-ratio.go)
  – `cache_ratio.go`
  – `group_ratio.go`
• Changed package name to `ratio_setting` and relocated initialization (`ratio_setting.InitRatioSettings()` in main).
• Updated every import & call site:
  – Model / cache / completion / image ratio helpers
  – Group ratio helpers (`GetGroupRatio*`, `ContainsGroupRatio`, `CheckGroupRatio`, etc.)
  – JSON-serialization & update helpers (`*Ratio2JSONString`, `Update*RatioByJSONString`)
• Adjusted controllers, middleware, relay helpers, services and models to reference the new package.
• Removed obsolete `setting` / `operation_setting` imports; added missing `ratio_setting` imports.
• Adopted idiomatic map iteration (`for key := range m`) where value is unused.
• Ran static checks to ensure clean build.

This commit centralises all ratio configuration (model, cache and group) in one cohesive module, simplifying future maintenance and improving code clarity.
Apple\Apple 10 miesięcy temu
rodzic
commit
a180d13182

+ 3 - 2
controller/group.go

@@ -4,13 +4,14 @@ import (
 	"net/http"
 	"net/http"
 	"one-api/model"
 	"one-api/model"
 	"one-api/setting"
 	"one-api/setting"
+	"one-api/setting/ratio_setting"
 
 
 	"github.com/gin-gonic/gin"
 	"github.com/gin-gonic/gin"
 )
 )
 
 
 func GetGroups(c *gin.Context) {
 func GetGroups(c *gin.Context) {
 	groupNames := make([]string, 0)
 	groupNames := make([]string, 0)
-	for groupName, _ := range setting.GetGroupRatioCopy() {
+	for groupName := range ratio_setting.GetGroupRatioCopy() {
 		groupNames = append(groupNames, groupName)
 		groupNames = append(groupNames, groupName)
 	}
 	}
 	c.JSON(http.StatusOK, gin.H{
 	c.JSON(http.StatusOK, gin.H{
@@ -25,7 +26,7 @@ func GetUserGroups(c *gin.Context) {
 	userGroup := ""
 	userGroup := ""
 	userId := c.GetInt("id")
 	userId := c.GetInt("id")
 	userGroup, _ = model.GetUserGroup(userId, false)
 	userGroup, _ = model.GetUserGroup(userId, false)
-	for groupName, ratio := range setting.GetGroupRatioCopy() {
+	for groupName, ratio := range ratio_setting.GetGroupRatioCopy() {
 		// UserUsableGroups contains the groups that the user can use
 		// UserUsableGroups contains the groups that the user can use
 		userUsableGroups := setting.GetUserUsableGroups(userGroup)
 		userUsableGroups := setting.GetUserUsableGroups(userGroup)
 		if desc, ok := userUsableGroups[groupName]; ok {
 		if desc, ok := userUsableGroups[groupName]; ok {

+ 2 - 1
controller/option.go

@@ -7,6 +7,7 @@ import (
 	"one-api/model"
 	"one-api/model"
 	"one-api/setting"
 	"one-api/setting"
 	"one-api/setting/console_setting"
 	"one-api/setting/console_setting"
+	"one-api/setting/ratio_setting"
 	"one-api/setting/system_setting"
 	"one-api/setting/system_setting"
 	"strings"
 	"strings"
 
 
@@ -103,7 +104,7 @@ func UpdateOption(c *gin.Context) {
 			return
 			return
 		}
 		}
 	case "GroupRatio":
 	case "GroupRatio":
-		err = setting.CheckGroupRatio(option.Value)
+		err = ratio_setting.CheckGroupRatio(option.Value)
 		if err != nil {
 		if err != nil {
 			c.JSON(http.StatusOK, gin.H{
 			c.JSON(http.StatusOK, gin.H{
 				"success": false,
 				"success": false,

+ 6 - 6
controller/pricing.go

@@ -3,7 +3,7 @@ package controller
 import (
 import (
 	"one-api/model"
 	"one-api/model"
 	"one-api/setting"
 	"one-api/setting"
-	"one-api/setting/operation_setting"
+	"one-api/setting/ratio_setting"
 
 
 	"github.com/gin-gonic/gin"
 	"github.com/gin-gonic/gin"
 )
 )
@@ -13,7 +13,7 @@ func GetPricing(c *gin.Context) {
 	userId, exists := c.Get("id")
 	userId, exists := c.Get("id")
 	usableGroup := map[string]string{}
 	usableGroup := map[string]string{}
 	groupRatio := map[string]float64{}
 	groupRatio := map[string]float64{}
-	for s, f := range setting.GetGroupRatioCopy() {
+	for s, f := range ratio_setting.GetGroupRatioCopy() {
 		groupRatio[s] = f
 		groupRatio[s] = f
 	}
 	}
 	var group string
 	var group string
@@ -22,7 +22,7 @@ func GetPricing(c *gin.Context) {
 		if err == nil {
 		if err == nil {
 			group = user.Group
 			group = user.Group
 			for g := range groupRatio {
 			for g := range groupRatio {
-				ratio, ok := setting.GetGroupGroupRatio(group, g)
+				ratio, ok := ratio_setting.GetGroupGroupRatio(group, g)
 				if ok {
 				if ok {
 					groupRatio[g] = ratio
 					groupRatio[g] = ratio
 				}
 				}
@@ -32,7 +32,7 @@ func GetPricing(c *gin.Context) {
 
 
 	usableGroup = setting.GetUserUsableGroups(group)
 	usableGroup = setting.GetUserUsableGroups(group)
 	// check groupRatio contains usableGroup
 	// check groupRatio contains usableGroup
-	for group := range setting.GetGroupRatioCopy() {
+	for group := range ratio_setting.GetGroupRatioCopy() {
 		if _, ok := usableGroup[group]; !ok {
 		if _, ok := usableGroup[group]; !ok {
 			delete(groupRatio, group)
 			delete(groupRatio, group)
 		}
 		}
@@ -47,7 +47,7 @@ func GetPricing(c *gin.Context) {
 }
 }
 
 
 func ResetModelRatio(c *gin.Context) {
 func ResetModelRatio(c *gin.Context) {
-	defaultStr := operation_setting.DefaultModelRatio2JSONString()
+	defaultStr := ratio_setting.DefaultModelRatio2JSONString()
 	err := model.UpdateOption("ModelRatio", defaultStr)
 	err := model.UpdateOption("ModelRatio", defaultStr)
 	if err != nil {
 	if err != nil {
 		c.JSON(200, gin.H{
 		c.JSON(200, gin.H{
@@ -56,7 +56,7 @@ func ResetModelRatio(c *gin.Context) {
 		})
 		})
 		return
 		return
 	}
 	}
-	err = operation_setting.UpdateModelRatioByJSONString(defaultStr)
+	err = ratio_setting.UpdateModelRatioByJSONString(defaultStr)
 	if err != nil {
 	if err != nil {
 		c.JSON(200, gin.H{
 		c.JSON(200, gin.H{
 			"success": false,
 			"success": false,

+ 2 - 2
main.go

@@ -12,7 +12,7 @@ import (
 	"one-api/model"
 	"one-api/model"
 	"one-api/router"
 	"one-api/router"
 	"one-api/service"
 	"one-api/service"
-	"one-api/setting/operation_setting"
+	"one-api/setting/ratio_setting"
 	"os"
 	"os"
 	"strconv"
 	"strconv"
 
 
@@ -74,7 +74,7 @@ func main() {
 	}
 	}
 
 
 	// Initialize model settings
 	// Initialize model settings
-	operation_setting.InitRatioSettings()
+	ratio_setting.InitRatioSettings()
 	// Initialize constants
 	// Initialize constants
 	constant.InitEnv()
 	constant.InitEnv()
 	// Initialize options
 	// Initialize options

+ 2 - 1
middleware/distributor.go

@@ -11,6 +11,7 @@ import (
 	relayconstant "one-api/relay/constant"
 	relayconstant "one-api/relay/constant"
 	"one-api/service"
 	"one-api/service"
 	"one-api/setting"
 	"one-api/setting"
+	"one-api/setting/ratio_setting"
 	"strconv"
 	"strconv"
 	"strings"
 	"strings"
 	"time"
 	"time"
@@ -48,7 +49,7 @@ func Distribute() func(c *gin.Context) {
 				return
 				return
 			}
 			}
 			// check group in common.GroupRatio
 			// check group in common.GroupRatio
-			if !setting.ContainsGroupRatio(tokenGroup) {
+			if !ratio_setting.ContainsGroupRatio(tokenGroup) {
 				if tokenGroup != "auto" {
 				if tokenGroup != "auto" {
 					abortWithOpenAiMessage(c, http.StatusForbidden, fmt.Sprintf("分组 %s 已被弃用", tokenGroup))
 					abortWithOpenAiMessage(c, http.StatusForbidden, fmt.Sprintf("分组 %s 已被弃用", tokenGroup))
 					return
 					return

+ 13 - 12
model/option.go

@@ -5,6 +5,7 @@ import (
 	"one-api/setting"
 	"one-api/setting"
 	"one-api/setting/config"
 	"one-api/setting/config"
 	"one-api/setting/operation_setting"
 	"one-api/setting/operation_setting"
+	"one-api/setting/ratio_setting"
 	"strconv"
 	"strconv"
 	"strings"
 	"strings"
 	"time"
 	"time"
@@ -96,13 +97,13 @@ func InitOptionMap() {
 	common.OptionMap["ModelRequestRateLimitDurationMinutes"] = strconv.Itoa(setting.ModelRequestRateLimitDurationMinutes)
 	common.OptionMap["ModelRequestRateLimitDurationMinutes"] = strconv.Itoa(setting.ModelRequestRateLimitDurationMinutes)
 	common.OptionMap["ModelRequestRateLimitSuccessCount"] = strconv.Itoa(setting.ModelRequestRateLimitSuccessCount)
 	common.OptionMap["ModelRequestRateLimitSuccessCount"] = strconv.Itoa(setting.ModelRequestRateLimitSuccessCount)
 	common.OptionMap["ModelRequestRateLimitGroup"] = setting.ModelRequestRateLimitGroup2JSONString()
 	common.OptionMap["ModelRequestRateLimitGroup"] = setting.ModelRequestRateLimitGroup2JSONString()
-	common.OptionMap["ModelRatio"] = operation_setting.ModelRatio2JSONString()
-	common.OptionMap["ModelPrice"] = operation_setting.ModelPrice2JSONString()
-	common.OptionMap["CacheRatio"] = operation_setting.CacheRatio2JSONString()
-	common.OptionMap["GroupRatio"] = setting.GroupRatio2JSONString()
-	common.OptionMap["GroupGroupRatio"] = setting.GroupGroupRatio2JSONString()
+	common.OptionMap["ModelRatio"] = ratio_setting.ModelRatio2JSONString()
+	common.OptionMap["ModelPrice"] = ratio_setting.ModelPrice2JSONString()
+	common.OptionMap["CacheRatio"] = ratio_setting.CacheRatio2JSONString()
+	common.OptionMap["GroupRatio"] = ratio_setting.GroupRatio2JSONString()
+	common.OptionMap["GroupGroupRatio"] = ratio_setting.GroupGroupRatio2JSONString()
 	common.OptionMap["UserUsableGroups"] = setting.UserUsableGroups2JSONString()
 	common.OptionMap["UserUsableGroups"] = setting.UserUsableGroups2JSONString()
-	common.OptionMap["CompletionRatio"] = operation_setting.CompletionRatio2JSONString()
+	common.OptionMap["CompletionRatio"] = ratio_setting.CompletionRatio2JSONString()
 	common.OptionMap["TopUpLink"] = common.TopUpLink
 	common.OptionMap["TopUpLink"] = common.TopUpLink
 	//common.OptionMap["ChatLink"] = common.ChatLink
 	//common.OptionMap["ChatLink"] = common.ChatLink
 	//common.OptionMap["ChatLink2"] = common.ChatLink2
 	//common.OptionMap["ChatLink2"] = common.ChatLink2
@@ -358,19 +359,19 @@ func updateOptionMap(key string, value string) (err error) {
 	case "DataExportDefaultTime":
 	case "DataExportDefaultTime":
 		common.DataExportDefaultTime = value
 		common.DataExportDefaultTime = value
 	case "ModelRatio":
 	case "ModelRatio":
-		err = operation_setting.UpdateModelRatioByJSONString(value)
+		err = ratio_setting.UpdateModelRatioByJSONString(value)
 	case "GroupRatio":
 	case "GroupRatio":
-		err = setting.UpdateGroupRatioByJSONString(value)
+		err = ratio_setting.UpdateGroupRatioByJSONString(value)
 	case "GroupGroupRatio":
 	case "GroupGroupRatio":
-		err = setting.UpdateGroupGroupRatioByJSONString(value)
+		err = ratio_setting.UpdateGroupGroupRatioByJSONString(value)
 	case "UserUsableGroups":
 	case "UserUsableGroups":
 		err = setting.UpdateUserUsableGroupsByJSONString(value)
 		err = setting.UpdateUserUsableGroupsByJSONString(value)
 	case "CompletionRatio":
 	case "CompletionRatio":
-		err = operation_setting.UpdateCompletionRatioByJSONString(value)
+		err = ratio_setting.UpdateCompletionRatioByJSONString(value)
 	case "ModelPrice":
 	case "ModelPrice":
-		err = operation_setting.UpdateModelPriceByJSONString(value)
+		err = ratio_setting.UpdateModelPriceByJSONString(value)
 	case "CacheRatio":
 	case "CacheRatio":
-		err = operation_setting.UpdateCacheRatioByJSONString(value)
+		err = ratio_setting.UpdateCacheRatioByJSONString(value)
 	case "TopUpLink":
 	case "TopUpLink":
 		common.TopUpLink = value
 		common.TopUpLink = value
 	//case "ChatLink":
 	//case "ChatLink":

+ 4 - 4
model/pricing.go

@@ -2,7 +2,7 @@ package model
 
 
 import (
 import (
 	"one-api/common"
 	"one-api/common"
-	"one-api/setting/operation_setting"
+	"one-api/setting/ratio_setting"
 	"sync"
 	"sync"
 	"time"
 	"time"
 )
 )
@@ -65,14 +65,14 @@ func updatePricing() {
 			ModelName:   model,
 			ModelName:   model,
 			EnableGroup: groups,
 			EnableGroup: groups,
 		}
 		}
-		modelPrice, findPrice := operation_setting.GetModelPrice(model, false)
+		modelPrice, findPrice := ratio_setting.GetModelPrice(model, false)
 		if findPrice {
 		if findPrice {
 			pricing.ModelPrice = modelPrice
 			pricing.ModelPrice = modelPrice
 			pricing.QuotaType = 1
 			pricing.QuotaType = 1
 		} else {
 		} else {
-			modelRatio, _ := operation_setting.GetModelRatio(model)
+			modelRatio, _ := ratio_setting.GetModelRatio(model)
 			pricing.ModelRatio = modelRatio
 			pricing.ModelRatio = modelRatio
-			pricing.CompletionRatio = operation_setting.GetCompletionRatio(model)
+			pricing.CompletionRatio = ratio_setting.GetCompletionRatio(model)
 			pricing.QuotaType = 0
 			pricing.QuotaType = 0
 		}
 		}
 		pricingMap = append(pricingMap, pricing)
 		pricingMap = append(pricingMap, pricing)

+ 11 - 12
relay/helper/price.go

@@ -5,8 +5,7 @@ import (
 	"one-api/common"
 	"one-api/common"
 	constant2 "one-api/constant"
 	constant2 "one-api/constant"
 	relaycommon "one-api/relay/common"
 	relaycommon "one-api/relay/common"
-	"one-api/setting"
-	"one-api/setting/operation_setting"
+	"one-api/setting/ratio_setting"
 
 
 	"github.com/gin-gonic/gin"
 	"github.com/gin-gonic/gin"
 )
 )
@@ -49,21 +48,21 @@ func HandleGroupRatio(ctx *gin.Context, relayInfo *relaycommon.RelayInfo) GroupR
 	}
 	}
 
 
 	// check user group special ratio
 	// check user group special ratio
-	userGroupRatio, ok := setting.GetGroupGroupRatio(relayInfo.UserGroup, relayInfo.Group)
+	userGroupRatio, ok := ratio_setting.GetGroupGroupRatio(relayInfo.UserGroup, relayInfo.Group)
 	if ok {
 	if ok {
 		// user group special ratio
 		// user group special ratio
 		groupRatioInfo.GroupSpecialRatio = userGroupRatio
 		groupRatioInfo.GroupSpecialRatio = userGroupRatio
 		groupRatioInfo.GroupRatio = userGroupRatio
 		groupRatioInfo.GroupRatio = userGroupRatio
 	} else {
 	} else {
 		// normal group ratio
 		// normal group ratio
-		groupRatioInfo.GroupRatio = setting.GetGroupRatio(relayInfo.Group)
+		groupRatioInfo.GroupRatio = ratio_setting.GetGroupRatio(relayInfo.Group)
 	}
 	}
 
 
 	return groupRatioInfo
 	return groupRatioInfo
 }
 }
 
 
 func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promptTokens int, maxTokens int) (PriceData, error) {
 func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promptTokens int, maxTokens int) (PriceData, error) {
-	modelPrice, usePrice := operation_setting.GetModelPrice(info.OriginModelName, false)
+	modelPrice, usePrice := ratio_setting.GetModelPrice(info.OriginModelName, false)
 
 
 	groupRatioInfo := HandleGroupRatio(c, info)
 	groupRatioInfo := HandleGroupRatio(c, info)
 
 
@@ -79,7 +78,7 @@ func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promptTokens
 			preConsumedTokens = promptTokens + maxTokens
 			preConsumedTokens = promptTokens + maxTokens
 		}
 		}
 		var success bool
 		var success bool
-		modelRatio, success = operation_setting.GetModelRatio(info.OriginModelName)
+		modelRatio, success = ratio_setting.GetModelRatio(info.OriginModelName)
 		if !success {
 		if !success {
 			acceptUnsetRatio := false
 			acceptUnsetRatio := false
 			if accept, ok := info.UserSetting[constant2.UserAcceptUnsetRatioModel]; ok {
 			if accept, ok := info.UserSetting[constant2.UserAcceptUnsetRatioModel]; ok {
@@ -92,10 +91,10 @@ func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promptTokens
 				return PriceData{}, fmt.Errorf("模型 %s 倍率或价格未配置,请联系管理员设置或开始自用模式;Model %s ratio or price not set, please set or start self-use mode", info.OriginModelName, info.OriginModelName)
 				return PriceData{}, fmt.Errorf("模型 %s 倍率或价格未配置,请联系管理员设置或开始自用模式;Model %s ratio or price not set, please set or start self-use mode", info.OriginModelName, info.OriginModelName)
 			}
 			}
 		}
 		}
-		completionRatio = operation_setting.GetCompletionRatio(info.OriginModelName)
-		cacheRatio, _ = operation_setting.GetCacheRatio(info.OriginModelName)
-		cacheCreationRatio, _ = operation_setting.GetCreateCacheRatio(info.OriginModelName)
-		imageRatio, _ = operation_setting.GetImageRatio(info.OriginModelName)
+		completionRatio = ratio_setting.GetCompletionRatio(info.OriginModelName)
+		cacheRatio, _ = ratio_setting.GetCacheRatio(info.OriginModelName)
+		cacheCreationRatio, _ = ratio_setting.GetCreateCacheRatio(info.OriginModelName)
+		imageRatio, _ = ratio_setting.GetImageRatio(info.OriginModelName)
 		ratio := modelRatio * groupRatioInfo.GroupRatio
 		ratio := modelRatio * groupRatioInfo.GroupRatio
 		preConsumedQuota = int(float64(preConsumedTokens) * ratio)
 		preConsumedQuota = int(float64(preConsumedTokens) * ratio)
 	} else {
 	} else {
@@ -122,11 +121,11 @@ func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promptTokens
 }
 }
 
 
 func ContainPriceOrRatio(modelName string) bool {
 func ContainPriceOrRatio(modelName string) bool {
-	_, ok := operation_setting.GetModelPrice(modelName, false)
+	_, ok := ratio_setting.GetModelPrice(modelName, false)
 	if ok {
 	if ok {
 		return true
 		return true
 	}
 	}
-	_, ok = operation_setting.GetModelRatio(modelName)
+	_, ok = ratio_setting.GetModelRatio(modelName)
 	if ok {
 	if ok {
 		return true
 		return true
 	}
 	}

+ 7 - 7
relay/relay-mj.go

@@ -15,7 +15,7 @@ import (
 	relayconstant "one-api/relay/constant"
 	relayconstant "one-api/relay/constant"
 	"one-api/service"
 	"one-api/service"
 	"one-api/setting"
 	"one-api/setting"
-	"one-api/setting/operation_setting"
+	"one-api/setting/ratio_setting"
 	"strconv"
 	"strconv"
 	"strings"
 	"strings"
 	"time"
 	"time"
@@ -174,17 +174,17 @@ func RelaySwapFace(c *gin.Context) *dto.MidjourneyResponse {
 		return service.MidjourneyErrorWrapper(constant.MjRequestError, "sour_base64_and_target_base64_is_required")
 		return service.MidjourneyErrorWrapper(constant.MjRequestError, "sour_base64_and_target_base64_is_required")
 	}
 	}
 	modelName := service.CoverActionToModelName(constant.MjActionSwapFace)
 	modelName := service.CoverActionToModelName(constant.MjActionSwapFace)
-	modelPrice, success := operation_setting.GetModelPrice(modelName, true)
+	modelPrice, success := ratio_setting.GetModelPrice(modelName, true)
 	// 如果没有配置价格,则使用默认价格
 	// 如果没有配置价格,则使用默认价格
 	if !success {
 	if !success {
-		defaultPrice, ok := operation_setting.GetDefaultModelRatioMap()[modelName]
+		defaultPrice, ok := ratio_setting.GetDefaultModelRatioMap()[modelName]
 		if !ok {
 		if !ok {
 			modelPrice = 0.1
 			modelPrice = 0.1
 		} else {
 		} else {
 			modelPrice = defaultPrice
 			modelPrice = defaultPrice
 		}
 		}
 	}
 	}
-	groupRatio := setting.GetGroupRatio(group)
+	groupRatio := ratio_setting.GetGroupRatio(group)
 	ratio := modelPrice * groupRatio
 	ratio := modelPrice * groupRatio
 	userQuota, err := model.GetUserQuota(userId, false)
 	userQuota, err := model.GetUserQuota(userId, false)
 	if err != nil {
 	if err != nil {
@@ -480,17 +480,17 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons
 	fullRequestURL := fmt.Sprintf("%s%s", baseURL, requestURL)
 	fullRequestURL := fmt.Sprintf("%s%s", baseURL, requestURL)
 
 
 	modelName := service.CoverActionToModelName(midjRequest.Action)
 	modelName := service.CoverActionToModelName(midjRequest.Action)
-	modelPrice, success := operation_setting.GetModelPrice(modelName, true)
+	modelPrice, success := ratio_setting.GetModelPrice(modelName, true)
 	// 如果没有配置价格,则使用默认价格
 	// 如果没有配置价格,则使用默认价格
 	if !success {
 	if !success {
-		defaultPrice, ok := operation_setting.GetDefaultModelRatioMap()[modelName]
+		defaultPrice, ok := ratio_setting.GetDefaultModelRatioMap()[modelName]
 		if !ok {
 		if !ok {
 			modelPrice = 0.1
 			modelPrice = 0.1
 		} else {
 		} else {
 			modelPrice = defaultPrice
 			modelPrice = defaultPrice
 		}
 		}
 	}
 	}
-	groupRatio := setting.GetGroupRatio(group)
+	groupRatio := ratio_setting.GetGroupRatio(group)
 	ratio := modelPrice * groupRatio
 	ratio := modelPrice * groupRatio
 	userQuota, err := model.GetUserQuota(userId, false)
 	userQuota, err := model.GetUserQuota(userId, false)
 	if err != nil {
 	if err != nil {

+ 4 - 5
relay/relay_task.go

@@ -15,8 +15,7 @@ import (
 	relaycommon "one-api/relay/common"
 	relaycommon "one-api/relay/common"
 	relayconstant "one-api/relay/constant"
 	relayconstant "one-api/relay/constant"
 	"one-api/service"
 	"one-api/service"
-	"one-api/setting"
-	"one-api/setting/operation_setting"
+	"one-api/setting/ratio_setting"
 )
 )
 
 
 /*
 /*
@@ -38,9 +37,9 @@ func RelayTaskSubmit(c *gin.Context, relayMode int) (taskErr *dto.TaskError) {
 	}
 	}
 
 
 	modelName := service.CoverTaskActionToModelName(platform, relayInfo.Action)
 	modelName := service.CoverTaskActionToModelName(platform, relayInfo.Action)
-	modelPrice, success := operation_setting.GetModelPrice(modelName, true)
+	modelPrice, success := ratio_setting.GetModelPrice(modelName, true)
 	if !success {
 	if !success {
-		defaultPrice, ok := operation_setting.GetDefaultModelRatioMap()[modelName]
+		defaultPrice, ok := ratio_setting.GetDefaultModelRatioMap()[modelName]
 		if !ok {
 		if !ok {
 			modelPrice = 0.1
 			modelPrice = 0.1
 		} else {
 		} else {
@@ -49,7 +48,7 @@ func RelayTaskSubmit(c *gin.Context, relayMode int) (taskErr *dto.TaskError) {
 	}
 	}
 
 
 	// 预扣
 	// 预扣
-	groupRatio := setting.GetGroupRatio(relayInfo.Group)
+	groupRatio := ratio_setting.GetGroupRatio(relayInfo.Group)
 	ratio := modelPrice * groupRatio
 	ratio := modelPrice * groupRatio
 	userQuota, err := model.GetUserQuota(relayInfo.UserId, false)
 	userQuota, err := model.GetUserQuota(relayInfo.UserId, false)
 	if err != nil {
 	if err != nil {

+ 14 - 14
service/quota.go

@@ -11,7 +11,7 @@ import (
 	relaycommon "one-api/relay/common"
 	relaycommon "one-api/relay/common"
 	"one-api/relay/helper"
 	"one-api/relay/helper"
 	"one-api/setting"
 	"one-api/setting"
-	"one-api/setting/operation_setting"
+	"one-api/setting/ratio_setting"
 	"strings"
 	"strings"
 	"time"
 	"time"
 
 
@@ -46,9 +46,9 @@ func calculateAudioQuota(info QuotaInfo) int {
 		return int(quota.IntPart())
 		return int(quota.IntPart())
 	}
 	}
 
 
-	completionRatio := decimal.NewFromFloat(operation_setting.GetCompletionRatio(info.ModelName))
-	audioRatio := decimal.NewFromFloat(operation_setting.GetAudioRatio(info.ModelName))
-	audioCompletionRatio := decimal.NewFromFloat(operation_setting.GetAudioCompletionRatio(info.ModelName))
+	completionRatio := decimal.NewFromFloat(ratio_setting.GetCompletionRatio(info.ModelName))
+	audioRatio := decimal.NewFromFloat(ratio_setting.GetAudioRatio(info.ModelName))
+	audioCompletionRatio := decimal.NewFromFloat(ratio_setting.GetAudioCompletionRatio(info.ModelName))
 
 
 	groupRatio := decimal.NewFromFloat(info.GroupRatio)
 	groupRatio := decimal.NewFromFloat(info.GroupRatio)
 	modelRatio := decimal.NewFromFloat(info.ModelRatio)
 	modelRatio := decimal.NewFromFloat(info.ModelRatio)
@@ -94,18 +94,18 @@ func PreWssConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, usag
 	textOutTokens := usage.OutputTokenDetails.TextTokens
 	textOutTokens := usage.OutputTokenDetails.TextTokens
 	audioInputTokens := usage.InputTokenDetails.AudioTokens
 	audioInputTokens := usage.InputTokenDetails.AudioTokens
 	audioOutTokens := usage.OutputTokenDetails.AudioTokens
 	audioOutTokens := usage.OutputTokenDetails.AudioTokens
-	groupRatio := setting.GetGroupRatio(relayInfo.Group)
-	modelRatio, _ := operation_setting.GetModelRatio(modelName)
+	groupRatio := ratio_setting.GetGroupRatio(relayInfo.Group)
+	modelRatio, _ := ratio_setting.GetModelRatio(modelName)
 
 
 	autoGroup, exists := ctx.Get("auto_group")
 	autoGroup, exists := ctx.Get("auto_group")
 	if exists {
 	if exists {
-		groupRatio = setting.GetGroupRatio(autoGroup.(string))
+		groupRatio = ratio_setting.GetGroupRatio(autoGroup.(string))
 		log.Printf("final group ratio: %f", groupRatio)
 		log.Printf("final group ratio: %f", groupRatio)
 		relayInfo.Group = autoGroup.(string)
 		relayInfo.Group = autoGroup.(string)
 	}
 	}
 
 
 	actualGroupRatio := groupRatio
 	actualGroupRatio := groupRatio
-	userGroupRatio, ok := setting.GetGroupGroupRatio(relayInfo.UserGroup, relayInfo.Group)
+	userGroupRatio, ok := ratio_setting.GetGroupGroupRatio(relayInfo.UserGroup, relayInfo.Group)
 	if ok {
 	if ok {
 		actualGroupRatio = userGroupRatio
 		actualGroupRatio = userGroupRatio
 	}
 	}
@@ -154,9 +154,9 @@ func PostWssConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, mod
 	audioOutTokens := usage.OutputTokenDetails.AudioTokens
 	audioOutTokens := usage.OutputTokenDetails.AudioTokens
 
 
 	tokenName := ctx.GetString("token_name")
 	tokenName := ctx.GetString("token_name")
-	completionRatio := decimal.NewFromFloat(operation_setting.GetCompletionRatio(modelName))
-	audioRatio := decimal.NewFromFloat(operation_setting.GetAudioRatio(relayInfo.OriginModelName))
-	audioCompletionRatio := decimal.NewFromFloat(operation_setting.GetAudioCompletionRatio(modelName))
+	completionRatio := decimal.NewFromFloat(ratio_setting.GetCompletionRatio(modelName))
+	audioRatio := decimal.NewFromFloat(ratio_setting.GetAudioRatio(relayInfo.OriginModelName))
+	audioCompletionRatio := decimal.NewFromFloat(ratio_setting.GetAudioCompletionRatio(modelName))
 
 
 	modelRatio := priceData.ModelRatio
 	modelRatio := priceData.ModelRatio
 	groupRatio := priceData.GroupRatioInfo.GroupRatio
 	groupRatio := priceData.GroupRatioInfo.GroupRatio
@@ -289,9 +289,9 @@ func PostAudioConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo,
 	audioOutTokens := usage.CompletionTokenDetails.AudioTokens
 	audioOutTokens := usage.CompletionTokenDetails.AudioTokens
 
 
 	tokenName := ctx.GetString("token_name")
 	tokenName := ctx.GetString("token_name")
-	completionRatio := decimal.NewFromFloat(operation_setting.GetCompletionRatio(relayInfo.OriginModelName))
-	audioRatio := decimal.NewFromFloat(operation_setting.GetAudioRatio(relayInfo.OriginModelName))
-	audioCompletionRatio := decimal.NewFromFloat(operation_setting.GetAudioCompletionRatio(relayInfo.OriginModelName))
+	completionRatio := decimal.NewFromFloat(ratio_setting.GetCompletionRatio(relayInfo.OriginModelName))
+	audioRatio := decimal.NewFromFloat(ratio_setting.GetAudioRatio(relayInfo.OriginModelName))
+	audioCompletionRatio := decimal.NewFromFloat(ratio_setting.GetAudioCompletionRatio(relayInfo.OriginModelName))
 
 
 	modelRatio := priceData.ModelRatio
 	modelRatio := priceData.ModelRatio
 	groupRatio := priceData.GroupRatioInfo.GroupRatio
 	groupRatio := priceData.GroupRatioInfo.GroupRatio

+ 1 - 1
setting/operation_setting/cache_ratio.go → setting/ratio_setting/cache_ratio.go

@@ -1,4 +1,4 @@
-package operation_setting
+package ratio_setting
 
 
 import (
 import (
 	"encoding/json"
 	"encoding/json"

+ 1 - 1
setting/group_ratio.go → setting/ratio_setting/group_ratio.go

@@ -1,4 +1,4 @@
-package setting
+package ratio_setting
 
 
 import (
 import (
 	"encoding/json"
 	"encoding/json"

+ 3 - 2
setting/operation_setting/model-ratio.go → setting/ratio_setting/model_ratio.go

@@ -1,8 +1,9 @@
-package operation_setting
+package ratio_setting
 
 
 import (
 import (
 	"encoding/json"
 	"encoding/json"
 	"one-api/common"
 	"one-api/common"
+	"one-api/setting/operation_setting"
 	"strings"
 	"strings"
 	"sync"
 	"sync"
 )
 )
@@ -366,7 +367,7 @@ func GetModelRatio(name string) (float64, bool) {
 	}
 	}
 	ratio, ok := modelRatioMap[name]
 	ratio, ok := modelRatioMap[name]
 	if !ok {
 	if !ok {
-		return 37.5, SelfUseModeEnabled
+		return 37.5, operation_setting.SelfUseModeEnabled
 	}
 	}
 	return ratio, true
 	return ratio, true
 }
 }