先给结论:文档交付型供应商仍然可以合作,但接口设计要从“替你做完”改成“让你能独立跑起来”。具体做法是要求对方交付可执行的分析规范、字段级映射和验收样例,你方保留数据接入、任务调度和结果发布三项控制权;如果对方连这三项都不愿配合,退出比继续磨合更划算。
同样是不实施,动机不同,处理方式完全不同。
区分证据不看沟通态度,看文档里有没有可核对的中间产物:字段级映射表、过滤条件、缺失值处理规则、样例输入与预期输出。缺少这些,先按责任转移处理。
不要笼统约定“提供统计分析服务”,而是把双方接口拆成数据层、逻辑层和结果层,每层写明谁负责、交付什么、怎么验收。
约定字段名、类型、时间粒度、时区、去重键和可接受的缺失比例。动作示例:要求对方给出一个最小样例数据集,包含正常记录和至少两类异常记录,你方用同一套接入脚本跑通。如果样例跑不通,说明字段定义有歧义,此时先改文档再谈排期,不要先接生产数据。
指标定义要写成可复算的形式,例如“活跃用户 = 统计周期内至少一次有效行为事件的去重用户数,排除内部测试账号”。让对方提供一段可运行的伪代码或查询片段,你方在样例数据上复现,比对结果是否一致。结果不一致时,先定位是口径差异还是实现差异,再决定是否进入下一层。
约定输出结构、更新频率、延迟容忍度和异常标记方式。假设对方文档写的是“每日更新”,但你的数据源本身有两天延迟,这就是接口冲突,必须在合同或工单里写清延迟归属,而不是等上线后互相归因。
不要凭一次会议结论做判断,用下面这组检查项收集证据,再对应取舍。
如果前两项通过、后两项缺失,属于可改写:补充异常规则和版本管理后继续合作。如果前两项就失败,且对方不愿补样例和伪代码,属于应退出:此时继续投入只会让你方承担全部实现风险,而对方仍按文档交付计费。
假设你方用同一份原始数据做渠道效果分析,供应商文档只写“按渠道统计转化率”,没有定义归因窗口。你方按点击后 7 天归因实现,对方样例按 1 天归因,两边结果方向相反。这个反转不是数据错误,而是接口缺失导致的定义漂移。动作是:要求对方补充归因窗口、去重规则和跨设备处理方式,并在样例数据上重新对齐。对齐后如果结论仍相反,才需要检查数据质量;如果对齐后结论一致,说明问题出在接口文档,而不是统计方法。
第一,建立字段级对照表,每个字段标注来源、责任方和验收方式。第二,约定变更流程:口径或字段变更必须提前通知,并附带影响范围说明。第三,设置一次联合复算,用同一份样例数据各自跑一遍,结果差异超过约定阈值时暂停上线。这三个动作的结果直接决定下一步:复算通过就进入小流量验证,不通过就回到文档修订,而不是直接扩大数据范围。
保留、改写还是退出,取决于文档能否支撑你方独立复现,而不是取决于供应商是否愿意“多做一些”。接口设计的终点是让你方在对方不实施的情况下,仍然能核对、复算和发布结果。