文档

工作流发布

将工作流名称视为不可变的生产目标。控制台编辑写入 Draft;Live 流量运行已发布的修订版本。

概述

将工作流 名称 视为不可变的生产目标。在控制台中的编辑会写入 Draft(草稿)Live(线上) 流量运行已发布的修订版本。

该功能由 workflow_releases_enabled 控制(默认 关闭)。关闭时,API 执行仍使用可变的 workflows 行。创建和导入仍会写入修订版本 r1,以便回填保持幂等。在完成下方检查清单之前,请勿在生产环境启用该功能。

核心概念

术语含义
Draft(草稿)当前的 workflows / workflow_events
Live(线上)workflows.published_revision_id
snapshot_hash去重哈希(content_hash 列);包含子工作流的 Live 固定点;不包含结构化输出的 id/名称
content_fingerprint脏检查哈希;忽略固定点修订字段以及结构化输出的 id/名称
执行快照(Execution snapshot)用于异步 Playground 草稿任务的短期 Draft 固定点(不是修订版本)

脏状态原因相互独立:

  • draft_content_changed — Draft 指纹与 Live 不一致
  • dependency_live_moved — 某个回调目标的 Live 固定点已变更

运行时行为

  • 生产 API 密钥始终运行 Live。不支持 @12 或请求头固定修订版本。
  • Live 异步任务会存储 workflow_revision_id
  • Playground 中的 Draft 异步任务会持久化执行快照并存储 execution_snapshot_id。该记录会保留到 expires_at 已过期 没有待处理 channel 没有未完成的 Oban 任务引用它为止。
  • 停用子工作流不会破坏已有固定点。by_name 会对已停用工作流返回 404。新的 Publish 不能固定到已停用的目标。

控制台

  • 创建后不能修改名称。
  • 删除会停用工作流;修订历史会保留。
  • Publish(发布)和 Rollback(回滚):组织所有者/管理员。
  • Restore draft(恢复草稿):编辑者;会克隆结构化输出,避免影响其他工作流。

启用步骤

  1. 运行 mix backfill_workflow_releases,直到所有工作流(包括已停用的)都拥有 Live 指针。
  2. 确认回调图无环。
  3. 在预发环境开启功能开关并充分验证:排队任务、channel TTL 刷新、在有进行中任务时执行 Publish。
  4. 确认已为 [:modelriver, :workflow, :missing_live][:modelriver, :workflow, :execution_snapshot_expired] 配置监控面板。

仅当上述门禁全部通过后,再设置 WORKFLOW_RELEASES_ENABLED=true