本月平台统计发送 8.2 万条,服务商账单 10.1 万条,差了 23%。抽查发现通知文案 120 个字,被拆成两条计费,统计表只记了一条。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

SELECT sum(ceil(char_length(content)/67)) billed,
       count(*) submitted
FROM sms_log WHERE dt BETWEEN '2026-11-01' AND '2026-11-30';

计费按 67 个字符一条算,超出部分自动拆分成多条长短信。业务侧统计的是提交次数,不是实际计费条数。签名和退订后缀也占字数,文案一长就跨过阈值。这一点先确认清楚,后面就不用反复试。

「短信计费条数」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

具体做法是,统计口径改成按计费条数记 提交时就算好拆分;模板控制在 67 字以内 超出的改短链;签名和退订语的字数一起算进去;每天和服务商账单对一次 差异超过 2% 就查。

改完照着核一遍,平台统计的计费条数和服务商账单差异缩小到 1% 以内,长短信拆分条数能逐条核对。

作者 9823189