# 唯一验收门禁表（Single Source of Truth）

- 版本：v1.1
- 日期：2026-03-24
- 状态：生效
- 用途：统一 S0/S1/S2 的验收阈值、判定逻辑与阻断动作，消除多文档阈值漂移。

---

## 1. 适用范围与优先级

1. 本文档是阶段验收与升波决策的唯一门禁来源。
2. 若其他文档阈值与本文冲突，以本文为准。
3. 其他文档仅保留解释性描述，不再重复定义最终阈值。

---

## 2. 指标字典（唯一口径）

| 指标ID | 指标名 | 定义/公式 | 目标值 | 阻断阈值 | 数据来源 |
|---|---|---|---|---|---|
| M-001 | `gateway_availability` | 成功请求/总请求 | >=99.9%（S1）；>=99.95%（S2） | <99.5%（连续3天） | 网关指标/APM |
| M-002 | `gateway_added_latency_p95_ms` | 网关附加时延 P95 | <=60ms | >100ms（连续3天） | APM/系统指标 |
| M-003 | `gateway_added_latency_p99_ms` | 网关附加时延 P99 | <=100ms（S2-B及后） | >150ms | APM/系统指标 |
| M-004 | `billing_error_rate_pct` | 账务差错请求/计费请求 | <=0.1% | >0.1% | 对账报表 |
| M-005 | `billing_conflict_rate_pct` | 幂等冲突/计费请求 | <=0.01% | >0.01%（即触发阻断） | 幂等审计计数器 |
| M-006 | `overall_takeover_pct` | 自研主路径请求/全部主路径请求 | S2终验>=60% | Wave-Global-3期间<60% | 验收SQL |
| M-007 | `cn_takeover_pct` | 自研国内供应商请求/国内供应商请求 | =100% | <100% 持续5分钟 | 验收SQL |
| M-008 | `route_mark_coverage_pct` | 路由标记覆盖请求/主路径请求 | >=99.9% | <99.9% | 验收SQL |
| M-009 | `fallback_success_rate` | fallback 成功次数/fallback 总次数 | >=95%（A）；>=97%（B/C） | <90% | 运行指标 |
| M-010 | `routing_accuracy_pct` | 路由正确请求/可判定请求 | >=99%（A）；>=99.5%（C） | <98% | 路由审计 |
| M-011 | `provider_validation_success_pct` | 套餐验证成功数/验证总数 | >=90% | <85% | 供应侧验证服务 |
| M-012 | `supplier_onboarded_count` | 入驻供应方数量 | >=10（S0） | <8（S0收尾） | 运营台账 |
| M-013 | `supplier_credential_exposure_events` | 供应方上游凭证泄露事件数 | =0 | >0 即 P0 | 安全审计/脱敏扫描 |
| M-014 | `platform_credential_ingress_coverage_pct` | 使用平台凭证入站请求/总入站请求 | =100% | <100% | 鉴权日志/网关审计 |
| M-015 | `direct_supplier_call_by_consumer_events` | 需求方绕过平台直连供应方事件数 | =0 | >0 即 P0 | 出网审计/安全事件中心 |
| M-016 | `query_key_external_reject_rate_pct` | 外部 query key 被拒绝数/外部 query key 请求总数 | =100% | <100% | 网关拦截日志 |

口径补充：
1. 主路径端点集合固定为 `/v1/chat/completions`、`/v1/messages`、`/v1/responses`、`/v1beta/*`。
2. `/responses` 等 alias 入口必须在 Ingress 归一后再统计。
3. 国内平台分类来源固定为配置表 `gateway_cn_platforms`，禁止 SQL 硬编码。
4. 需求方仅可使用平台签发凭证访问平台入口，禁止获取供应方上游凭证。

---

## 3. 分阶段门禁表

### 3.1 S0 阶段门禁

| Gate ID | 场景 | 必达条件 | 不通过动作 | 责任人 |
|---|---|---|---|---|
| G-S0-1 | 供应侧MVP验收 | M-012>=10 且 M-011>=90% | 延长S0 1-2周并冻结对外承诺 | 产品+运营 |
| G-S0-2 | Key安全专项验收 | API Key专项安全验收通过（对应WBS C0.1.4） | 阻断S0验收，先修安全缺陷 | 安全+测试 |

### 3.2 S1 阶段门禁

| Gate ID | 场景 | 必达条件 | 不通过动作 | 责任人 |
|---|---|---|---|---|
| G-S1-1 | 灰度7天上线门禁 | M-001>=99.9%，M-004<=0.1%，30分钟内回滚演练通过 | 不得升至全量；维持灰度并整改 | 平台+SRE |
| G-S1-2 | 发布前兼容门禁 | Schema/Behavior/Performance 三重Gate全部通过 | 阻断发布 | 架构+QA |
| G-S1-3 | 凭证边界门禁 | M-013=0，M-014=100%，M-016=100% | 阻断发布并触发安全复盘 | 安全+平台 |

### 3.3 S2 阶段门禁（替换核心）

| Gate ID | 阶段 | 必达条件 | 升波条件 | 阻断条件 | 不通过动作 |
|---|---|---|---|---|---|
| G-S2-A | 10% | M-001>=99.9%，M-002<=60，M-010>=99%，M-004<=0.1%，M-009>=95%，M-014=100% | 连续2周达标 | 任一红线触发 | 回切 subapi，修复后重试 |
| G-S2-B | 30% | M-001>=99.95%，M-003<=100，M-009>=97%，M-014=100% | 连续2周达标 | M-004>0.1% 或 P0事故 | 暂停升波，补救后复核 |
| G-S2-C1 | 40%中间检查点 | M-001>=99.95%，M-002<=60，M-003<=100，M-010>=99.5%，M-004<=0.1%，M-009>=97%，M-013=0，M-014=100%，M-015=0 | GO/CONDITIONAL GO | 任一红灯阈值 | 决策会：继续/附条件继续/回滚 |
| G-S2-C2 | 60%终验 | M-006>=60%，M-007=100%，M-004<=0.1%，M-005<=0.01%，M-008>=99.9%，M-001>=99.95%，M-013=0，M-014=100%，M-015=0，M-016=100% | 通过后S2完成 | 任一硬门槛不满足 | 延长S2并冻结升波，不降终验目标 |

---

## 4. 红线规则（跨阶段）

任一条命中即触发 `P0`：

1. `cn_takeover_pct < 100%` 持续 5 分钟。
2. `billing_conflict_rate_pct > 0.01%`。
3. `billing_error_rate_pct > 0.1%` 持续 30 分钟。
4. 流式 replay/双流拼接被验证复现。
5. 主路径口径缺失：`route_mark_coverage_pct < 99.9%`。
6. `supplier_credential_exposure_events > 0`。
7. `direct_supplier_call_by_consumer_events > 0`。
8. `platform_credential_ingress_coverage_pct < 100%` 或 `query_key_external_reject_rate_pct < 100%`。

处理动作：
1. 立即停止升波。
2. 触发自动回切（目标 10 分钟内触发、30 分钟内恢复）。
3. 24小时内提交复盘与修复计划。

---

## 5. 决策与证据包要求

1. 每个 Gate 必须有“通过/有条件通过/不通过”结论。
2. 每次升波必须提交证据包：
   - 原始执行日志
   - SQL 结果快照
   - 关键指标截图
   - 风险说明与责任人签字
3. 无证据包视为未通过。

---

## 6. 变更治理

1. 本文档阈值变更属于高风险变更，必须通过评审会批准。
2. 变更记录必须包含：变更原因、影响评估、回滚条件、生效日期。
3. 未完成变更审议前，不得在周报/看板/执行文档中使用新阈值。
