MG-02-004 路由与执行
默认人工排序、失败后顺序换渠道及单次调用方计费已于 2026-09-30 获用户确认,见 决定表。实现仍未开始;具体字段和运行映射为设计稿。
请求、排序和容量
请求按标准模型 x 及固定参数解析候选 Supply。先检查标准契约与素材,再读取生效模型配置,排除停用/归档、未验证、不匹配能力、别名范围之外、已尝试或熔断的供给。生产成本必须来自明确价格版本;未知不当免费,不跨未知币种比较。
主顺序是人工优先级,数字越大越先;同级比较本次完整预计采购成本。若同价,建议按可用容量、稳定 Supply ID 决定。首轮不需要增加其他策略选择;同价细节可以在页面/默认值讨论中完善,不搬旧随机 Weight/Ability/亲和度。
选择时原子占用渠道/供给容量。高优先级暂忙但 B 可运行,可以在首次提交前选择 B;这属于初次选路,不是“先调用 A 再重试”。所有合格供给暂忙才进入有界队列,永久参数错误立即拒绝。模拟与运行共用能力、价格、排序函数,模拟不提交、不占容量,执行重新原子检查当前容量。
任务接受时固定标准请求和配置/报价快照;临时健康/容量在提交时检查。后续配置改动不改历史输入或已发生 Attempt。停用绑定不取消已有 Provider 任务。
用户确认的重试:A 失败,才顺序调用 B
重试次数是模型配置,首轮范围为 0 或 1;1 表示首次加一次补救执行,不是并发调用两家、不是再创建第二条客户请求。默认值在具体配置表单讨论中确定。一次任务不回到已尝试供给。
重试 0:请求 R,模型 x → A/x → 成功或明确失败
重试 1:请求 R,模型 x → A/x
成功 → 结束
明确失败 → B/x → 成功或失败,结束
受理未知 → 核对原 A,禁止直接提交 BB 仍执行同一标准模型 x、原时长/分辨率/素材/音频等参数;上游私有型号名称可不同,但必须是经显式绑定的等价供给。不能为了重试改成低规格、少素材或另一个模型。默认没有隐含降级。
请求始终只有一个 request/task、稳定幂等标识和结果;A、B 是两个 Attempt。只有 A 明确失败或明确未受理,B 才能开始,绝不同时生成。A 已提交但仍生成中、响应断开、普通 HTTP 5xx、轮询超时和租约到期均不能单独证明失败。A 成功仅结果下载失败时,恢复取同一个文件,不调用 B 再生成。
客户端参数本身不合法时提交前拒绝。供给明确返回生成/策略失败,按配置在仍满足合法请求契约的 B 上顺序重试,保留原因;内容拒绝不损害基础设施健康,也不允许修改输入来绕过约束。认证/型号配置错误暂停相应范围,其他满足条件的候选可按配置承担下一次执行;单规格故障不连带其他渠道。
没有匹配 B 或次数用尽时结束为失败;找不到供给不伪造已重试。允许重试的明确失败与受理不明必须由 adapter 分类并留证据,不能统一写成“网络错误后换渠道”。
调用方只计一次;上游采购分别记账
2026-09-30 用户明确选择:同一个生成请求对调用方只计费一次,上游 A/B 费用分别记录。不要求先确认 A 未扣费/退款才按配置执行 B;A 的实际费用待核实也不等于免费。
调用方的一个业务请求只关联一份计价/结算身份和最终结果。重试不创建第二次客户预留或第二个收费请求,不以 A/B 两个 Attempt 各发一次客户结算。费用决定使用请求接受时的规则;若 B 的采购价更高,也不因重试追加客户费用。
本服务负责 Provider 采购成本及执行证据;客户销售/预留/结算仍由调用方/Core 承担。本服务输出稳定逻辑请求及终态/用量证据,重复查询、轮询或结果回调不能被消费成二次结算。最终客户收费金额和失败是否收费沿用调用方业务规则,不在网关重建钱包。网关稳定请求/终态接口与调用方结算去重须联调验收,不能以本服务的测试代替外部钱包只计一次的证明。
采购层对 A、B 各记预计/实际扣费、退款和未知项,再汇总任务净采购成本;实际缺失不拿预估替代、不同币种不直接加。旧“必须新增重试费用预算、未知失败费就禁止 B”的建议被本次决定替换。采购成本限制可作为已有明确运维政策的高级项,但不得凭空引入追加客户费用或每次确认;若限制阻止执行需在路由模拟/记录中解释。
报价
金额使用定点十进制字符串及显式币种。按秒使用明确计费秒数、最低秒数/进位;按次/固定区间使用固定价;分档表必须唯一匹配;参考视频/音频附加项用可信数量或时长。token/积分换算、折扣和汇率须有来源和版本,只转换一次。
例如虚构 0.20 CNY/秒、最小 5 秒,请求 6 秒预计 1.20 CNY;另一同能力供给按次 1.00 CNY,可同级比较。它们是示例,不是当前渠道报价。报价固定在请求/Attempt 中,不覆盖实际账单;未知或失败不能显示免费。
状态与恢复
以下是产品语义,落地映射现有持久状态/OpenAI/ModelArk 响应,不静默改坏兼容 API。
页面显示排队/准备/提交/生成/待核对/结果处理中/恢复待处理/完成/失败。Attempt 失败后任务可继续 B,但任务已结束不能被迟到轮询改回进行中。费用迟到或媒体失效只补证据/可用性,不改变生成终态。
取消是独立动作与证据。未提交可原子停止;已提交须上游支持且确认,否则继续查询。客户端离开、等待结束、Worker 租约过期都不是取消或退款。未知任务先查询/人工证据核对,不能点“重新生成”掩盖。
PostgreSQL 保证幂等、终态 CAS、Attempt 次数、租约及 Outbox;Redis 丢失可恢复,不重置次数。先原子建立 Attempt 与“可能发送”状态,再事务外调用 Provider;崩溃落在无法证明未发送的窗口就核对。Provider 支持幂等/客户端任务 ID 时复用原值,不支持时不承诺端到端 exactly-once,但禁止不明状态自动新增提交。
有幂等键的服务请求同键同输入返回同一任务,不同输入冲突;兼容 API 的无键请求不静默改强制字段,响应丢失也不假装总能找回。管理测试用持久 operation token,跨标签/刷新/断连回到同一任务。Provider/TOS I/O 不进入事务,重复恢复只查询或取原结果。未知占用不能因 TTL 到期变成允许第二次提交。
站内真实测试的执行模式
固定供给测试只测 A 的具体配置/规格,关闭自动换供给,允许测试未生产启用的明确草稿快照,仍校验参数/凭据并留审计。完整路由测试按标准模型 x 的有效配置执行,可验证人工顺序和 0/1 重试。两者都是真实上游调用,共用普通任务与结果链并清楚标记用途;不改变生产启用状态。
模拟选路始终只读。站内测试提交需要明确按钮、实际参数和收费说明,不新增日常创作工作台,也不在保存配置时隐式发起生成。验收见 07。