对象格式变化后,输入规范不应整体重写,而应先判断变化属于“同一对象的表达方式变了”还是“工具实际接受的对象类型变了”。前者通常只需在输入端做格式归一化,后者才需要调整查询口径、拆分对象或更换工具。在缺少完整数据或权限的情况下,最小可执行动作是:取一小批已知对象,分别用新旧格式各跑一次,比较返回结果的完整度、字段结构和失败类型,再决定改哪一层。这个动作只能证明两种格式在样本上的表现差异,不能直接推出全量数据的处理结果,也不能证明某种格式一定被工具长期支持。
最容易被误判的场景是:把对象从一种写法换成另一种写法后,失败数量突然上升,但旧写法仍能返回部分结果。表面看像是新格式不被支持,实际至少有两条解释。
这两种解释对应完全不同的改法。若是归一化问题,改输入清洗即可;若是对象类型问题,继续清洗也无效,必须改查询结构或换工具。
不要只看失败率。能区分解释的证据通常集中在失败对象的分布和返回内容上。
假设某工具原本接受以逗号分隔的对象列表,现在改为要求每行一个对象。取 20 个已知对象做对照:旧格式成功 14 个,新格式成功 6 个。此时不能直接得出“新格式更差”,因为新格式失败的对象里,有 9 个同时包含多余空格和重复分隔符。先做归一化——去空白、统一分隔符、去重——再各跑一次。若新格式成功数升到 18 个,说明主要矛盾在输入清洗;若仍停在 6 个且失败对象集中在某一类对象上,说明是对象类型或字段要求变了,应转向调整查询结构或核对工具说明。这个例子的数字只用于说明比较方法,不代表任何真实工具的表现。
在没有全量对象、也没有工具内部文档的情况下,仍然可以做三件不依赖权限的事。
需要明确的是,对照集上的成功不能推出全量对象都能成功,失败也不能单独证明工具不再支持该格式。请求量或返回量下降同样有多种解释,例如对象覆盖范围变化、权限范围收窄或查询条件本身改变。只有在排除了清洗、权限和对象覆盖这些因素后,才能把差异归因到格式支持变化上。
规范改得越严,越容易早发现问题,但也越可能把本来可用的对象挡在外面;改得越松,短期通过率高,却会把格式问题推迟到结果分析阶段。较稳妥的做法是:清洗层尽量宽松,只做无歧义的归一化;校验层尽量明确,把对象类型、必填字段和取值范围写清楚。这样当工具支持的对象格式再次变化时,只需调整校验层,而不必推翻整个输入流程。具体到某个工具当前接受哪些格式、是否提供结构化输入,仍需以该工具的现行说明为准,不能沿用旧经验直接推断。