先给结论:自动导出遗漏分页,通常不是“少导了几页”这么简单,而是导出范围、分页识别和去重逻辑三处中至少一处出现了偏差。检查完整性时,不要先看总数,而要先确认“哪些页本该出现、哪些页实际出现、差集落在哪一段”,再把差集交给对应角色复核。下面用两种条件展开:分页标识稳定和不稳定时,检查动作完全不同。
如果列表页的分页参数或页码是可预测的,例如页码连续递增、每页条数固定,那么完整性检查可以走锚点法。具体动作是:先记录第一页和最后一页各取一条记录作为锚点,再在中间按固定间隔抽若干页,把抽到的记录与导出文件比对。
这个动作的结果会直接决定下一步:如果只有末页缺失,问题范围小,可以只补导末页并核对;如果中间抽样也缺,说明遍历逻辑不可信,必须整段重导,不能只补几页。
有些列表的分页并不靠页码,而是靠游标、时间戳或加载顺序,翻页时顺序可能变化。这时用页码核对会得出错误结论。更稳的做法是给每条记录生成一个指纹,例如用标题加链接或唯一ID拼接,然后比较“预期集合”和“实际集合”。
假设一个例子:预期集合有100条,导出文件有96条。差集显示缺的4条都集中在某个时间段。这提示不是随机丢页,而是该时间段的分页边界被跳过。反过来,如果缺的记录分散在各段,更可能是去重键把不同记录误判成同一条。
注意,导出条数变少不能单独证明遗漏。重复记录被合并、筛选条件被再次应用、字段为空被过滤,都会让条数下降。所以要先看差集内容,再看条数。
多个角色对“是否完整”有不同理解时,争论通常来自各自看的是不同层面。运营看的是业务需要的记录是否都在,技术看的是请求是否都成功,审核看的是结果能否复现。把分歧转成项目,可以按下面三步走。
如果两次差集一致,说明问题稳定,可以定位到规则;如果两次差集不同,说明分页顺序或数据本身在变,此时应先固定数据快照再检查,否则任何结论都不可靠。
有几种情况即使差集不为空,也不一定代表导出有缺陷。第一,导出时应用了业务筛选,而预期集合没有应用同一筛选;第二,源数据在两次读取之间发生了新增或删除;第三,末页本身是动态加载,导出工具按可见范围截取。遇到这些例外,正确动作是先对齐筛选条件和读取时点,再判断是否真的遗漏。
还有一种容易被忽略的例外:末页只有少量记录时,某些分页识别方式会把它当成无效页跳过。判断方法是单独请求末页,看返回是否为空。如果末页非空但导出没有它,就属于需要修正的遗漏,而不是可接受的例外。
完整性检查的终点不是“看起来齐了”,而是一句可复查的结论,例如“在固定筛选和固定时点下,预期集合与实际集合的差集为空,抽样锚点一致”。这句话要包含条件、比对对象和结果三部分。下次换人复查时,只要条件相同,就能复现同样的判断。若条件无法复现,应先记录条件差异,再决定是否需要重新导出,而不是直接认定这次导出失败。