P1.6 取号 fallback 预算控制 — 上线后效果分析

PR #302 + #303 (commit ac31283c / ce59fc2d) · production deploy ≈ 2026-05-08 18:30+08 · 报告生成 2026-05-10 17:30+08

TL;DR

P1.6 fallback PR 是非常成功的 win:取号率 +27%,端到端转化率 +57%,证据链完整。 Trade-off 是接码率轻微回落 1.4pp(fallback 多打了次优 supplier),P2 combo_health worker(5-09 17:30 已 deploy)应该慢慢自愈。

同时发现 4 个值得 escalate 的 SigNoz 异常 — 详见底部"建议优先级"。

1. 核心 KPI(5-08 18:30 前后 24h 对比)

Attempts → Allocated 取号率
before: 37.4%
47.7%
+10.3pp · 27% ↑
Per-Order 取号率(含 fallback)
before: 42.1%
59.7%
+17.6pp · 42% ↑
Allocated → SMS 接码率
before: 27.4%
25.9%
−1.4pp · 符合 trade-off
端到端转化率(D2 so far)
before: 11.5%
18.1%
+6.6pp · 57% ↑

数据源: supplier_execution_attempts + orders 表,时间窗 5-07 18:30 → 5-09 18:30+。

2. Fallback 行为变化(核心证据:P1.6 真的在工作)

时间窗单 supplier 试2 suppliers fallback3+ suppliers fallback
before 1798 单 / 44.6% 胜 260 单 / 24.6% 胜 0
after 2866 单 / 67.7% 胜 741 单 / 37.8% 胜 129 单 / 10.1% 胜

3. Supplier 质量分布(after 24h)

Supplierattemptswin %sms / alloc %评价
grizzlysms.com102374.5%36.1%黑马 — scorer 应该多倾斜
durianrcs.com158958.5%22.7%主力
sms-bus.com80137.7%21.2%一般
alisms.org131317.9%13.2%82% failure,质量塌陷
24sms7.com1040.0%0.0%几乎弃用

4. SigNoz 日志异常(按严重度排序)

P0 财务 链上余额不足 × 219 次 / 24h

日志 "严重告警:链上余额不足,可能被盗或数据库错误"。跟取号无关,但是独立告警系统炸了。 可能是 TronGrid 钱包被盗或 DB 数据不一致,需要财务 ASAP 排查。

P0 财务 sweep address orders failed × 316 次 / 24h

TronGrid 充值地址轮询扫描失败。可能 API rate limit / network failure / 钱包地址池配置。 跟取号无关但跟充值流程直接相关。

P1 治理 alisms.org 82% failure rate

1076/1313 attempts 失败。P2 combo_health worker(5-09 17:30 已 deploy)应该会自动 hide 这家的烂 combo。 monitor 7 天看是否自动衰减。如果没改善,运营手动 demote / disable alisms.org。

P2 治理 unknown country code: HK / OM 反复出现

sms-bus.com 收到 country=HK 或 OM,本地 mapping 表没有 → 直接 fail。 影响:HK / OM 订单无法走 sms-bus.com fallback,降低取号率。 补法:admin「服务映射」补这两条 mapping。

P3 噪音 fallback supplier instance not in manager: isptelecom × 80 次

5-09 18:00 才出现(PR #305 P2 combo_health 部署后),由 routing.go:310 的 manager.Get warning 暴露。

根因(已 prod DB 验证):

业务影响:0(continue 路径正常);只是日志噪音 + SigNoz 流量浪费。

修法(择其一):

-- 运营层(推荐):
UPDATE suppliers SET status='disabled' WHERE slug='isptelecom';

-- 或代码层(更稳): routing 在 cross-fallback 候选列表预过滤 manager 没注册的 supplier

5. 我的建议优先级

6. 数据颗粒度问题

supplier_execution_attempts.status 列里所有失败都归 'failed',没看到 no_numbers / no_balance / timeout 等细分错误码。建议 audit error_code 字段写入路径 确保 supplier 返回的细分错误码正确传递,否则错误归因颗粒度不够。

数据源: PostgreSQL prod readonly + SigNoz API · 报告时间窗: 5-07 18:30 — 5-10 17:30 (UTC+8) · 分析人: Claude Code