当交付物通过了验收清单,却在真实业务中无法使用时,缺口通常不在“有没有交”,而在“交的东西能否在约定环境中跑起来”。界定缺口的关键动作是:把验收标准从“文件存在、页面可打开”切换到“在目标环境完成一次真实任务”,并记录失败发生在哪一步。这个动作会直接决定下一步是要求修复、补充依赖,还是重新协商范围。
假设某企业委托一家淮南网络科技公司做一个产品展示站,合同约定交付首页、栏目页、后台内容管理、部署说明和源文件。验收当天,页面在服务商提供的演示地址能打开,后台能登录,源文件齐全,双方签字确认。一周后企业把站点迁到自己的服务器,发现表单提交无响应、图片路径失效、后台无法保存内容。
此时容易产生两种做法。第一种是直接要求对方“全部重做”,理由是交付物不能用。第二种是认为验收已签字,缺口由企业自己承担,自行找人修补。两种做法都有代价:前者可能把原本只需修复环境配置的问题扩大成范围争议,后者可能让企业为对方未交付的依赖买单。判断该走哪条路,取决于缺口落在哪一层。
把“不能用”拆开,才能判断责任和修复成本。可以用下面的顺序排查,每一步都留下可复现的记录。
三种缺口的处理方式不同。环境缺口通常由部署方补齐条件,依赖缺口需要交付方补充材料,功能缺口才涉及返工或重做。把三者混在一起谈,容易把技术问题变成情绪对抗。
验收清单擅长确认“有没有”,不擅长确认“能不能用”。更有效的做法是约定一条端到端任务,在目标环境完整走一遍。例如:从后台新增一条产品记录,在前台列表和详情页看到它,再通过表单提交一条询价,并在后台看到这条询价。
完成这条任务需要同时满足环境、依赖和功能三层条件。任何一步失败,都能定位到具体环节,而不是笼统地说“站不能用”。假设这条任务在演示环境通过、在目标服务器失败,那么缺口大概率在环境或依赖层;如果两个环境都在同一步失败,缺口更可能在功能层。
这个动作的结果会直接影响下一步:如果失败点可复现且指向明确,就可以带着记录要求对方修复或补充,而不是重新谈判整个项目;如果失败点无法复现、只在特定时间或特定网络出现,则需要先排除外部因素,再决定是否计入缺口。
选择要求修复的成立条件:合同或沟通记录中约定了目标运行环境,交付清单包含部署与依赖说明,且失败点能在该环境中稳定复现。代价是可能延长交付周期,并需要双方确认修复范围是否超出原约定。
选择自行补齐的成立条件:缺口属于环境配置或企业侧资源(如服务器权限、域名解析、第三方账号),且交付方已提供足够说明。代价是企业需要投入自己的技术时间,且如果后续出现关联问题,责任划分会更模糊。
还有一种中间做法:先由交付方远程协助定位一次,把失败原因写成书面记录,再决定由谁执行修复。这种做法适合缺口原因尚不明确、双方都不愿先承担成本的情况。它的前提是双方同意以定位结果而非签字状态作为判断依据。
界定缺口的最终目的不是追责,而是让下一次验收不再出现“签了字却不能用”。可以在验收条款中加入三项内容:明确目标运行环境的具体条件;约定一条端到端任务作为通过标准;约定失败时的记录格式,包括操作步骤、预期结果、实际结果和发生环境。
这样做的结果是,验收从主观判断变成可复现的对照。当交付物再次出现“能验收但不能用”的情况时,双方可以直接对照记录判断缺口属于哪一层,而不必重新争论整份合同。对于委托方来说,这也让是否继续合作、是否追加预算有了可依据的节点,而不是等到上线当天才发现问题。