# 客服 SLA 与升级响应规范 > 版本:v1.1 > 状态:已更新为灰度门禁口径 > 关联:`docs/MONITORING_ALERTING.md`、`docs/GRAY_DASHBOARD_MINIMUM.md`、`prd/GRAY_RELEASE_ROLLBACK_RUNBOOK.md` --- ## 1. Phase 1 灰度期 SLA 灰度期的 SLA 不是最终商业承诺,而是**是否继续放量**的门槛。 ### 1.1 核心灰度门槛 | 指标 | 目标值 | 用途 | |------|--------|------| | Webhook 成功率 | `>= 99%`(5 分钟窗口) | 是否允许继续放量 | | Webhook 5xx | `< 1%`(5 分钟窗口) | 超阈值即停止放量 | | Readiness 可用率 | `>= 99.5%` | 实例是否稳定接流量 | | PostgreSQL 依赖异常 | `= 0`(5 分钟窗口) | 关键依赖门禁 | | Audit 写入失败数 | `= 0`(5 分钟窗口) | 合规/追溯门禁 | | Handoff 比率 | `<= 25%` 或不高于基线 `2x` | 判断机器人能力是否异常退化 | | 工单接单时间 P95 | `<= 30 分钟` | 人工链路可承载性 | | 工单解决时间 P95 | `<= 4 小时` | 最小服务能力 | ### 1.2 灰度期分级 | 级别 | 定义 | 响应时间 | 恢复目标 | |------|------|----------|----------| | P0 | 数据库不可用、全量 5xx、审计主链断裂 | 5 分钟 | 30 分钟内恢复或回滚 | | P1 | 5xx > 1%、连续 readiness down、ticket 主链异常 | 15 分钟 | 1 小时内恢复或回滚 | | P2 | reject 异常升高、handoff 比率异常、重启抖动 | 30 分钟 | 4 小时内恢复 | --- ## 2. 升级与通知规则 | 触发条件 | 等级 | 通知 | |----------|------|------| | Webhook 5xx `> 5%` 持续 5 分钟 | P0 | 电话 + 飞书,立即回滚 | | PostgreSQL 连接异常导致 `ready` 失败 | P0 | 电话 + 飞书,立即冻结放量 | | Audit 写入失败数 `> 0` 持续 5 分钟 | P1 | 飞书,立即停止继续放量 | | Handoff 比率 `> 25%` 或高于基线 `2x` | P2 | 飞书,需人工研判 | | 单实例 10 分钟内重启 `> 2` 次 | P2 | 飞书,冻结当前档位 | --- ## 3. 当前实现与 SLA 的关系 ### 3.1 已有支撑 - `live` / `ready` 探针已具备 - PostgreSQL readiness 检查已接入 - webhook HMAC / timestamp / dedup 已具备 - ticket / audit / dedup 本地/容器化 Gate B 已证据化通过 ### 3.2 仍待落地 - 真实共享预生产环境上的统一指标采集 - 告警平台接入 - 灰度阶段的自动统计和 dashboard 因此当前 SLA 结论应当理解为: > **门槛已定义,但真实共享预生产和灰度环境的观测接线仍需补齐。** --- ## 4. 与放量门禁的绑定 进入下一灰度档位前,必须满足: 1. 最近一个观察窗口 `webhook 5xx <= 0.5%` 2. `audit 写入失败数 = 0` 3. `postgres 连接异常 = 0` 4. 无连续 `readiness down` 5. handoff / ticket 指标没有异常飙升 任一条件不满足: - 不允许继续放量 - 必要时触发回滚 --- ## 5. 当前版本状态 - 文档版本:`v1.1` - 本次更新日期:`2026-05-04` - 下次审查:灰度第一轮结束后