企业只给测试环境或只给只读账号时,交付仍可推进,前提是把工作拆成“不依赖生产权限”和“必须依赖生产权限”两类,并让客户书面确认后者由谁在什么时间执行。若客户既不开放生产权限,也拒绝在测试环境之外做任何配置或数据核对,那么可执行范围会收缩到代码、配置模板和操作说明,验收也只能针对这些产物,不能声称线上功能已经完成。
很多交付被卡住,不是因为权限不足,而是因为把“需要看线上结果”和“需要动线上配置”混在一起。可以按动作性质分三层:
把这三层写进交付清单后,客户会更容易判断哪些权限可以临时开放、哪些操作愿意自己执行。实际动作是:在开工前发一份逐项标注“所需权限”的任务表,让客户对每一行选择“开放权限”“客户自己执行”“暂不执行”。这个动作的结果直接决定后续排期——选择“客户自己执行”的项要额外预留交接和复核时间,选择“暂不执行”的项要从本期验收范围中移除,而不是挂在待办里默认完成。
当生产权限确实拿不到,可执行的替代方案是把“操作”转化为“可复制的指令”。例如需要配置一条重定向,不必登录生产后台,而是交付一份包含源路径、目标路径、状态码的对照表,并注明在哪种服务器或CMS中如何录入。假设客户使用常见的CMS,交付物可以是:
<IfModule mod_rewrite.c> 这类可读片段,但不绑定具体服务器版本。这里要注明假设:上述做法成立的条件是客户愿意安排内部人员执行,并且执行人能提供执行后的截图或状态说明。若客户既不给权限,也不安排人执行,也没有测试环境可供验证,那么交付只能停留在文档层面,不能进入“已配置”状态。这是会使前面结论失效的反例。
没有生产权限时,验收对象必须换成看得见、可复核的东西。可用的验收依据包括:
这些依据能证明“交付物已准备好”,不能证明“线上已经生效”。如果客户拿测试环境的正常渲染去推断线上一定正常,这个推断不成立,因为线上可能缺少相同配置、缓存策略不同或权限设置不同。反过来,线上某项统计归零也不能单独证明是权限缺失造成的,还可能是代码未部署、统计脚本未加载或访问本身没有发生。把现象和原因分开记录,才能避免用单一指标下结论。
客户自己执行生产操作时,最容易出问题的不是执行本身,而是执行后没有回传可核对的信息。可以在交付说明里约定一个最小回传格式:执行了哪一项、在哪个环境、执行时间、执行后看到的结果、是否出现报错。收到回传后,只复核与该项直接相关的部分,不扩展到未约定的范围。
实际动作是:把回传信息与原始对照表逐行比对,确认该项可以从“待客户执行”改为“已执行待观察”或“已确认”。这个动作影响下一步——只有确认已执行且结果符合预期,才能把该项从风险清单中移除;若回传缺失或结果不符,该项继续保持未完成状态,并作为下一轮沟通的输入,而不是靠推测标记为完成。
如果客户短期内无法开放生产权限,合理的下一步不是反复催权限,而是把本期交付范围正式缩小到不依赖生产权限的部分,并写明哪些项转为客户自执行、哪些项推迟。若客户愿意开放只读权限,可以先把线上现状核对做完,为后续写入操作准备更准确的对照表。若客户既不开放权限也不安排执行,则应把交付定义为文档与模板交付,并据此调整验收和后续排期,避免把无法验证的事项写成已完成。