结论先给:如果供应商明确只交付文档、不碰环境实施,接口设计就不能按“共同上线”的思路做,而应把接口拆成三份可独立验收的产物——配置契约、数据契约、变更契约。每份都规定谁生成、谁消费、以什么形式交接。这样你拿到文档后能自行实施,或交给第三方实施时不必回头找原供应商补口。但如果你的团队没有任何人能读懂并改写配置,这个结论失效,此时应优先谈实施陪跑而非接口设计。
接口设计的前提是接收方具备最低实施能力。可用一个简单测试区分:让团队里负责落地的人,在不求助供应商的情况下,把文档中的一段示例配置改成一个新值并说明影响面。能做到,说明双方可以走纯文档接口;做不到,说明文档再完整也会卡在“读懂”这一步。
这一步的产出直接决定后面契约的粒度。把能力判断写进交接清单,比事后争论“文档够不够”更省事。
只交文档的供应商最容易在这里留坑:文档里混着示例值和真实值,接收方分不清哪些必须替换。配置契约要求把与具体环境绑定的项全部外置,例如域名、路径前缀、证书位置、缓存目录。文档只描述“这个键控制什么”,值由接收方在实施时填写。
一个假设例子:文档写 cache_dir=/var/site/cache。接收方环境没有该目录写入权限。若配置契约里注明该键属于“必须替换项”并给出取值范围,实施者会直接改路径;若没有标注,实施者可能误以为这是固定要求,从而在权限问题上反复排查。动作不同,下一步排查方向完全不同。
建站常涉及内容、栏目、用户数据的迁移。供应商只给文档时,数据接口要写清三件事:字段含义、必填与可空、单条失败时是跳过还是中止。缺少第三项,实施方遇到一条脏数据就可能停住整批导入。
建议要求文档附带一份最小样例数据,字段与真实结构一致但内容为虚构。接收方先用样例跑通导入,再换真实数据。这个动作的结果是:如果样例能过而真实数据失败,问题基本在数据清洗,而非接口定义,排查范围立刻收窄。
纯文档交付最隐蔽的风险是版本漂移。供应商更新了模板或字段,接收方手里的文档还是旧的。变更契约要写明:更新以什么形式发出、接收方在多长时间内确认、旧版本是否继续可用。
这里有一个反例会让前述结论失效:如果供应商的文档本身没有版本号,也没有变更记录,那么所谓“变更契约”无法执行。此时不要强行设计接口,而应先把“每次交付带版本标识”作为新的前置条件写进沟通,否则后续所有接口约定都建立在流沙上。
把上述三类契约整理成一页交接清单,让接收方按清单逐项确认“有/无/不适用”。走查结束后会出现两种结果:清单基本齐全,按纯文档接口推进即可;清单缺口集中在配置或数据字段上,说明文档不足以支撑独立实施,应回头谈一次有限度的实施陪跑,而不是继续加厚文档。这个动作的价值在于,它用一次低成本走查替代了上线后才发现接口缺失的高成本返工。