# 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 灰度门禁：未通过**

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

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