feat(pricing): 扩展 charge_mode 枚举(token/单位/per_period)+ subject 常量
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
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,
|
||||
}
|
||||
|
||||
// PeriodSet 周期允许集合(per_period,扩月/季只加值)
|
||||
var PeriodSet = map[string]bool{"year": true}
|
||||
@@ -0,0 +1,38 @@
|
||||
package pricing
|
||||
|
||||
// SubjectType 计价对象类型(固定枚举 = pricing_config 唯一键第一部分)
|
||||
type SubjectType string
|
||||
|
||||
const (
|
||||
SubjectTypeWorkflow SubjectType = "workflow" // 工作流(固定单主体)
|
||||
SubjectTypeModel SubjectType = "model" // 模型(model-gateway 系统模型,subject_id=模型ID)
|
||||
SubjectTypeBusiness SubjectType = "business" // 业务模块(固定写死列表)
|
||||
)
|
||||
|
||||
// WorkflowSubjectID 工作流固定 subject_id
|
||||
const WorkflowSubjectID = "workflow"
|
||||
|
||||
// BusinessSubject 业务模块枚举项(固定写死,新增业务模块改这里)
|
||||
type BusinessSubject struct {
|
||||
SubjectID string `json:"subjectId"`
|
||||
Name string `json:"name"`
|
||||
ChargeModes []ChargeMode `json:"chargeModes"`
|
||||
}
|
||||
|
||||
// BusinessSubjects 业务模块固定列表(spec §7:与「固定枚举」一致)
|
||||
var BusinessSubjects = []BusinessSubject{
|
||||
{SubjectID: "ai_customer_service", Name: "AI客服", ChargeModes: []ChargeMode{ChargeModePerPeriod}},
|
||||
}
|
||||
|
||||
// ModelTypeCode 模型类型编码(透传 model-gateway 枚举,管理端按此分组渲染编辑器)
|
||||
type ModelTypeCode = int
|
||||
|
||||
const (
|
||||
ModelTypeReasoning ModelTypeCode = 100 // 推理
|
||||
ModelTypeImage ModelTypeCode = 200 // 图片
|
||||
ModelTypeAudio ModelTypeCode = 300 // 音频
|
||||
ModelTypeVector ModelTypeCode = 400 // 向量
|
||||
ModelTypeOmni ModelTypeCode = 500 // 多模态
|
||||
ModelTypeVideo ModelTypeCode = 600 // 视频
|
||||
ModelTypeCode2 ModelTypeCode = 700 // 代码
|
||||
)
|
||||
Reference in New Issue
Block a user