# AI-Customer-Service 灰度放行清单 > 版本:v1.0 > 状态:灰度放行总门禁 > 用途:作为一页式放行清单,统一判断“是否允许进入灰度、是否允许继续放量、是否必须回滚” --- ## 1. 使用规则 - 任一 `阻断项` 未通过:**不得进入灰度** - 任一 `回滚项` 触发:**立即回滚** - 任一 `观察项` 异常:**冻结当前档位,不继续放量** - 本清单的结论优先级高于口头判断 --- ## 2. 代码级门禁 - [x] `go test ./... -count=1` 通过 - [x] `go test -race ./...` 通过 - [x] `go vet ./...` 通过 - [x] production 禁止 memory fallback - [x] readiness 语义已与真实依赖对齐 - [x] 工单闭环语义已收口 - [x] 后台接口最小鉴权已启用 说明: - 当前这些门禁已通过,属于**进入灰度准备的必要非充分条件** --- ## 3. Gate B 预生产门禁 - [x] `scripts/verify_preprod_gate_b.sh` 已建立 - [x] 本地/容器化 Gate B 预演通过 - [x] 真实 PostgreSQL migration 成功 - [x] signed webhook 联调通过 - [x] ticket / audit / dedup 入库可验证 - [x] `live` / `ready` 探针符合预期 - [x] 有验证记录:`docs/PREPROD_VERIFICATION_RECORD.md` - [ ] 真实共享预生产环境已复跑同一脚本并留痕 阻断结论: - **最后一项未完成前,不得宣称“真实预生产门禁已通过”** --- ## 4. Gate C 灰度门禁 - [x] 最小监控指标已定义 - [x] 告警阈值已定义 - [x] 灰度放量节奏已定义 - [x] 回滚触发条件已定义 - [x] 最小 dashboard 已定义 - [x] `scripts/verify_gate_c_rollback.sh` 已建立 - [x] 本地/容器化回滚演练已通过 - [x] 有验证记录:`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 灰度门禁:未通过** 因此当前唯一允许的结论是: > **可以继续做共享预生产验证和灰度准备,但还不能进入真实灰度放量。**