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