如果供应商明确只交付文档、不负责实施,接口设计的核心不是把文档写得更细,而是把“谁在什么条件下把文档变成可运行状态”写成可验收的交接点。可行做法是:把接口拆成输入、转换、验收三段,每段指定责任方、产出物和失败回退;这样即使实施方是内部团队或第三方,也不会因为文档解释权归供应商而卡住。下面先说明这种设计成立的条件,再给出一个会让它失效的反例,最后给出下一步动作。
只有当供应商交付的文档能够被独立验证时,三段式接口才成立。具体条件是:文档中涉及配置、数据结构、依赖版本、环境变量、部署顺序的部分,都能由接收方在不联系原供应商的情况下复现。比如文档写明“缓存层使用某类键值存储,键名规则为 site:{id}:page:{slug},过期时间由内容类型决定”,接收方就能据此搭建并测试;如果只写“按需配置缓存”,接口就没有可验收的输入。
在这种前提下,双方接口应至少包含三类交接点:
一个实际动作是:在合同或交接单中增加“可复现性验收”条款,要求接收方在约定环境内按文档执行一次完整部署。这个动作的结果会直接决定下一步——如果部署失败,失败点就转化为供应商必须补充的文档缺口,而不是双方争论“文档里其实写了”。
假设供应商交付的文档完整描述了系统架构和配置项,但其中若干关键参数来自其内部平台自动生成,文档只写“使用平台默认值”,没有给出默认值的具体范围或生成规则。此时接收方无法独立复现,三段式接口中的“输入”和“验收”同时失效:输入看似齐全,验收却无法执行。
这类反例的识别信号是:文档中的某些步骤必须由供应商人员登录其内部系统才能完成,或者某些配置值只能从供应商的运行时环境中读取。一旦出现这种情况,继续按文档交接只会把问题推迟到上线阶段。正确的调整不是要求供应商“写得更清楚”,而是把接口改为“供应商必须提供可离线执行的参数清单或生成脚本”,否则该部分不纳入交接范围,另行安排实施支持。
需要说明的是,文档交付量、文档页数或某次检查中“文档齐全”的统计,都不能单独证明接口设计正确。文档齐全但不可复现,与文档不全但可复现,是两种不同的问题,前者需要补的是可执行性,后者需要补的是覆盖面。
在明确前提和反例之后,接口设计可以落到一张清单上。清单不追求覆盖所有技术细节,而是让每个交接点都有责任方和验证方式。
这套清单的关键在于,每个步骤都有明确的下一步动作。例如独立部署演练失败后,下一步不是重新阅读文档,而是把失败点提交给供应商,要求其在约定时限内补充可执行内容或提供实施支持。如果供应商既不补充也不支持,接口实际未完成,应作为未交付项处理,而不是默认接收方自行消化。
如果当前正处在供应商只交文档、实施尚未开始的阶段,建议先选取一个最小但完整的模块做可复现验证,例如一个静态页面从文档到上线的全过程。验证时记录三件事:接收方独立完成了哪些步骤、在哪些步骤必须询问供应商、询问后得到的答复是否可写入文档供下次使用。这三项记录会直接决定接口是继续按文档交接,还是需要改为带实施支持的交接模式。
验证通过后,再把同一套方法扩展到数据库、缓存、定时任务等模块。验证不通过时,不要先扩大文档范围,而应先解决可复现性问题,否则文档越多,后续实施阶段的歧义越大。接口设计的终点不是文档交付完成,而是接收方能够在不依赖供应商隐性知识的情况下,独立完成部署、回退和日常变更。