结论先说:如果企业只开放测试环境、代码仓库只读或模板后台受限,交付仍可执行,但必须把“上线操作”从建站方的责任清单中移出,改为“交付物+操作手册+验收脚本”的组合。此时建站方应能独立完成代码、样式、内容结构、数据迁移脚本和部署说明;企业方保留生产环境的执行动作。使这个结论失效的反例是:企业既不给生产权限,又要求建站方保证上线后首屏速度、收录状态或表单到达率——这些指标依赖生产环境配置和日志,没有执行权就无法验证,继续签约只会把不可控风险转成验收纠纷。
权限不给,通常有两种性质,处理方式完全不同。第一种是安全合规导致的生产环境隔离,企业有运维团队负责发布,建站方交付到预发布环境为止。第二种是企业内部没人能执行发布,只是想借“不给权限”把上线后的维护也推给建站方。区分方法很直接:问一句“发布窗口由谁操作、出问题谁回滚”。如果对方能指定发布人和回滚负责人,属于第一种,交付可以正常安排;如果回答含糊,说明后续会反复找你远程指挥,应在合同里把发布支持写成按次计费,而不是包含在交付内。
生产权限缺失时,可验证的交付物应当落在建站方完全可控的范围内:
这四部分做完,即使生产环境由企业自己发布,也能判断交付是否完整。反过来,如果建站方只交一个压缩包和一句“传到服务器就行”,那不叫交付,叫甩手。
有生产权限时,验收可以看线上真实表现;没有生产权限时,验收必须换成过程证据。可执行的做法是:在预发布环境冻结一个版本,双方用同一份检查表逐项确认,包括页面渲染、链接可达、表单提交到测试接收端、移动端布局、错误页处理。确认后由企业发布,发布后只做一次回归检查,确认预发布与生产表现一致。如果回归发现差异,先查环境配置而不是改代码,因为大多数差异来自缓存、伪静态或数据库连接,而不是模板本身。
这里有一个容易踩的坑:企业发布后说“和测试的不一样”,但拿不出具体页面和现象。此时建站方应要求提供带时间戳的访问记录或截图,否则无法定位。这不是推诿,而是没有生产权限时唯一能缩小范围的方法。
假设某企业要求建站方交付一个带表单的展示站,但不给生产权限。方式A:建站方交付源码、部署说明和测试环境验收记录,企业运维按说明发布,发布后双方做一次回归。方式B:建站方口头指导企业发布,发布后表单不工作,双方互相猜测。方式A里,问题会落在“测试接收端正常、生产邮件服务未配置”这个具体环节,责任清晰;方式B里,建站方无法证明代码没问题,企业也无法证明配置没问题,最后只能靠反复试。两种方式的建站工作量接近,但争议成本差距很大。选择方式A的前提是企业愿意指定发布人和回滚负责人;如果企业连这个都定不下来,说明项目本身还不具备上线条件,应先解决内部责任归属再谈交付。
在报价或签约前,向企业要一份简短的发布责任确认,写清三件事:谁执行发布、谁负责回滚、发布后多长时间内完成回归检查。拿到这份确认,交付范围就能按“建站方交付到预发布、企业执行上线”来写,验收标准也随之明确。拿不到,就把生产发布支持单独列为可选服务并注明前提条件,不要默认包含在固定报价里。这一步做完,后续所有关于“能不能上线”“上线后算不算完成”的争论都会少很多,因为边界在动手之前就已经定下了。