供货单 vs 送货单:一对“强耦合、严分工”的单据设计——从履约场景看B端单据解耦之道
生鲜与集采系统的单据设计常陷入'一单到底'的困局,导致前端臃肿与后端混乱。本文揭示供货单与送货单分层解耦的黄金法则:前者锁定商家发货计划,后者专注物流执行路径,通过触发式生成、数据共享、状态联动的精密耦合机制,实现B端履约系统的高效运转与灵活迭代。这套架构正在重塑仓储物流领域的产品设计范式。

一、开篇:为什么要把“供货”和“送货”拆成两张单?
在生鲜、农产品、集采类履约系统里,供货单与送货单常常被混为一谈:一张单从下单走到装车,前端越做越臃肿、后端状态互相污染、业务变更寸步难行。
而实际系统设计中,我们明确把它拆成两张完全独立的单据,但又通过严谨的交叉耦合机制保持数据一致、流程闭环。
一句话结论:
供货单管“商家要发什么”,送货单管“货要送到哪”;二者强关联、不混用、可独立演进,是B端履约单据的健康架构。
二、先定边界:供货单与送货单的本质差异
1. 供货单:业务源头·订单层单据
定位:商家发货的唯一业务依据
核心维度:商家维度 + 日期 + SKU + 发货地 + 可发货件数
承载:订单、SKU、发货地、可发货数量、结算数据
生命周期:商家发货→ 货到平台【商家对平台履约】
操作主体:商家、买手
2. 送货单:物流执行·任务层单据
定位:发货后的执行载体
核心维度:在供货单基础上 + 客户收货地点
承载:批次号、状态流转、司机绑定、品检结果、打印、装车、撤销
生命周期:货到平台 → 已送达【平台对用户履约】
操作主体:品控、司机
底线:商家发货数据归供货单,执行路由归送货单。
三、核心:供货单 ↔ 送货单 交叉耦合逻辑
两张单完全独立,但必须精准耦合,否则流程断裂、数据不一致。
1. 生成耦合:触发式创建(最核心)
- 商家在供货单勾选SKU、调整件数 → 提交发货
- 系统根据商家发货的数据生成送货单,分配唯一批次号
- 一份供货单可拆到多批次送货,批次是供货单的拆分再聚合
价值:业务源头不变,执行灵活拆分。
2. 数据耦合:共享但不越界
- 送货单从供货单读取:日期、SKU、发货地、发货件数
- 送货单补充:继承订单,客户收货目的地,形成完整配送信息
- 品控驳回时:送货单把驳回数量回写给供货单,恢复待发货量
价值:执行结果反向修正业务库存,保证账实一致。
3. 状态耦合:执行流驱动业务流
送货单状态流水线:
商家发货 → 待品检 → 待打印 → 待装车 → 已装车 → 运送中 → 已送达
每一步状态变更,都会同步更新供货单的发货进度与履约状态。
价值:前端只展示业务状态,后端执行状态不污染业务视图。

1.流程分层:从订单到履约的完整链路
从用户下单开始,整个履约流程被清晰拆为业务计划层与物流执行层:
订单下单 → 待发货:平台按商家维度对订单进行聚合,将分散的用户订单收拢为商家视角的待发货任务,为后续供货单生成奠定基础。
待发货 → 商家发货:商家在供货单维度完成履约计划确认,只聚焦 “要发什么、发多少”,不涉及终端用户的配送细节。
商家发货 → 送货单生成:系统自动将供货单的业务数据同步,并扩展出用户收货地址等配送信息,生成面向物流执行的送货单。
2. 单据视角:供货单 vs 送货单的核心字段差异
从图中可以直观看到两张单据的信息边界:
- 供货单(商家视角):核心字段围绕商家履约展开,包括「商家发货 SKU」「商家发货归属区域」「商家发货件数」「商家发货波次」,完全不包含用户收货地址,只回答 “商家要向平台交付什么”。
- 送货单(平台 / 用户视角):在继承供货单核心业务数据的基础上,新增「用户到货地址」,补充为「商家到货 SKU」「商家到货归属区域」「商家到货件数」「物流送货波次」,完整回答 “这批货要送到哪个用户手上”。
3.耦合关系:业务与执行的精准联动
最下方的「供货单 * 送货单耦合」模块,清晰展示了两张单据的交叉关联:
- 供货单的SKU、归属区域、件数、波次等业务数据,是送货单的基础数据源;
- 送货单在商家供货单的批次上新增的用户到货地址,是连接商家履约与终端用户的关键桥梁;
- 所有字段最终形成闭环:商家在供货单确认的发货计划,通过送货单落地为可执行的配送任务,同时执行结果又能回写供货单,保证业务数据与执行数据的一致性。
四、一张表看懂:耦合但不混淆

五、架构启示:B端单据为什么一定要“分层解耦”
很多产品踩坑,就是把计划和执行塞在一张单里:
- 加一个物流状态,业务逻辑全要改
- 品检驳回要动订单数据,风险极高
- 买手与司机权限无法隔离
- 灰度发布 impossible
而供货单+送货单的设计,带来三大收益:
- 业务稳定:订单规则不随物流变动
- 执行灵活:支持部分发、批次发、转发、撤销、驳回
- 这就是B端经典架构:领域分离 + 单向依赖 + 状态闭环 + 数据同源
六、总结:记住这三句就够了
- 供货单是“因”,送货单是“果”
- 供货单管“商家发什么、发多少”,送货单管“送到哪、怎么送”
- 耦合是为了一致,解耦是为了演进
如果你正在做仓储、履约、生鲜、集采系统,遇到单据混乱、状态爆炸、权限不清,不妨先拆一层:把业务单和执行单分开,你的迭代速度、系统稳定性、用户体验,都会立刻上一个台阶。
本文由 @Totoro畅 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Pexels,基于 CC0 协议
- 目前还没评论,等你发挥!

起点课堂会员权益




