4.2 KiB
4.2 KiB
Supply-Intelligence 灰度放量执行计划(2026-05-10)
状态:待执行
仓库:/home/long/project/supply-intelligence
前提:QA 报告 CONDITIONAL_APPROVED,上线前检查清单已通过
0. 灰度策略总览
supply-intelligence 采用 account 级灰度,通过控制 AccountRoutingState.RoutingEnabled 和 SupplyAccount.ConsumerTag 实现逐步放量。
灰度阶段:
- 影子运行(0% account,只验证服务存活)
- 单 account 验证(1 个测试 account)
- 小批量放量(10% active accounts)
- 半量放量(50% active accounts)
- 全量放行(100% active accounts)
1. 影子运行(Shadow / 0% Account)
目标:验证服务部署后无 panic、无异常日志、metrics 正常。
执行步骤:
# 1. 部署到目标环境(并入 supply-api 主仓或独立实例)
# 2. 不启用任何 account 的 routing_enabled
# 3. 仅执行健康检查和 metrics 抓取
curl -fsS http://<BASE_URL>/healthz
curl -fsS http://<BASE_URL>/metrics | grep supply_intelligence_
观察窗口:5 分钟
通过标准:
- healthz 返回 200
- metrics 正常暴露无 panic
- 无 ERROR/FATAL 日志
2. 单 Account 验证(1 Account)
目标:验证完整业务链路在真实环境下可行。
执行步骤:
# 1. 选择一个测试 account(建议非生产关键 account)
# 2. 插入 test-passed candidate + draft package
# 3. 执行完整链路
BASE_URL="<BASE_URL>" PLATFORM="openai" MODEL="<test-model>" EVENT_ID="evt-gray-1" \
bash scripts/gateway_closure_smoke.sh
验证要点:
- publish 返回 candidate=published, package=active
- consume-once 返回 event=applied
- admission-state 返回 gateway_sync_status=applied
- inspect 返回 decision=continue
观察窗口:10 分钟
通过标准:链路完整闭环,无 failed 事件。
3. 小批量放量(10% Active Accounts)
目标:验证多 account 并发下无异常。
执行步骤:
# 1. 选取 10% 的 active accounts,设置 routing_enabled=true
# 2. 观察 10 分钟
# 3. 执行 inspect 脚本,确认指标正常
BASE_URL="<BASE_URL>" CONSUMER="gateway" bash scripts/gateway_closure_inspect.sh
关键指标:
gateway_events_processed_total增长与 publish 频率匹配gateway_event_latency_secondsP99 < 1sgateway_pending_retry_events< 5gateway_failed_events= 0
观察窗口:10 分钟
通过标准:所有关键指标在基线范围内。
4. 半量放量(50% Active Accounts)
目标:验证中等负载下稳定性。
执行步骤:
- 逐步放开至 50% active accounts
- 每批放量后执行 inspect
- 观察 latency 和 error rate
关键指标:
- 同上,但 latency P99 容忍度放宽至 < 2s
观察窗口:30 分钟
通过标准:无告警触发,inspect 决策为 continue。
5. 全量放行(100% Active Accounts)
目标:所有 active accounts 启用 supply-intelligence 路由。
执行步骤:
- 放开全部 active accounts
- 启动 24h/72h/首周巡检(见
PRODUCTION_OBSERVABILITY_CHECKLIST)
6. 止损条件(任意阶段触发即回滚)
| 条件 | 触发值 | 动作 |
|---|---|---|
| healthz 连续失败 | 3 次 | 立即 pause runtime |
| gateway 失败率 | > 10% | 执行 rollback 脚本 |
| pending retry 积压 | > 50 | 暂停放量,排查 consumer |
| latency P99 | > 5s | 降级至上一阶段比例 |
| panic / fatal 日志 | > 0 | 全量回滚 |
回滚命令:
curl -X POST "<BASE_URL>/internal/supply-intelligence/gateway/runtime/pause"
7. 执行决策点
需要确认:
- 部署目标:并入 supply-api 主仓 / tksea 独立实例 / 其他环境
- BASE_URL:灰度环境的实际访问地址
- 测试 account:单 account 验证时使用的 account ID
- 放量节奏:每阶段观察窗口时长(默认按本计划)
- 值班人:各阶段执行人和紧急联系人
8. 本地预验证已完成项
| 阶段 | 状态 | 证据 |
|---|---|---|
| 影子运行 | ✅ | healthz=200, metrics 正常 |
| 单 account | ✅ | smoke 脚本通过,decision=continue |
| 回滚脚本 | ✅ | rollback.sh 语法通过,pause/resume API 可用 |
版本:v1.0 | 创建:2026-05-10