一次消费,由谁负责?
业务模块确定消费身份和输入,执行模块处理运行,BillingModule
负责资金。以下为接入设计,当前业务代码尚未接入计费。
业务入口用户、权限、参数、消费键
执行模块启动、技术重试、可信结果
计费模块预留、结算、释放、消费记录
用户 A 发起一次 Debug
示例身份:租户 T、已登录用户 A、运行 R1、机器步骤 S。Run 保存发起用户和运行快照;消费归属由业务入口确定。
-
业务入口生成稳定消费键
推进 R1 / S 时,业务用例从快照解析并校验输入,再根据这次执行身份生成
operationKey。正式流程同样使用实例、配置任务和生成步骤身份。key 在调用计费前确定,客户端不能自由指定。
-
计费按租户和 key 预留一次
首次调用创建记录 B1,固定 consumerUserId = A,冻结 20。后续以同一 key 调用计费,只返回
B1;回调和技术重试不改消费用户,也不再次冻结。
-
执行模块运行,计费收尾原单
启动、技术重试和运行结果核查沿现有执行通道完成。确定最终结果后,计费结算或释放
B1;结果未知时保留原冻结,继续核查。
多次技术尝试,只结算一笔消费
后端重试启动、worker 技术重试都沿用同一个 key 和
B1,增加的执行成本由平台承担。客户只按原授权范围内最终有效的产出或用量结算一次,不能把所有尝试简单累加收费。
- key · 消费身份
-
operationKey 是业务反复定位同一笔消费的标识;BillingOperation.id 是记录 ID。BillingModule 接收业务提供的
key,按 tenantId + operationKey 去重,不解析节点或参数含义。
- hash · 内容摘要
-
hash 可用于比较参数是否相同。参数能否修改、重复提交如何处理、是否开启新
session,均由来源业务判断。BillingModule 不保存
inputHash,也不负责生成参数冲突报错;参数校验通过后才进入预留。
- ref · 关联依据
-
来源引用让 B1 找到 Run R1 / 步骤 S;usage 中的必要产出 ID
解释费用依据。参数、内容和文件保留在来源模块,调用回执与执行绑定沿用现有执行记录,无须在计费表复制请求或单设
outputRefs 列。
代码接入依据:人工任务与 Debug
正式人工任务
提交人来自登录态。入口检查租户、任务负责人、最新 runtimeTaskId 和输出契约;pending 任务可操作时调用
completeTask,completed 则进入重跑分支。目前生产重跑适配器报 WORKFLOW_RERUN_DEFERRED。
接入点:业务完成参数校验后、调用 completeTask 前预留。是否允许重复提交或重跑仍由人工任务模块判断。
Canvas Debug
Run.createdById 保存发起用户,graphSnapshot 保存运行配置。同一草稿已使用的 sessionId 报 409,新
session 创建新 Run;同一 Run 的恢复沿原快照、runId 和步骤进行。
接入点:resolveInput 并校验后、runtime.start 前预留。捕获启动异常后的技术重试继续复用原消费键。
核对版本:dev 40d5ebf。当前行为与上述计费提案分开,实际 Schema 和业务代码尚未修改。
人工任务操作
·
重跑适配器
·
Debug 创建
·
Debug 推进
·
session 去重