先给结论:验收通过只证明交付物符合约定清单,不等于它已具备可运行条件。当页面能打开、后台能登录,但表单提交无响应、支付回调失败或移动端布局错乱时,缺口通常不在“有没有交付”,而在交付物与运行环境、真实数据和业务流程之间没有完成对接。此时保留、改写还是退出,取决于缺口属于配置层、实现层还是需求层。
把“不能用”拆成可核对的类别,能避免把配置问题误判为开发能力问题。
三类缺口的责任归属和修复成本差异很大。配置层通常小时级可解,实现层需要排期,需求层则涉及是否追加范围。判断顺序建议是:先在同版本干净环境复现,再换账号与数据复现,最后回查约定文本。
如果问题能列成一张有限清单,且每一项都有明确的修复动作和验证方式,保留通常比推倒重来划算。适用条件是:核心结构可用、数据可迁移、缺陷不涉及安全与资金链路。
实际动作上,可以要求把每个缺口写成“现象—复现步骤—预期结果—验证方式”四段式,而不是笼统说“再优化一下”。例如假设某站点后台能发布文章但前台列表不更新,复现步骤是发布后刷新列表页,预期结果是新标题出现在首位,验证方式是清缓存后再次刷新。若清缓存后恢复,说明是缓存策略问题而非数据写入失败,下一步就应调整缓存刷新逻辑,而不是重写发布模块。
这个动作的结果会直接影响后续判断:清单项能够逐条关闭,说明缺口收敛,可以继续合作;清单反复增加或同一现象换个说法重现,说明问题在架构或沟通机制,保留的价值下降。
改写指保留信息架构、内容与数据,替换部分实现,例如重做前端模板、替换有问题的插件或重构接口层。它成立的条件是:内容资产和数据结构仍有价值,问题集中在可替换的模块,且替换不会牵连已稳定的部分。
需要警惕的是把改写当成万能缓冲。若同一功能在三次修复后仍无法在目标机型或目标浏览器上稳定运行,继续在原有实现上打补丁,边际成本会上升。此时更有效的动作是先做一次最小可运行验证:用静态页面或简化逻辑跑通核心流程,确认需求本身可实现,再决定是否迁移。这个验证的结果决定了改写范围——验证通过说明是原实现的问题,验证失败说明需求或环境本身存在约束,需要回到需求层重新谈。
退出不是情绪化决定,而是当缺口无法通过修复收敛时的理性选择。触发条件包括:关键业务规则从未进入约定、交付物无法在目标环境运行且对方不承认环境差异、数据无法完整导出、后续维护依赖单方无法交接的私有改动。
退出前应确认三件事:一是可迁移资产清单,包括内容数据、图片、配置说明;二是当前可运行的最小版本,避免迁移期间业务完全中断;三是未关闭缺口的书面记录,用于后续责任划分。若数据能完整导出且结构清晰,迁移成本可控;若数据与私有逻辑深度耦合,先做导出验证再谈终止,比直接停付更稳妥。
无论选择哪条路,都需要把“不能用”转成可核对的证据,避免各说各话。建议按以下顺序取证:
需要提醒的是,访问量下降、抓取异常或某项统计归零,不能单独证明某次处理正确或错误,它们可能来自缓存、采集口径变化、外部链接变动等多种原因。把这类指标当作唯一证据,容易做出错误取舍。
最终判断可以归结为一句话:缺口能枚举、能复现、能逐条关闭,就保留并推动修复;缺口集中在可替换模块且内容资产有价值,就限定范围改写;缺口指向约定本身缺失或数据无法交接,就准备退出并优先保障资产可迁移。