ENGINEERING NOTE 23 / 50 · SMS

跨时区接码日报如何保持一致

OPEN RAMBO ·

事件时间用UTC保存,并明确报表时区。不能不加说明地混合本地日订单数与UTC日收码数。

本文由 OPEN RAMBO 发布。工程方案和伪代码用于说明设计,不是现有产品 API 文档;示例数字均为演示。

使用左闭右开窗口

一天用含起点、不含次日起点表示,避免午夜事件重复计数。边界由时区库计算,部分地区一年中UTC偏移会变化。

选择队列或事件口径

创建队列报表跟踪当天创建订单直到结束;事件报表统计当天收码,包含旧订单。两者都有价值,但不能随意互换分子分母。

展示迟到数据

延迟回调可能修正昨日报表。保留生成时间与数据截止时间,说明是否暂定。历史数据成熟后修正,应记录变化,而非反复静默覆盖。

示意流程

window = {"start_inclusive": start_utc, "end_exclusive": end_utc}
query = {"created_at": {"$gte": start_utc, "$lt": end_utc}}

如何验收

测试边界前、边界时和边界后一毫秒,每个事件只能属于一个日期桶。

继续阅读