46 lines
2.2 KiB
Go
46 lines
2.2 KiB
Go
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" // 按token(workflow 结算时按各模型 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: "周期订阅",
|
||
}
|