新零售SaaS架构:订单履约系统架构设计(万字图文总结)
什么是订单履约系统?
订单履约系统用来管理从接收客户订单到将商品送达客户手中的全过程。
它连接了上游交易(客户在销售平台下单环)和下游仓储配送(如库存管理、物流配送),确保信息流顺畅、操作协同,提升整个供应链的效率和响应速度。
系统定位

订单履约系统的目标是让订单处理更快、更清晰,提高客户体验。
履约过程需要快速处理订单,同时为客户提供订单、物流信息的实时更新。保证每个订单都能准时、正确地完成,不仅要提高库存和物流配送的效率,降低成本,还要提升客户对履约服务的满意度。
业务流程

订单履约过程是一系列步骤,从客户下单到商品交给客户,包含很多步骤,例如客户在销售平台下订单,订单履约系统接收订单,仓库或门店备货和发货,配送小哥交付给客户。每一步都必须顺利进行,确保整个过程高效。
履约流程的关键是协同顺畅,只有各系统相互配合,订单能从头到尾顺利完成各个环节,才能确保在客户约定的时间内完成履约。任何一个环节出问题都会导致履约时间延长,降低客户满意度。
- 接收订单:当客户在销售平台下单后,第一步是收订单。这个步骤需要收集和确认订单信息,包括销售店铺信息、客户信息、商品信息、收发货地址、交付信息、支付信息等。在这个阶段,系统会检查订单是否有效,确保所有的订单信息都是完整的。
- 订单拆单:此环节的目标是把复杂的订单分解成更好管理的子订单。通常根据订单类型、商品类型、存放位置、履约要求等因素来分解。比如,需要从不同地方发货的商品、预售商品。拆分子订单可以提高我们处理的速度,减少物流的费用,每个小订单都可以根据最佳的履约流程来处理。
- 派单:该步骤会基于物流配送的因素进行决策,比如物流公司对包裹的重量和体积有限制、客户需分批送达或特定时间送达,在派单环节,可能会进一步拆单,分配给合适的仓库或门店。
- 预占库存:该环节可以防止在处理订单时,库存被其他订单占用,防止超卖情况发生,是库存管理的关键环节,确保了库存的准确性。
- 改派:在履约过程中,可能会因为库存不足、配送地址问题或其他突发情况,需要把订单转给另一个仓库或门店。改派环节允许订单根据实际情况进行调整。这个过程有助于更好地利用资源,确保订单能快速准确地完成。
- 拣货:指根据订单信息从库存中挑选出下单商品的过程。这个环节要求高度的准确性和效率,拣选错误,会直接影响客户满意度。仓库工作人员通常会使用手持终端设备,确保按照订单作业的准确性。
- 打包:拣货后商品会被妥善包装,保证运输安全。包装时会贴上运输标签和配送信息,确保商品能顺利送达。
- 出库:打包好的商品被快递员或配送小哥揽收后,会被记录为已出库,这就意味着商品已经离开门店/仓库。
- 物流配送:商品出库后,将通过快递或同城配送方式进行运送。这一阶段,物流公司或配送公司负责将商品运送到客户指定的收货地址。
- 确认收货:当客户收到并确认商品没有问题后,订单就算完成了。客户通常在网上确认收货。这个环节是记录服务时间、收集客户反馈的时机。
核心概念模型

在整个订单履约过程中,订单是起始,子订单是订单拆分的结果,用于处理更细粒度的履约逻辑。
发货单则是具体的执行单据,指导商品从仓库到客户手中的具体操作任务。
这三个模型层层递进,确保整个履约链条的高效管理。
- 订单:客户提交购物请求后,生成的买卖合同,通常包含客户信息、下单日期、所购买的商品或服务明细、价格、数量、收货地址以及支付方式等详细信息。
- 子订单:为了更高效地进行履约,大订单可能会被拆分成多个子订单,子订单会根据商品类型、配送地址、仓库位置或供应商等因素进行拆分。
- 发货单:根据子订单生成,指导完成订单的具体履约任务,如商品的拣选、包装、出库、配送等。
订单拆分场景
单门店履约场景
在连锁模式下,系统会自动根据用户的收货地址匹配最近的门店。
如果匹配到某个门店,且门店库存充足,能完成履约服务。在这种情况下,不会对订单进行拆分,直接分配给门店进行发货。

多仓库履约场景
有些商家有多个仓库,不同的商品存放在不同的门店或仓库里。
当用户下单时,如果订单内的商品在不同的仓库,就需要拆分订单,把拆分后的子订单匹配到对应的仓库中,然后根据商品的数量进行备货和出库。

按订单类型、商品类型拆分
由于订单和商品类型的差异,我们需要将其拆分成不同类型的子订单。
商品中包括跨境商品、分销商品等,我们会根据不同的商品类型自动拆分。
对于生鲜水果、冷链食品以及其他易碎物品,由于它们对快递的保护性和及时性有较高的要求,我们需要单独包装并发货。如果订单中包含这类商品,会对订单进行拆分处理。

按物流场景拆分
物流公司通常对包裹的重量和体积有限制。如果订单中的商品超过这些限制,就需要将订单拆分为多个发货单来发货。
从成本的角度考虑,在某些情况下,将大量商品分成多个发货单可能会比一个大包裹发货更省钱。
客户可能会有特殊的物流要求,如分批送达或特定时间送达,需要将订单拆分为多个发货单。例如预售商品与其他商品一起下单,需要等到预售商品到货后再发货。

系统的核心能力
通过分析订单履约的全流程和各个业务活动,我们可以梳理出订单履约流程所需的核心业务能力,分别为履约服务表达、履约调度和物流配送。

- 履约服务表达:负责清楚、准确地向客户传递履约服务的能力,包括订单处理时间、配送时间、费用计算和服务范围。确保客户下单时有明确的期待,并在整个订单过程中保持透明和一致。
- 履约调度:涉及订单的接收、处理、门店/仓库分配。这一能力确保订单根据预定的规则和优先级,有效地分配给门店/仓库。提升内部操作的效率,减少履约时间,同时最大限度地减少延期情况。
- 物流配送:确保下单商品从门店/仓库准时地运送到客户手中,这包括与第三方运力服务商的合作、配送管理、配送路径的优化以及送货执行。这部分能力由配送系统提供。
应用架构设计

应用层定义软件的应用功能,它负责接收用户请求,协调领域层能力来执行任务,并将结果返回给用户,核心模块包括:
- C端履约服务
- 预计送达时间:为消费者提供订单的预计处理时间、配送时效等,通常基于订单处理时间、配送情况、配送距离等多种因素计算。
- 实时订单状态查询:允许消费者实时查看他们的订单所处阶段。包括订单待接单、拣货、打包、已发货、配送中等状态。
- 配送轨迹跟踪:提供订单从出库到最终送达的完整路径跟踪,消费者可以查看订单的当前位置和过往的配送节点,了解配送进度。
- 配送信息修改:在订单还未最终发出之前,消费者可能需要更改配送信息,如地址或配送时间。
- 配送费用明细:显示消费者的订单配送费用的详细分解,包括配送费、包装费、服务费等。
- 确认收货:消费者可以通过系统确认收货,是完成订单流程的最后一步。
- B端管理模块:
- 订单派单:接收来自销售平台的订单,并按照既定规则自动分配给对应的门店/仓库。
- 订单管理:全面管理订单的生命周期,包括订单的确认、处理、状态跟踪、修改和取消等管理操作。
- 拣货管理:管理仓库内的拣货操作,确保商品被准确无误地从货架上拣选出来,并进行打包和发货。
- 发货管理:全面管理发货单的生命周期,根据订单的地址、商品大小、重量和客户选择的履约方式,匹配合适的发货方式,并对发货流程进行跟踪。
- 逆向履约:当客户不满意或需退换商品时,逆向履约模块负责处理退货请求,并管理退货退款和换货流程。
领域层是业务逻辑的核心,专注于表示业务概念、业务状态流转和业务规则,沉淀可复用的服务能力,模块包括:
- 履约服务表达:负责向客户提供履约服务的明确信息。包括预计的送货时间、费用计算、服务选项(如定时达、次日达等)以及履约可达性要求。
- 订单履约调度:提供订单履约调度的核心能力,确保订单被高效地处理和执行。它涉及订单从接收到最终准备配送的所有调度和处理过程,包括订单拆分、分配、拣货、包装、发货等。
订单履约系统与其他系统的依赖关系:
- 商品管理系统:提供的商品信息,包括价格、规格、描述、分类、SKU等。
- 中央库存系统:需要访问中央库存系统来确认下单商品的实物库存情况,包括库存数量和库存位置。
- 配送系统:一旦商品打包完成,将依赖配送系统来处理商品的实际配送工作,包括配送安排、跟踪和状态更新。配送系统提供的配送状态和时间信息,对于订单履约系统中订单状态的更新至关重要。
- 基础数据系统:提供组织机构信息、用户权限信息、服务商信息等基础数据。这些标准化的数据确保各个系统数据的一致性
- 数据分析系统:订单履约系统将产生大量数据,包括订单数据、履约过程数据、配送时效数据等,这些数据需传输到数据分析系统。数据分析系统基于采集到的数据,提供分析与洞察,帮助优化订单履约流程,提升客户满意度,并提供预测分析,来辅助库存管理和需求预测。
写在最后
订单履约系统负责管理从接收客户订单到将商品送达客户手中的全过程。它连接上游交易和下游仓储配送,以提高供应链效率。
该系统的核心业务能力包括履约服务表达、履约调度和物流配送。
根据物流和商品类型等因素,订单会被拆分成子订单。这样做可以提高处理速度并减少物流费用。
在订单履约系统的应用架构中,应用层定义了软件的应用功能,包括C端履约服务和B端管理模块。领域层是业务逻辑的核心,专注于表示业务概念、业务状态流转和业务规则。
订单履约系统与商品管理系统、中央库存系统、配送系统、基础数据系统和数据分析系统等其他系统存在依赖关系。各系统通过相互协作来完成订单履约流程。

新零售SaaS架构:订单履约系统架构设计(万字图文总结)的更多相关文章
- 新零售SaaS架构:商品系统架构设计
SaaS产品就像一座冰山,冰山以上的部分是功能.数据(可见部分).用户界面,冰山以下是系统架构.完整的数据模型.开放体系.非功能性需求(扩展性.可维护性.性能.安全等). 短期内想要快速上线产品,可能 ...
- 新零售SaaS架构:中央库存系统架构设计
近年来,越来越多的零售企业大力发展全渠道业务.在销售额增长上,通过线上的小程序.直播.平台渠道等方式,拓展流量变现渠道.在会员增长方面,通过多样的互动方式,全渠道触达消费者,扩大会员规模.而全渠道的库 ...
- 新零售SaaS架构:多租户系统架构设计
什么是多租户? 多租户是SaaS领域的特有产物,在SaaS服务中,租户是指使用SaaS系统的客户,租户不同于用户,例如,B端SaaS产品,用户可能是某个组织下的员工,但整个企业组织是SaaS系统的租户 ...
- 新零售SaaS架构:组织管理的底层逻辑与架构设计
想要深入理解零售企业的组织架构,是非常困难的一件事.因为大部分人都没有实际经营过一家零售企业,更没有参与设计过零售企业的组织架构. 调研商家时,我们只能了解商家组织架构的现状,我们也很难和企业高层直接 ...
- 向架构师进军--->系统架构设计基础知识
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在讲解系统架构设计之前,有必要补充一下架构相关的概念,因此本博文主要讲述架构.架构师 ...
- Kubernetes的系统架构与设计理念
Kubernetes与云原生应用简介 随着Docker技术的发展和广泛流行,云原生应用和容器调度管理系统也成为IT领域大热的词汇.事实上,云原生应用的思想,在Docker技术火爆之前,已经由云计算技术 ...
- 【PaPaPa】系统架构搭建浅析 - 人人可以搭架构
声明 [PaPaPa]这个项目是以技术分享与研究为目的而做的,并非商业项目,所以更多的是提供一种思路,请勿直接在项目中使用. 上一篇隐藏开源项目地址实属无奈,为了寻找一起做这件事的同伴不得已刷了一天推 ...
- HBase 系统架构及数据结构
一.基本概念 2.1 Row Key (行键) 2.2 Column Family(列族) 2.3 Column Qualifier (列限定符) 2.4 Column ...
- HBase 学习之路(二)—— HBase系统架构及数据结构
一.基本概念 一个典型的Hbase Table 表如下: 1.1 Row Key (行键) Row Key是用来检索记录的主键.想要访问HBase Table中的数据,只有以下三种方式: 通过指定的R ...
- HBase 系列(二)—— HBase 系统架构及数据结构
一.基本概念 一个典型的 Hbase Table 表如下: 1.1 Row Key (行键) Row Key 是用来检索记录的主键.想要访问 HBase Table 中的数据,只有以下三种方式: 通过 ...
随机推荐
- ios马甲包过审
说明:这篇文章写的比较早了,大概是2021年上半年写的,一直放在草稿箱,目前这些方法是否被屏蔽有待验证. App Store审核机制 机器审核 人工审核 人工审核大概是玩15分钟的样子,同时有上百审核 ...
- 4.1 Windows驱动开发:内核中进程与句柄互转
在内核开发中,经常需要进行进程和句柄之间的互相转换.进程通常由一个唯一的进程标识符(PID)来标识,而句柄是指对内核对象的引用.在Windows内核中,EProcess结构表示一个进程,而HANDLE ...
- Zookeeper-ZKFC的原理和功能
一.前言 HADOOP2 HA架构引入了ZKFC.Journalnode组件,本篇文章主要介绍ZKFC的功能和原理.HA架构支持两种切换方式: 手动切换: 通过命令实现主备之间的切换,可以用HDFS ...
- 机器学习基础06DAY
模型检验-交叉验证 一般在进行模型的测试时,我们会将数据分为训练集和测试集.在给定的样本空间中,拿出大部分样本作为训练集来训练模型,剩余的小部分样本使用刚建立的模型进行预测. 训练集与测试集 训练集与 ...
- ES6学习 第七章 函数的扩展
前言 本章介绍函数的扩展.有些不常用的知识了解即可. 本章原文链接:函数的扩展. 函数参数的默认值 ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面. 当函数形参没有被赋值时,才会将默认值 ...
- IPFS的配置记录
IPFS 分布式文件系统, 原理类似于bt, 通过文件分块, 每个块对应CID以及各级Hash做存储和校验, 通过DHT(Distributed Hash Table)做查找和路由. IPFS文档 h ...
- Mybatis的缓存过期机制和RedisCache
MyBatis的缓存过期机制, flushInterval参数 在实际测试中, 发现Redis中的缓存数据TTL为-1, 在Hash中的key也无过期时间信息, 怀疑RedisCache的实现是否能正 ...
- 如何获取oracle dbid
1.查询v$database获得 由于DBID在控制文件和数据文件中都存在记录,所以如果能够mount数据库就可以查询v$database视图获得. SQL> alter database m ...
- Spring源码之bean的加载
目录 1. FactoryBean 的使用 2. 缓存中获取单例 bean: 3. 从 bean 实例获取对象, 4. 获取单例 bean (从缓存加载失败): 5. 创建 bean (createB ...
- 实操开源版全栈测试工具RunnerGo安装(三)MacOS安装
以Sonoma 14.1.2系统为例 视频教程:https://www.bilibili.com/video/BV1fG411e7h2/?spm_id_from=333.999.0.0 1.下载并安装 ...