Files

46 lines
2.2 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package pricing
// ChargeMode 计费方式(全 DB 配置,代码不写死金额;新增方式在 charge_calc 计算器注册表加一项)
type ChargeMode string
const (
ChargeModePerItem ChargeMode = "per_item" // 按条:档位开放、上不封顶(rules.tiers + overflow
ChargeModePerSecond ChargeMode = "per_second" // 按秒(workflow:整秒向上取整;model:精确秒)
ChargeModePerToken ChargeMode = "per_token" // 按tokenworkflow 结算时按各模型 subject 实时价)
ChargeModePer1K ChargeMode = "per_1K" // 每千token(模型 token 计费)
ChargeModePer1M ChargeMode = "per_1M" // 每百万token(模型 token 计费)
ChargeModePer1 ChargeMode = "per_1" // 每个/每张图(图片按张数)
ChargeModePerMinute ChargeMode = "per_minute" // 每分钟(音频时长)
ChargeModePerHour ChargeMode = "per_hour" // 每小时(音频时长)
ChargeModePerChar ChargeMode = "per_char" // 每字(音频按字数)
ChargeModePerPeriod ChargeMode = "per_period" // 周期订阅(business 按年)
)
// ModelUnitSet model subject 允许的计费单位(spec §4.2)
var ModelUnitSet = map[ChargeMode]bool{
ChargeModePer1K: true, ChargeModePer1M: true, ChargeModePer1: true,
ChargeModePerSecond: true, ChargeModePerMinute: true, ChargeModePerHour: true, ChargeModePerChar: true,
}
// ModelMediaSet 模型费率 mediaPrices 允许的媒体类型键(输入媒体白名单,前端下拉同源)
var ModelMediaSet = map[string]struct{}{
"text": {}, "audio": {}, "video": {}, "image": {},
}
// PeriodSet 周期允许集合(per_period,扩月/季只加值)
var PeriodSet = map[string]bool{"year": true}
// ChargeModeNames 计费方式中文名(前端下拉渲染;全枚举覆盖,未命中回退 mode 本身)
var ChargeModeNames = map[ChargeMode]string{
ChargeModePerItem: "按条",
ChargeModePerSecond: "按秒",
ChargeModePerToken: "按token",
ChargeModePer1K: "每千token",
ChargeModePer1M: "每百万token",
ChargeModePer1: "每张/每个",
ChargeModePerMinute: "每分钟",
ChargeModePerHour: "每小时",
ChargeModePerChar: "每字",
ChargeModePerPeriod: "周期订阅",
}