先给结论:把“文档”当成待验证的输入,而不是待接收的成果。你需要做的是从文档里抽出可执行动作,为每个动作定义输入、输出、责任人和验收证据,然后与供应商确认哪些动作由谁执行。接口设计的核心不是写一份更厚的合同,而是把“谁在什么条件下触发什么动作、产生什么可核对的输出”固定下来。
供应商交付的文档通常有三种形态,对接口设计的要求完全不同。第一种是配置说明,比如服务器参数、域名解析记录、CDN规则、数据库连接方式。这类文档可以直接转成操作清单,接口是“你按文档操作,供应商提供参数和答疑”。第二种是设计说明,比如栏目结构、页面模板逻辑、URL规则、跳转关系。这类文档需要你判断是否与现有站点结构兼容,接口是“供应商给规则,你决定是否采纳以及如何映射到现有页面”。第三种是流程说明,比如内容审核流程、发布流程、权限分配。这类文档最容易出现“写了但没人执行”的情况,接口必须落到具体角色和触发条件上。
判断方法很简单:拿文档里的每一条描述,问一句“这条描述对应一个可执行动作吗”。如果对应,就进入接口设计;如果只是背景介绍或目标描述,就暂时放在一边,不要把它当成交付项。
假设你手里有一份供应商提供的“网站上线配置说明”,里面写了服务器环境、数据库版本、伪静态规则和后台入口。不要直接签收,而是逐条转成下面这种结构:
这里的关键取舍是:如果供应商不实施,接口就只保留“提供输入”和“确认输出”两段,中间的动作由你方执行。这样做的好处是责任边界清晰,坏处是你需要具备相应的执行能力。如果供应商愿意实施,接口就变成“你提供环境访问条件,供应商执行并提交输出证据”。两种模式不能混着写,否则会出现“文档说已配置,实际没人动”的真空地带。
把文档转成接口后,下一步是形成一份双方确认的对照表。表里不需要复杂字段,但必须包含以下内容:
假设一个短例子:文档里写“配置伪静态规则以支持静态化URL”。转成接口后,执行方写“我方运维”,前置条件写“服务器已安装Web服务且允许重写”,输出证据写“访问一个示例页面返回200且URL不含查询参数”,不执行的影响写“后续栏目页无法按文档规则访问”。这个例子只用于说明转换方法,不代表任何真实项目结果。
已有实际业务的情况下,最容易出问题的是前提变化。比如原来服务器由供应商管理,现在改为你方自管;或者原来内容由供应商录入,现在改为你方编辑。前提一变,原来文档里的动作执行方就可能失效。
判断是否需要改接口的条件很具体:如果某个动作的输入来源变了,或者执行动作所需权限的持有方变了,接口就必须重新确认。例如,文档要求供应商登录后台配置栏目,但后台账号已经收归你方管理,供应商不再持有登录权限,那么这条接口就不能继续写“供应商执行”,而要改成“供应商提供栏目配置规则,我方执行并反馈结果”。
反过来,如果只是文档里某个描述措辞变化,但输入、动作、输出三要素都没变,就不需要重做接口。不要因为文档版本号变了就全盘推翻,那样只会增加沟通成本。
供应商只交文档不实施时,验收对象不是文档本身,而是接口对照表里每一条的输出证据。动作是“我方执行”的,验收时检查你是否拿到了供应商提供的输入,以及你的执行结果是否满足文档描述。动作是“供应商执行”的,验收时检查对方是否提交了可复核的证据。
如果某条输出证据无法获取,比如供应商说“配置已做但无法截图”,那这条接口就处于未完成状态。你可以要求对方提供替代证据,例如配置文件内容、日志时间戳、可访问的测试入口。如果对方始终无法提供任何可复核证据,那么这条动作实际上没有闭环,后续依赖它的环节需要暂停或调整方案。
最后一步是把接口对照表作为后续变更的基线。任何一方提出调整时,先回到表里找到对应条目,确认输入、动作、输出哪一项变了,再决定是否更新接口。这样文档就不会停留在“已交付但没人用”的状态,而是变成双方都能执行的依据。