* docs(spec): 模型计费 - 记录零价免费模型设计 * fix(billing): 模型定价 - 支持零价免费模型 * fix(config): 系统模型目录 - 支持零价模型
2.3 KiB
2.3 KiB
零价免费模型设计
目标
管理员将系统渠道价格档或前台逻辑模型统一价格设为 0 时,该模型表示免费且可用。普通用户可以看到并创建对应任务,系统不扣减积分。
范围
- 系统渠道模型的固定按次、按秒和 Token 价格档允许零价。
- 前台逻辑模型的统一价格允许零价。
- 前台逻辑模型跟随渠道定价时,零价系统渠道线路仍可参与可用性和规格匹配。
- 任务继续经过现有鉴权、并发、频率、配额、审计、账单创建和结算流程,金额为
0。
非目标
- 不新增“免费”开关或数据库字段。
- 不改变负价格的校验规则。
- 不放宽管理员权限、渠道启用状态、模型启用状态或能力/规格匹配规则。
语义与数据流
价格有效性从“正数才有效”改为“非负数有效”。零价与正价一样进入公开模型目录;负数继续被管理端请求校验拒绝。
系统渠道目录会保留零价启用价格档,并将具有匹配有效价格档的模型标记为可用。普通用户前端继续只合并 available=true 的模型,因此无需为零价添加单独的客户端分支。
逻辑模型沿用现有路由可用性判断。统一定价为零时通过价格校验;跟随渠道价格时,零价渠道 SKU 可以匹配请求规格。
零价任务仍建立金额为 0 的账单订单和用量记录。积分余额、预留积分和退款金额保持不变,从而保留任务审计与运营统计,同时不绕过现有资源保护。
实现边界
backend/internal/service/price_validation.go统一价格有效性的判断。- 既有系统目录、逻辑模型目录和任务创建链路复用该判断,不新增平行免费路径。
- 如零价订单在预扣或结算的数据库约束中不成立,仅在账单协调边界补足零金额分支,保持正价订单行为不变。
测试
- 零价固定按次、按秒和 Token 价格档通过有效性校验;负价格仍被拒绝。
- 启用的零价系统渠道模型出现在公开目录中并标记为可用。
- 零价系统渠道任务选择通过价格校验。
- 统一定价为零的前台逻辑模型可用。
- 零价账单不改变用户的可用或预留积分,并可以正常结算。