客户不给生产权限,不等于项目只能停住。可执行的交付通常是把“能独立完成的部分”和“必须由客户执行的部分”拆开:你交付可验证的构建产物、配置说明和操作步骤,客户在受控环境里执行上线。判断能否这样安排,关键看两件事:客户是否愿意提供可验证的测试环境,以及是否指定一名能执行命令并反馈结果的对口人。
第一种是合规与责任原因。生产环境涉及真实用户数据、支付或对外服务,客户内部规定外部人员不得直接接触,这类限制通常稳定、可预期,也愿意配合提供替代路径。第二种是信任或内部流程未定。客户自己也说不清谁负责、怕出事故,于是用“不给权限”把决定往后拖。两种情况的应对话术和交付设计完全不同。
区分它们不需要猜测,看三个可观察信号即可:
如果三个信号都指向第二种,继续按原合同推进交付只会积累返工。此时更合理的动作是把当前阶段成果整理成可交接的中间产物,先确认客户内部决策人,再谈后续排期。
不给生产权限时,仍然可以完成的工作包括:页面结构与样式实现、内容录入到测试环境、静态资源构建、部署脚本与配置文件的编写、回滚方案与检查清单。必须由客户执行的部分通常只有三件:把构建产物放到生产目录、执行数据库变更、重启或切换服务。
这里有一个假设例子,用来说明切分方式而非真实项目:假设一个企业站需要上线新栏目,客户不允许外部人员登录服务器。你可以交付一个压缩包,里面包含构建后的静态文件、一份写明目标路径和权限要求的部署说明、一份逐条可勾选的验证清单。客户技术人员按说明复制文件并执行一条重启命令,然后把访问结果和错误日志截图反馈给你。你据此判断是路径问题、缓存问题还是代码问题,再决定是否需要补一次构建。整个循环不依赖你持有生产权限,但依赖客户愿意在约定时间内反馈。
这个动作的关键结果是:如果客户能按说明执行并给出日志,交付可以继续;如果客户连执行和反馈都不愿意安排,那么问题不是权限,而是项目缺少内部责任人,继续投入的边际价值很低。
可执行的上线包不是把操作步骤口头说一遍,而是让客户在无人指导下也能完成。它至少应包含四类内容:
<目标目录>/index.html 这样的占位形式,避免写死客户环境。交付包发出后,下一步不是等,而是约定一个反馈窗口。收到反馈后按现象分类:能通过日志定位的,直接给修正后的文件;无法定位的,要求客户补充信息。这个循环本身就是交付流程,而不是权限缺失下的临时妥协。
如果当前场景是旧服务商或旧系统需要退出,权限往往卡在旧方手里。此时要区分两类资产:一类是迁移后仍然有用的,比如域名解析记录、已发布内容的导出、页面结构与样式文件、可复用的图片素材;另一类是绑定旧环境、迁移成本高于重建的,比如深度定制的后台插件、依赖特定服务器配置的脚本。
判断标准很简单:这份资产离开旧环境后,是否还能被独立验证。能独立打开、独立部署、独立说明用途的,值得争取;必须依赖旧方口头解释才能运转的,通常不值得为它拖延退出。把保留清单和放弃清单写进交接文档,双方对“交付完成”的定义才不会各说各话。
如果客户既不给生产权限,也不给测试环境,还拒绝指定执行人,那么任何“可执行交付”都只是纸面方案。此时合理的做法是暂停开发投入,把已完成部分整理成可交接状态,并书面说明继续推进所需的前置条件。这不是放弃项目,而是把不可控的等待成本从自己身上移走。反过来,只要客户能提供测试环境和一名能执行、能反馈的对口人,即使生产权限始终不开放,交付依然可以按阶段推进并逐项验收。