mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-04 00:15:28 +08:00
52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
package admin
|
|
|
|
import "ds2api/internal/config"
|
|
|
|
func validateMergedRuntimeSettings(current config.RuntimeConfig, incoming *config.RuntimeConfig) error {
|
|
merged := current
|
|
if incoming != nil {
|
|
if incoming.AccountMaxInflight > 0 {
|
|
merged.AccountMaxInflight = incoming.AccountMaxInflight
|
|
}
|
|
if incoming.AccountMaxQueue > 0 {
|
|
merged.AccountMaxQueue = incoming.AccountMaxQueue
|
|
}
|
|
if incoming.GlobalMaxInflight > 0 {
|
|
merged.GlobalMaxInflight = incoming.GlobalMaxInflight
|
|
}
|
|
}
|
|
return validateRuntimeSettings(merged)
|
|
}
|
|
|
|
func (h *Handler) applyRuntimeSettings() {
|
|
if h == nil || h.Store == nil || h.Pool == nil {
|
|
return
|
|
}
|
|
accountCount := len(h.Store.Accounts())
|
|
maxPer := h.Store.RuntimeAccountMaxInflight()
|
|
recommended := defaultRuntimeRecommended(accountCount, maxPer)
|
|
maxQueue := h.Store.RuntimeAccountMaxQueue(recommended)
|
|
global := h.Store.RuntimeGlobalMaxInflight(recommended)
|
|
h.Pool.ApplyRuntimeLimits(maxPer, maxQueue, global)
|
|
}
|
|
|
|
func defaultRuntimeRecommended(accountCount, maxPer int) int {
|
|
if maxPer <= 0 {
|
|
maxPer = 1
|
|
}
|
|
if accountCount <= 0 {
|
|
return maxPer
|
|
}
|
|
return accountCount * maxPer
|
|
}
|
|
|
|
func settingsClaudeMapping(c config.Config) map[string]string {
|
|
if len(c.ClaudeMapping) > 0 {
|
|
return c.ClaudeMapping
|
|
}
|
|
if len(c.ClaudeModelMap) > 0 {
|
|
return c.ClaudeModelMap
|
|
}
|
|
return map[string]string{"fast": "deepseek-chat", "slow": "deepseek-reasoner"}
|
|
}
|