结论先给:如果重复触发来自页面或回传链路的技术故障,修复前应把原始日志完整留档,修复后另建一份干净记录,不要覆盖旧数据;如果重复触发来自业务规则本身变化(例如同一用户在不同设备各算一次转化),则应先确认新规则是否被计费口径接受,再决定是修正历史还是只对新数据生效。判断依据不是重复次数多少,而是重复是否改变了“一次有效转化”的定义。
技术重复指同一次用户动作被发送了多次,例如页面上的转化代码被重复加载、回传接口被重试、同一订单号在短时间内出现多条相同记录。这类重复的共同特征是:时间戳接近、事件参数几乎一致、可追溯到同一个用户动作。修复方向是去重和防抖,历史记录应保留原始版本。
规则重复指业务上确实发生了多次可计费动作,例如用户先提交表单又完成支付,或同一账号在多个设备上分别完成注册。这类重复不是故障,而是“转化事件定义”发生了变化。此时若直接按去重处理,可能把本应保留的转化删掉。应先确认计费事件与转化事件是否仍指向同一动作,再决定记录方式。
实际操作中,建议保留三份数据:修复前的原始记录、修复动作说明、修复后的新记录。原始记录不修改,只追加标记字段,例如status=raw;修复动作写成一条可读的变更说明,注明触发条件、影响时间范围和判断依据;修复后的记录从变更时间点开始单独统计。
这样做的好处是:当后续发现转化数量异常下降时,可以快速判断是修复生效导致重复消失,还是转化本身真的减少了。若把修复前后合并成一份,重复去除和真实下降会混在一起,无法区分。
一个假设例子:某活动连续三天每天记录到约两百条转化,其中约六十条时间戳集中在同一秒、参数完全相同。假设这些是技术重复,修复后第二天记录降到约一百四十条。此时若保留修复前原始记录,就能说明减少的六十条来自去重,而不是转化能力下降;若直接覆盖,则只能看到一个下降数字,无法解释。
反例:如果重复触发已经污染了计费口径,且平台侧按重复次数扣费或结算,那么仅保留旧记录并不够,还需要在结算对账时单独标注争议部分。此时“保留修复前后记录”只解决可追溯问题,不解决费用问题。若业务要求以平台账单为准,则历史修复记录只能作为内部核对依据,不能直接用来调整已结算金额。
另一个失效条件是:重复触发来自第三方回传接口的不可控重试,且对方不提供事件唯一标识。这种情况下,修复前的记录可能无法逐条对应到具体用户动作,只能按时间窗口做聚合估算。此时应明确标注估算范围,不要把它当作精确去重结果。
发现重复触发后,第一步不是立刻改代码或改回传规则,而是先导出当前时间段的完整记录并冻结,包括原始事件时间、参数、来源标识和当前统计结果。第二步,用同一用户动作的唯一标识(如订单号、请求 ID)抽样比对,确认重复是技术原因还是规则原因。第三步,根据比对结果选择修复范围:技术重复只修链路并保留旧记录;规则重复先确认计费口径,再决定是否回溯修正。
这个顺序会影响下一步:如果先修复再导出,原始证据可能已经丢失;如果先导出再判断,至少能保留两种解释的空间。记录修复前后差异,本身就是为了让后续决策有据可查,而不是为了追求一份看起来干净的数据。