“验收通过”只说明交付物符合当初写下的验收口径,并不说明它能被接手方实际使用。要界定缺口,先分清两件事:验收标准是否覆盖了“可用”这件事,以及不可用是交付本身的问题还是接手环境的问题。通常只有前者构成可追责的缺口,后者应通过补做交接或迁移动作解决,而不是重新验收一遍。
把不可用拆成两类证据来区分。第一类:交付物本身不完整或不可读,比如<meta>标签被清空、内链指向已删除页面、脚本引用了对方服务器上的私有接口。这类问题在任何环境下都会复现,属于交付缺陷。第二类:交付物在对方环境里能用,换到你的环境就不能用,比如页面模板依赖对方主题框架、数据文件用了对方内部的字段命名。这类问题属于耦合,不是交付方单方面少给了东西,而是双方没有约定“脱离原环境仍可使用”。
判断方法很直接:把交付物放进一个干净、无对方依赖的测试环境跑一遍。能在干净环境复现的问题,写进缺口清单;只在原环境成立的,写进迁移清单。这个动作的结果决定下一步是走追责还是走补做,两者不能混在一份验收结论里。
如果当初的验收口径只写了“提交页面清单、关键词表、报表”,没有写“接手方可以独立编辑和部署”,那么对方按字面交付即视为完成,缺口只能算口径缺失。此时合理的选择不是拒收,而是把可用性作为新需求单独谈,或者自己补做迁移。
具体动作:先按“能读、能改、能部署”三项逐条测试,记录每条失败的具体表现和依赖对象,形成一份带复现步骤的清单。清单的作用不是索赔,而是把补做范围量化,让后续报价或内部工时估算有依据。如果大部分失败项都指向同一处依赖,比如全部内容都锁在对方的页面构建器里,那么补做成本可能高于重新整理,这时退出比修复更划算。
如果口径里明确出现“可独立维护”“源码与配置一并交付”“不依赖原服务方账号”这类表述,那么干净环境下的复现失败就构成可追责缺口。此时需要区分是漏交还是交错了版本:漏交是清单里有但实际没给,交错版本是给了但和线上生效的不是同一份。
验证交错版本有一个省事的办法:用交付物在干净环境重建一个页面,和线上同页面做逐项比对。差异集中在结构化数据、内链或渲染结果上,说明交付的是旧版或简化版;差异只在样式上,多半是资源路径没一起给。这个比对结果决定你是要求补交原件,还是只需补一份资源映射表。
旧合作关系结束时,容易按“当初投入了多少”来决定保留什么,这会导致保留一堆无法带走的东西。更实用的取舍标准是可迁移性:能脱离原系统独立存在的内容和配置优先保留,绑定在原系统里的中间产物可以直接放弃。
假设一种情况:旧服务方交付了一份关键词到页面的映射表,但表里的页面路径是对方系统的内部编号,不是公开网址。这份表在验收意义上完整,在使用意义上不可用。处理方式不是要求重做整份表,而是要求补一份编号到公开网址的对照,成本远低于重建映射。这个例子说明,缺口界定到“缺哪一层映射”就够了,不必扩大到否定整份交付。
最终要产出的不是“验收不通过”这种结论,而是一份分层的处置说明:哪些项在干净环境复现失败、失败原因指向哪一层依赖、补做的最小范围是什么、如果补做成本超过重做则退出。这样接手方拿到的是下一步动作,而不是一场关于验收是否通过的争论。退出旧合作时,能带走的可用部分往往比想象中少,但把缺口界定清楚,至少能让保留的那部分真正派上用场。