feat(pricing): 扩展 charge_mode 枚举(token/单位/per_period)+ subject 常量

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-08-28 17:27:31 +08:00
co-authored by Claude
parent 5d2b01e6f3
commit 0f8b9711ed
2 changed files with 64 additions and 0 deletions
+26
View File
@@ -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" // 按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,
}
// PeriodSet 周期允许集合(per_period,扩月/季只加值)
var PeriodSet = map[string]bool{"year": true}
+38
View File
@@ -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 // 代码
)