当账号配置了模型映射(如 claude-sonnet-4-6 → glm-5.0)时,系统错误地 使用映射后的上游模型名计算费用。由于上游模型(如 glm-5.0)在定价系统中 没有价格配置,导致计费失败后被静默置为 0,用户不被扣费。 修改 forwardResultBillingModel 优先返回请求模型名,并移除 OpenAI 路径 中 BillingModel 字段对计费模型的覆盖逻辑。
29 lines
719 B
Go
29 lines
719 B
Go
package service
|
|
|
|
import "strings"
|
|
|
|
func optionalTrimmedStringPtr(raw string) *string {
|
|
trimmed := strings.TrimSpace(raw)
|
|
if trimmed == "" {
|
|
return nil
|
|
}
|
|
return &trimmed
|
|
}
|
|
|
|
// optionalNonEqualStringPtr returns a pointer to value if it is non-empty and
|
|
// differs from compare; otherwise nil. Used to store upstream_model only when
|
|
// it differs from the requested model.
|
|
func optionalNonEqualStringPtr(value, compare string) *string {
|
|
if value == "" || value == compare {
|
|
return nil
|
|
}
|
|
return &value
|
|
}
|
|
|
|
func forwardResultBillingModel(requestedModel, upstreamModel string) string {
|
|
if trimmed := strings.TrimSpace(requestedModel); trimmed != "" {
|
|
return trimmed
|
|
}
|
|
return strings.TrimSpace(upstreamModel)
|
|
}
|