Files
ai-customer-service/docs/GRAY_LAUNCH_CHECKLIST.md

3.5 KiB
Raw Permalink Blame History

AI-Customer-Service 灰度放行清单

版本v1.0
状态:灰度放行总门禁
用途:作为一页式放行清单,统一判断“是否允许进入灰度、是否允许继续放量、是否必须回滚”


1. 使用规则

  • 任一 阻断项 未通过:不得进入灰度
  • 任一 回滚项 触发:立即回滚
  • 任一 观察项 异常:冻结当前档位,不继续放量
  • 本清单的结论优先级高于口头判断

2. 代码级门禁

  • go test ./... -count=1 通过
  • go test -race ./... 通过
  • go vet ./... 通过
  • production 禁止 memory fallback
  • readiness 语义已与真实依赖对齐
  • 工单闭环语义已收口
  • 后台接口最小鉴权已启用

说明:

  • 当前这些门禁已通过,属于进入灰度准备的必要非充分条件

3. Gate B 预生产门禁

  • scripts/verify_preprod_gate_b.sh 已建立
  • 本地/容器化 Gate B 预演通过
  • 真实 PostgreSQL migration 成功
  • signed webhook 联调通过
  • ticket / audit / dedup 入库可验证
  • live / ready 探针符合预期
  • 有验证记录:docs/PREPROD_VERIFICATION_RECORD.md
  • 真实共享预生产环境已复跑同一脚本并留痕

阻断结论:

  • 最后一项未完成前,不得宣称“真实预生产门禁已通过”

4. Gate C 灰度门禁

  • 最小监控指标已定义
  • 告警阈值已定义
  • 灰度放量节奏已定义
  • 回滚触发条件已定义
  • 最小 dashboard 已定义
  • scripts/verify_gate_c_rollback.sh 已建立
  • 本地/容器化回滚演练已通过
  • 有验证记录:docs/ROLLBACK_DRILL_RECORD.md
  • 真实共享预生产/灰度环境监控接线完成
  • 真实共享预生产/灰度环境回滚演练完成并留痕
  • 值班通知链路已确认

阻断结论:

  • 最后三项未完成前,不得进入真实灰度放量

5. 灰度放量节奏

阶段 流量比例 最短观察时间 进入条件
Stage 1 5% 30 分钟 Gate B 已通过,核心门禁全绿
Stage 2 20% 2 小时 Stage 1 稳定5xx / audit / DB 指标正常
Stage 3 50% 半天 Stage 2 稳定handoff / ticket 指标正常
Stage 4 100% 次日 Stage 3 稳定跨工作日,无新增 P0/P1

6. 继续放量判定

进入下一档前,必须同时满足:

  • webhook 5xx <= 0.5%
  • webhook reject 无异常升高
  • audit 写入失败数 = 0
  • postgres 连接异常 = 0
  • readiness down 未持续发生
  • 单实例重启次数 <= 2 / 10 分钟
  • handoff 比率 <= 25% 或未高于基线 2x
  • ticket 创建量 与人工承载能力匹配

任一不满足:

  • 冻结当前档位

7. 立即回滚判定

满足任一项,立即回滚:

  • webhook 5xx > 5% 持续 5 分钟
  • PostgreSQL 异常导致 ready 持续失败
  • audit 写入失败数 > 0 持续 5 分钟
  • ticket 创建链路断裂
  • 全量 readiness down
  • 实例反复重启且影响服务

8. 当前总判定

当前状态:

  • 代码级门禁:通过
  • 本地/容器化 Gate B通过
  • 真实共享预生产 Gate B未通过
  • 本地/容器化 Gate C 回滚演练:通过
  • Gate C 灰度门禁:未通过

因此当前唯一允许的结论是:

可以继续做共享预生产验证和灰度准备,但还不能进入真实灰度放量。