文档
03 平台04 媒体供应02_需求与工作包

MG-02-007 视频供给后端

Owner: /root。基于 MG-DESIGN-01 的 video-supply.md;当前批次不包含 AI 同步正式移植、页面桥接、通知投递或真实付费验收。

模型配置

现有模型 UID 不变,PATCH /admin/v1/public-models/{id} 增加可选 name(调用 ID)。 修改后需重新应用,历史请求文字和已发布审计快照不变。

GET /admin/v1/public-models/{id} 在同一数据库快照中读取模型、绑定、策略与降级规则。 PUT /admin/v1/public-models/{id}/configuration 使用 If-Match(例如 "3")整体保存:

{
  "model": {"name": "seedance2.0", "title": "Seedance 2.0"},
  "bindings": [
    {"supply_id": "供给 UUID", "role": "exact", "enabled": true, "tier": 0, "manual_order": 0}
  ],
  "dispatch_policy": {
    "routing_version": 1,
    "strategy": "manual_priority",
    "reliability_gate_enabled": false,
    "reliability_minimum_samples": 30,
    "reliability_window_hours": 168,
    "minimum_success_rate": "0.95",
    "stable_cost_multiplier_limit": "2",
    "fallback_cost_multiplier_limit": "2",
    "fallback_absolute_cost_limit": {"amount": "100", "currency": "CNY"},
    "max_attempts": 2,
    "retry_deadline_seconds": 1200,
    "fallback_mode": "strict"
  },
  "apply": true
}

绑定列表为完整替换;空列表清空关联。模型 metadata 为局部更新。 apply=false 保存为停用配置;apply=true 先在同一事务内验证已有生产供给,再应用。 不会启用 Supply,也不会发起生成。失败回滚全部字段与审计,版本冲突/名称冲突为 409, 缺少 If-Match 为 428,未经验证供给为 422。原有管理员会话、CSRF 与管理员 Bearer 认证复用。

策略与执行

routing_version=0 保留旧策略含义;新增字段默认值不会反转历史 priority。 routing_version=1 使用较小 tier 优先;在相同能力角色下,同档完整可比较采购报价升序, 相同金额按 manual_order,再按 Supply UID。同档任何报价缺失或币种不同,整档保留人工次序。 执行仍须有确定报价、符合采购币种、通过能力/健康/容量/生产验收。 未知成本的供给不会因人工排序获得执行权限。

门槛开启后,生产基础设施样本不足或没有新鲜统计会排除;窗口为 24/168/720 小时。 统计截止时间超过五分钟或窗口不匹配视为不可用;停用门槛时运行时不查询窗口聚合, 管理端仍可读取全部指标。阈值默认值仅为配置初始值,非生产验收结论。 已验收降级与原有失败成本保护仍保留。

任务创建事务记录稳定模型身份并固定 max_attempts(1=不换供给,2=最多换一次)。 后续改名与策略编辑不扩展既有任务预算。提交未知、准备中断与结果保存失败沿用现有恢复路径。 不是将所有 Provider 错误都变为可重试错误。

运行统计

GET /admin/v1/supply-statistics?window_hours=168&public_model_id={UUID}&channel_id={UUID} 返回 data.population=production、窗口起点、as_of 和供给指标。 public_model_id/channel_id 均可省略。停用、归档和移除绑定的历史供给仍保留统计。 模型归因使用请求稳定身份,不能因调用 ID 改名或重用串到另一模型。 供给 ID 已包含协议/规格身份;每个 Attempt 仅计一次,多重绑定不会放大数量。 同一 SQL 语句完成聚合;先限定时间再统计。不是历史时点状态回放接口。

attempts 是窗口内开始的尝试总数,不等于已扣费调用数。 互斥分类为 succeeded、failed(supply/capacity)、content_rejected、result_save_failed、 pending、unknown、request_rejected、cancelled、not_submitted、unclassified。 created/已知准备失败计 not_submitted;提交未知保持 unknown; 无法明确归因的终态单列 unclassified,不冒充 Provider 故障。 成功交付沿用终态及输出证据;已经交付后过期的结果仍算成功。 仅最终 RESULT_PUBLICATION_FAILED 计 result_save_failed,可恢复的保存重试仍为 pending。

  • 生成成功率:(succeeded+result_save_failed)/(succeeded+failed+content_rejected+result_save_failed)。
  • 基础设施稳定率:(succeeded+result_save_failed)/(succeeded+failed+result_save_failed)。
  • 交付成功率:succeeded/上述已终结总数。

零分母为 null。SupplyTest 使用独立证据表,不加入 Attempt 聚合; test-fixture 适配器不计入生产指标。内容拒绝、无效请求和未知状态不降低基础设施稳定率。 生成均值/P95 仅取首次成功 poll 的时间减 Attempt 起点,不使用最终保存完成时间; 没有生命周期证据的历史记录耗时为 null,并报告 timing sample 数。 这段时间含提交/上游排队,不是上游内部纯计算时间;提交耗时与实时容量仍用独立接口/后续扩展。

采购成本与迁移

所有金额使用 PostgreSQL numeric 与 Go 定点金额,不使用浮点比较价格。 recorded_amount 为原执行内核 actual_cost 的同币种汇总;历史内核可能由报价推导该值, 不能将它称为已核对账单。verified_amount 只读取追加的 attempt_procurement_observations。 每次核对写入完整净金额,后续退款/更正追加新证据;报表取最新证据,不累加多版本, 且保留 recorded/verified/unverified 样本数。未知为 null;不同币种分列。 本批仅建立证据存储与读取,账单导入/核对写入服务尚未接入,不计算每个成功视频的净实际成本。

迁移 28 新增策略字段、绑定档位/次序、任务 1/2 次约束、稳定身份表及追加采购证据表和索引。 历史身份回填只插入关联表,不修改受保护终态记录;无法按现有模型名明确匹配的旧请求不猜测。 本机升级前已备份并恢复到独立开发实例,不修改原开发库与生产库。 下行迁移要求先停用新规则并消除一尝试任务/策略,否则约束拒绝降级; 删除新证据表具有数据损失,只作为空测试库回滚辅助,真实数据应以前进迁移修复。

尚未完成

正式 workflow-v2 的保存/统计/变体调度/选路模拟已由 MG-DISPATCH-01 接入。 AI 目录同步正式运行时、同步事件与提醒、 采购账单核对写入、实时容量展示、1000 请求/分钟容量压测及真实供给完整验收。 这些不因本批 Go/数据库验证通过而宣告完成;不会自动发起付费探测。

tools/catalog-import/import-preview-catalog.mjs imports a saved schema-1 console snapshot through the administrator API at the isolated 127.0.0.1:18081 candidate only. The default operation validates the entire plan without writing. --apply requires a local PostgreSQL custom-format backup supplied with --backup; the administrator key is read from GATEWAY_ADMIN_KEY, never from command arguments or the snapshot.

The importer matches exact channel/upstream identifiers and rejects stale or ambiguous Supply references and model call-ID collisions. Missing Supplies require an existing discovery with that exact upstream ID and a unique native adapter. Duplicate legacy SKUs are preserved; an explicitly referenced canonical discovery SKU is used when unambiguous. Historical missing models are not rebound. Each model's bindings and dispatch policy use the configuration transaction and version guard. Separate models are separate transactions; rerunning resumes safely and an unchanged configuration causes no mutation.

The public_capability.catalog object retains the preview UID, family/version, desired directory state, original administrator overrides, association rules and order. These are administrative source facts, not verified executable Supply capabilities. The gateway UUID is stable and independent of editable call IDs. Actual execution capabilities/cost rules remain on Supply. Models stay unpublished and disabled, and Supplies stay disabled/unverified. No generation, billing or production publication occurs. Frontend read/write integration remains separate.

正式后台完整变体(MG-DISPATCH-01)

标准模型 → 渠道上游模型 → 独立能力变体 Supply。无 typed 调度元数据的历史配置仍由 渠道模型维护 tier/manual_order,所有变体继承。MG-DISPATCH-02 已按用户选定的单页交互 补齐显式变体覆盖:父组排序/移档、变体档位/参与/路线并发设置及草稿预览同页完成; 新详情以 标准模型调度接口 为准,不再要求所有变体同档。 每个变体仍是原生 Supply,采购报价、能力版本、健康、共享并发和 Attempt 独立。 旧父 Supply/历史 SKU 保留。上游 quality/resolution 值与规范分辨率映射进入 Attempt 快照;Wangpai 在实际 schema 验证后才提交。

PUT /admin/v1/video-configuration 一次事务保存全部标准模型、变体、能力、成本和绑定。 请求包含每个模型 version、channel_versions、变体 version/parent_version;任何冲突、 约束或审计错误全部回滚。语义未变不新增能力/成本版本,单纯排序保持已验收启用; 能力/映射/价格改变暂停相应 Supply。preserve_published 仅延续已发布且所有启用 绑定仍验收的模型;改变执行语义则保存为停用草稿,不自动启用新变体。

正式页面设置独立变体并发、人工定点 CNY 采购单价或精确资料报价。失败预算按 变体最大已知基础报价保守计算,charge_on 保持 provider_reported,实际费用以账单 为准。报价维度无法表达或参考视频另加费未知时不参与执行。公开资料仍不构成生成验收。

POST /admin/v1/public-models/{id}/video-simulate 接收 StoredRequest 形状,复用运行 Planner,读取当前数据库健康/容量与采购规则,返回候选、档位/次序、报价、可用容量 和排除原因。未启用模型明确清除 selected_supply_id。页面检查为文生视频,无参考素材; 后端不获取素材、不创建 Task/Attempt、不占用容量、不调用 Provider。

MG-DISPATCH-02 新增单模型 GET/PUT dispatch-configuration 与 POST dispatch-preview。 typed 设置存模型 public_capability,并原子物化已有 exact Binding;不修改真实供给 启用/验收、能力、成本或并发,也不改变其他模型。override:null 继承父组,非 null 为 完整覆盖;父参与开关始终 AND 否决子开关。路线并发受原生/健康上限限制,按同一 Supply 全局活动租约计数。preview 可带受限 reference_summary,不能与真实素材描述混用。 草稿必须明确模型版本;已保存来源明确版本过期同样 409,省略才读最新。已发布模型 关闭全部 exact 仍受既有发布门禁 422 原子拒绝。完整字段、边界与真实组件证据见上节接口文档。

migration 29 新增不可变 media_request_video_configurations 和可选合计素材数量上限。 任务接受事务固定模型身份、绑定/策略、能力/采购规则版本、上游映射和凭据版本引用; 后续编辑不能换成本或能力版本,实时管理员停用、健康与容量仍有执行否决权。 旧任务缺少快照时保留现有恢复方式。未知提交、结果保存失败与最多一次换供给沿用原内核。 真实数据库只前进修复;down 仅为隔离空测试库,删除快照有数据损失。

On this page