判断返工该由谁承担,关键不是看谁改的,而是看这次修改是否推翻了已经书面确认过的范围。如果原需求、验收标准和确认记录都指向同一结论,而修改只是因为一方当时没看清或临时改主意,通常算需求方返工;如果确认内容本身含糊、前后矛盾,或执行方交付的成果不符合已确认标准,则算承接方返工。下面用一个假设情境把判断顺序拆开。
假设某企业委托开发一个产品列表页,合同附件里写的是“支持按类别筛选”,报价按开发工时结算。页面交付后,需求方提出还要支持按价格区间和库存状态筛选,并认为这属于“筛选功能”的自然组成部分。承接方认为原附件只确认了类别筛选,新增两项要另计工时。此时返工归属不能靠感觉,而要看三份材料:需求附件、原型或线框图、验收记录。
如果原型里只画了类别下拉框,验收记录也写明“类别筛选通过”,那么新增价格区间和库存状态属于范围外变更,需求方承担相应工时。反过来,如果原型里画了三个筛选条件,只是开发时漏做,那就属于承接方返工,不应再向需求方计费。这个判断与报价高低无关,只与确认边界有关。
按工时计费的项目,返工争议大多不是算错工时,而是缺少能对齐认知的证据。可操作的做法是在每次进入开发前固定以下材料:
这三份材料的作用是让“返工”变成可指认的对象。没有它们,按工时计费就会退化成双方各说各话,最后往往由付款方承担全部不确定性。
已确认要做的功能没有做对,或做出来与确认标准不符,属于承接方返工。判断依据是验收记录和范围附件,而不是需求方口头补充的解释。这类返工不应计入需求方工时。
原范围没有写、原型没有画,需求方后来要求增加或改变,属于需求方返工。承接方可以按新增工时报价,但应先把新增内容写成变更单,说明影响哪些页面和工序,再决定是否继续。
范围附件和原型互相矛盾,或同一句话可以有两种合理解释,这类返工不宜直接推给某一方。更稳妥的处理是先暂停开发,由双方补充一份最小确认,再按补充后的标准判断之前已完成部分是否可用。若已经完成的代码可以保留,只补差异部分,工时就按差异部分计算,而不是把整个模块推倒重来。
这个顺序的实际作用是:把“谁对谁错”的争论转成“哪份材料说了什么”的核对。核对完成后,下一步动作也随之明确——要么承接方免费修正,要么需求方确认新增工时,要么双方先补确认再继续。
单个项目里,上面这套判断可能很顺,因为参与人少、沟通集中。但项目一多,例外就会出现:不同页面的确认颗粒度不一致,有的附件写得细,有的只写了一句;不同开发人员的实现习惯不同,同样的确认标准可能产生不同结果;验收记录如果由不同人填写,对“通过”的理解也会有差异。
因此,按工时计费时不能把某一次顺利判断当成通用规则。更可靠的做法是统一确认模板的最小字段,例如每个功能点都写明页面、触发条件、预期结果和不包含什么。字段统一后,返工归属才有稳定的比对基础。若某个项目已经出现多起同类争议,应优先检查确认模板是否缺少字段,而不是继续在单次工时上讨价还价。
需求方在确认范围时,应把“不包含什么”写清楚,尤其是筛选条件、状态变化、数据来源和异常提示。承接方在报价按工时时,应把返工判断规则写进合同或变更流程,明确哪些情况重新计工时、哪些情况免费修正。双方都可以在每次交付后花几分钟更新验收记录,这一步看似增加工作量,但能减少后续返工归属的争议。
回到假设情境:如果原型只画了类别筛选,需求方新增价格区间和库存状态,承接方应先出变更单,列出新增字段、影响页面和预计工时,需求方确认后再开发。这样,返工归属在动手之前就已经确定,而不是等做完再争论。