历史档案候选与单体方案快照平台架构
额度、计费与恢复
复用上游计费并补齐跨产品的持久一致性
历史方案:本页为恢复第一版多仓文档前的快照,不是现行任务或已实现能力。现行入口为平台架构。
源码已有与复用范围
固定版本包含原子额度预扣、BillingSession、钱包与订阅资金来源、任务差额结算和退款。客户共享账户由一处管理,不在 Console、Studio 或媒体网关分别扣同一笔消费。
预扣路径使用 Redis Lua 或数据库余额条件更新。原子操作只说明该步骤不可被并发打断,不能据此推导缓存、数据库、任务状态和日志组成一个完整事务。
已确认的对客规则
统一人民币充值、系统内积分;企业首期使用专属账户和协议价,暂不做多人协作。充值套餐和模型消费价格分开设计。详细讨论见人民币充值、积分与客户价格。现有 quota 可继续作为底层执行单位,但人民币分、对客积分及最小扣费单位要明确换算,不能只替换币种文案。
OceanWay 需要定义
| 事项 | 必须明确 |
|---|---|
| 金额与额度单位 | 价格、币种、内部额度的换算、精度和上限 |
| 消费归属 | 用户、产品、项目、调用和任务的关联 |
| 预扣 | 估算依据、不足时行为、后续补扣限制 |
| 最终消费 | 用量来源、价格版本、完成条件 |
| 退款和释放 | 失败、取消、提交未知、部分结果各自政策 |
| 重复命令 | 持久业务操作 ID、结果重放、冲突响应 |
| 对账恢复 | 费用调整成功但任务标记失败时如何继续 |
WalletFunding.Refund 是非幂等增量;task_billing 中额度调整和任务回写分步完成。新产品的重试与恢复协议需针对这些实际边界设计,不直接添加无限重试。
验收场景
同账户并发接近额度上限;重复请求/回调;资金调整后进程退出;Redis 不可用且存在未落库批量数据;订阅与钱包切换;文本部分输出和媒体任务失败。结果以余额、消费事实、任务和退款可核对为准。
具体性能目标见容量验证。历史账务迁移与新代码基线分开安排,未完成规则前不直接导入旧余额。