13. 独立开发、团队、学习与工作流 · 资料陈述 · 教学步骤 7

自动化确定步骤,保留人工关口

重复确定动作适合自动化,异常和敏感内容需要人工负责。

原知识点:将采集、生成、翻译、组装、检查和发布等可确定环节自动化串联,减少人工逐步点击。

执行步骤

  1. 画出人工现状的每一步、输入、输出、失败方式和责任人,并选择规则稳定、错误可检测的步骤。
  2. 写成可运行的工作流配置与伪代码,定义唯一job_id、幂等键、超时、重试上限、状态机和产物版本。
  3. 定义结构化日志字段、成功/失败/延迟指标、告警阈值、值班责任人与人工接管动作。
  4. 在来源冲突、低置信、敏感内容、权限变化和发布前设置阻断式人工审批。
  5. 用影子批次演练成功、超时、重复、部分成功、审批拒绝与回滚;保存命令、日志和恢复结果后才逐步放量。

可复制工作表

# 工作流配置
```yaml
workflow: __
version: __
commit: __
input_manifest: __
input_hash: __
job_id_rule: __
idempotency_key: __
states: [QUEUED, RUNNING, WAITING_APPROVAL, APPROVED, PUBLISHED, REJECTED, FAILED, ROLLED_BACK]
timeout_seconds: __
max_retries: __
steps:
  - id: collect
    run: __
    on_error: retry_then_queue
  - id: validate
    run: __
    human_gate_when: [source_conflict, low_confidence, sensitive_content, permission_change]
  - id: publish
    run: __
    requires_approval: true
metrics:
  failure_rate: __
  p95_duration_ms: __
alerts:
  window: __
  thresholds: __
  notify: __
  acknowledgement_sla: __
  action: pause_workflow
rollback:
  artifact_version: __
  command: __
  verify: __
```

# 状态与副作用规则
重复键处理:__
部分成功处理:__
审批拒绝处理:__
失败后的队列/人工接管:__
发布、扣款或通知等副作用计数规则:__

# 结构化日志
|timestamp|job_id|idempotency_key|from_state→to_state|step|attempt|status|duration_ms|input_hash|artifact_version|error_code|gate_reason|approver|side_effect_count|evidence|
|---|---|---|---|---|---:|---|---:|---|---|---|---|---|---:|---|
|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|

# 影子演练矩阵
|场景|job/注入方式|预期状态、告警与副作用|实际状态/日志/告警|回滚或人工接管|恢复验证|结论|
|---|---|---|---|---|---|---|
|成功|__|__|__|__|__|__|
|超时|__|__|__|__|__|__|
|重复|__|__|__|__|__|__|
|部分成功|__|__|__|__|__|__|
|审批拒绝|__|__|__|__|__|__|
|发布中断/回滚|__|__|__|__|__|__|
|敏感/冲突/低置信|__|__|__|__|__|__|

批次样本、成功率、失败率、p95与阈值:__
告警送达/确认/暂停证据:__
生产放量或保持暂停的最终决定:__

完整示例

示例(ID与数字非通用阈值):
工作流=content_draft_v2,版本2.3.0,commit=7e19b2a;影子输入=evidence/automation/B17/input-20.csv,SHA-256=d6cc4dd520e401752e06918d5f8e7769110303e449daed889851ca69e41de2be。job_id规则=batch-row,幂等键=sha256(source_id+template_version+target_url);状态为QUEUED→RUNNING→WAITING_APPROVAL→APPROVED→PUBLISHED,失败可进入REJECTED/FAILED/ROLLED_BACK。每步超时30秒,最多重试2次。collect=node jobs/collect.mjs;validate=node jobs/validate.mjs,来源冲突、置信度<0.80、敏感字段或权限变化均阻断;publish=node jobs/publish.mjs且要求内容负责人批准。重复键直接返回已有终态;部分成功只保存隔离草稿并进入人工队列;审批拒绝删除待发布制品。

指标窗口=最近20个已尝试job;failure_rate=(FAILED+ROLLED_BACK)/20,>5%暂停;p95总时长>25秒告警。接收人=ops-oncall@example.test,5分钟内确认,否则升级工程负责人。回滚制品=artifact-v16,命令=deploy rollback artifact-v16 --workflow content_draft_v2,验证=node scripts/verify-release.mjs artifact-v16 --manifest evidence/automation/B17/published-urls.csv。

列较多时可左右滚动;首列会固定,便于逐行比较。

场景job/注入方式预期状态、告警与副作用实际状态/日志/告警回滚或人工接管恢复验证结论
成功B17-01,四个来源均有效PUBLISHED;发布1次PUBLISHED;attempt=1;side_effect_count=1;logs/B17-01.json无需接管生产预览内容hash等于批准稿PASS
超时B17-02,collect固定延迟31秒重试2次后终态FAILED;manual_queue=true;发布0;告警attempt=1/2/3均TIMEOUT,最终FAILED且manual_queue=true;发布0;logs/B17-02.json进入manual-collect队列队列含1条且原URL无新版本PASS
重复B17-03,同一幂等键并发3次只执行并发布1次,另2次跳过1次PUBLISHED、2次SKIPPED_DUPLICATE;发布计数1;logs/B17-03.json无需接管数据库job=1、页面版本=1PASS
部分成功B17-04,4个来源中1个返回503隔离已有3份结果,禁止发布,等待人工状态WAITING_APPROVAL,发布0,告警PARTIAL_SOURCE;logs/B17-04.json编辑查看缺失来源并退队列目标URL仍为artifact-v16PASS
审批拒绝B17-05,两个来源事实冲突WAITING_APPROVAL→REJECTED;发布0审批人陈拒绝,待发布制品删除;logs/B17-05.json返回来源核验对象存储pending目录0条PASS
发布中断/回滚B17-06,在8页中的第3页注入部署错误FAILED→ROLLED_BACK;8页全部恢复v162页曾写入v17后失败,告警到达;执行回滚;logs/B17-06.json值班人吴执行精确回滚命令验证8/8页面hash等于v16,发布副作用归零PASS
低置信B17-07,confidence=0.62阻断并等待人工;发布0WAITING_APPROVAL,原因LOW_CONFIDENCE;logs/B17-07.json编辑补证,未批准目标URL无变化PASS
敏感内容B17-08,正文含邮箱和电话阻断并拒绝;发布0REJECTED,原因SENSITIVE_CONTENT;logs/B17-08.json隐私负责人接管公开索引与CDN查询均0条PASS

结构化日志样例evidence/automation/B17/logs.ndjson逐行含timestamp、job_id、幂等键、状态迁移、attempt、duration、input_hash、artifact、error、gate、approver和side_effect_count。影子批次20个job的状态汇总为PUBLISHED 14、WAITING_APPROVAL 2、REJECTED 2、FAILED 1、ROLLED_BACK 1,合计14+2+2+1+1=20;失败率=(1+1)/20=10%,高于5%阈值;p95=22.4秒,未越25秒线。告警ALERT-208在14:03送达,值班人14:06确认,工作流自动PAUSED;截图与审计事件在evidence/automation/B17/alert-208/。敏感、冲突和低置信结果均0发布,重复job只有1次副作用。最终决定=KEEP_PAUSED,先修超时和发布事务,再用新的20-job影子批次复测;本轮不进入生产。

完成清单

  • 配置包含状态机、幂等、超时、重试、人工门禁、版本、输入hash与可执行回滚。
  • 结构化日志、指标公式、窗口、告警阈值、接收人、确认时限和暂停动作均已实填并实际触发验证。
  • 成功、超时、重复、部分成功、审批拒绝、敏感/冲突/低置信阻断及发布回滚逐场景留下证据。
  • 每个场景核对状态和副作用计数;重复执行不会重复发布或扣款,未获批准的产物不能进入生产。

适用条件

流程可观测、可重试、可回滚,并为异常和敏感内容保留人工关口。

来源:SEO友好的AI原生 CMS 的思考和实践