先给结论:不要在修复时直接覆盖旧数据。为重复触发的转化事件单独建一张“修复台账”,把修复前快照、修复动作、修复后快照按时间顺序并排保留,让回传口径、去重规则和统计口径三者分开记录。这样做的目的是让前后差异可追溯,而不是让某一版数字看起来更整齐。
重复触发通常有三种来源,处理方式不同:
只有先区分来源,才能决定是修回传逻辑、修统计口径,还是修业务主键。如果混在一起改,修复后你无法判断数字变化到底来自哪一层。
在改动任何回传代码或去重规则之前,先把当前状态固定下来。具体动作可以这样执行:
conv_before_20240601_v1。冻结快照的结果是:修复后即使数字变化,你仍能回答“变化发生在哪个字段、哪条记录”。如果跳过这一步,后面只能靠记忆比对,无法形成可核对的证据。
修复本身不是一次点击,而是一组可回放的变更。建议在台账里逐条写清:
这里的关键是让每一条变更都能被独立解释。如果一次修复同时改了三个字段,后续出现异常时你无法定位是哪一个引起的。假设某次修复把去重窗口从24小时改为1小时,那么只有落在窗口边缘的重复记录会变化,超出窗口的历史记录应保持不变——这个预期本身就是验证修复是否按计划生效的依据。
修复完成后,导出一份修复后的明细,与冻结快照按业务主键做并排比对。比对时关注三类差异:
比对结果直接决定下一步:如果只有重复条目减少、正常事件不变,说明修复方向正确,可以进入观察期;如果正常事件也减少,说明去重条件过严,需要回退并重新界定主键。这个判断不能只看总量是否下降,因为总量下降也可能来自流量波动或统计延迟,必须落到具体记录上才能区分。
修复前后记录的价值,不在于保留两套数字,而在于保留决策依据。台账中至少应包含:修复原因、当时观察到的问题现象、选择该修复方式的理由、以及未采用其他方案的原因。
例如,当时可能是业务系统改版导致同一表单提交产生两个事件类型,你选择在回传层按“提交ID+事件类型”去重,而不是在统计层过滤,理由是后者会掩盖业务系统的问题。把这条理由写进台账,后续同事看到数字变化时,才能理解这不是数据丢失,而是口径修正。缺少理由的记录,过一段时间就会变成无法解释的差异。
修复生效后,至少覆盖一个完整的业务周期再判断。观察期内继续记录每日回传量与业务实际量的偏差,并与修复前的偏差趋势对比。
需要说明的是,回传量下降或某项统计归零,不能单独证明修复正确。它也可能来自流量结构变化、统计延迟、或业务系统本身的波动。只有当重复记录按预期减少、且正常记录未受影响时,修复才算得到验证。如果观察期内偏差没有收敛,应回到台账检查修复动作是否真正生效,而不是继续叠加新的去重规则。
按上述顺序执行,你最终得到的不是一份更干净的数字,而是一条从问题现象到修复依据再到验证结果的完整链条,任何一次口径变化都能被独立解释和复核。