漏斗报表显示下单 1200 单,电商后台实际支付 986 单,差了 214 单,运营按漏斗数据备货,库存压了两周。乍看像缓存或者权限的锅,追下去往往不是。

SELECT COUNT(*) FROM orders
WHERE DATE(paid_at) = '2026-11-13' AND status = 'paid';
# 与漏斗第二步事件数按 order_id 左连接比对

追下去是这么回事:下单事件在点击支付时就发了,退款、取消、支付失败都没有回传,漏斗只增不减。订单状态变更的事件没接,统计停在创建那一刻。

「漏斗退款未回传」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。

线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

具体做法是,下单事件改成支付成功后再发;接退款和取消事件,用负数金额冲抵;漏斗和订单表按订单号对账,找出差异单;每天跑一次对账脚本,差异超过 2% 报警。

验收就看一点,漏斗下单数和后台支付订单数差在 10 单以内,退款能在报表里看到冲减。

作者 9823189