ENGINEERING NOTE 23 / 50 · SMS
跨时区接码日报如何保持一致
事件时间用UTC保存,并明确报表时区。不能不加说明地混合本地日订单数与UTC日收码数。
本文由 OPEN RAMBO 发布。工程方案和伪代码用于说明设计,不是现有产品 API 文档;示例数字均为演示。
使用左闭右开窗口
一天用含起点、不含次日起点表示,避免午夜事件重复计数。边界由时区库计算,部分地区一年中UTC偏移会变化。
选择队列或事件口径
创建队列报表跟踪当天创建订单直到结束;事件报表统计当天收码,包含旧订单。两者都有价值,但不能随意互换分子分母。
展示迟到数据
延迟回调可能修正昨日报表。保留生成时间与数据截止时间,说明是否暂定。历史数据成熟后修正,应记录变化,而非反复静默覆盖。
示意流程
window = {"start_inclusive": start_utc, "end_exclusive": end_utc}
query = {"created_at": {"$gte": start_utc, "$lt": end_utc}}如何验收
测试边界前、边界时和边界后一毫秒,每个事件只能属于一个日期桶。