新零售SaaS架构:订单履约系统架构设计
什么是订单履约系统?
订单履约系统用来管理从接收客户订单到将商品送达客户手中的全过程。
它连接了上游交易(客户在销售平台下单环)和下游仓储配送(如库存管理、物流配送),确保信息流顺畅、操作协同,提升整个供应链的效率和响应速度。
系统定位
订单履约系统的目标是让订单处理更快、更清晰,提高客户体验。
履约过程需要快速处理订单,同时为客户提供订单、物流信息的实时更新。保证每个订单都能准时、正确地完成,不仅要提高库存和物流配送的效率,降低成本,还要提升客户对履约服务的满意度。
业务流程
订单履约过程是一系列步骤,从客户下单到商品交给客户,包含很多步骤,例如客户在销售平台下订单,订单履约系统接收订单,仓库或门店备货和发货,配送小哥交付给客户。每一步都必须顺利进行,确保整个过程高效。
履约流程的关键是协同顺畅,只有各系统相互配合,订单能从头到尾顺利完成各个环节,才能确保在客户约定的时间内完成履约。任何一个环节出问题都会导致履约时间延长,降低客户满意度。
- 接收订单:当客户在销售平台下单后,第一步是收订单。这个步骤需要收集和确认订单信息,包括销售店铺信息、客户信息、商品信息、收发货地址、交付信息、支付信息等。在这个阶段,系统会检查订单是否有效,确保所有的订单信息都是完整的。
- 订单拆单:此环节的目标是把复杂的订单分解成更好管理的子订单。通常根据订单类型、商品类型、存放位置、履约要求等因素来分解。比如,需要从不同地方发货的商品、预售商品。拆分子订单可以提高我们处理的速度,减少物流的费用,每个小订单都可以根据最佳的履约流程来处理。
- 派单:该步骤会基于物流配送的因素进行决策,比如物流公司对包裹的重量和体积有限制、客户需分批送达或特定时间送达,在派单环节,可能会进一步拆单,分配给合适的仓库或门店。
- 预占库存:该环节可以防止在处理订单时,库存被其他订单占用,防止超卖情况发生,是库存管理的关键环节,确保了库存的准确性。
- 改派:在履约过程中,可能会因为库存不足、配送地址问题或其他突发情况,需要把订单转给另一个仓库或门店。改派环节允许订单根据实际情况进行调整。这个过程有助于更好地利用资源,确保订单能快速准确地完成。
- 拣货:指根据订单信息从库存中挑选出下单商品的过程。这个环节要求高度的准确性和效率,拣选错误,会直接影响客户满意度。仓库工作人员通常会使用手持终端设备,确保按照订单作业的准确性。
- 打包:拣货后商品会被妥善包装,保证运输安全。包装时会贴上运输标签和配送信息,确保商品能顺利送达。
- 出库:打包好的商品被快递员或配送小哥揽收后,会被记录为已出库,这就意味着商品已经离开门店/仓库。
- 物流配送:商品出库后,将通过快递或同城配送方式进行运送。这一阶段,物流公司或配送公司负责将商品运送到客户指定的收货地址。
- 确认收货:当客户收到并确认商品没有问题后,订单就算完成了。客户通常在网上确认收货。这个环节是记录服务时间、收集客户反馈的时机。
核心概念模型
在整个订单履约过程中,订单是起始,子订单是订单拆分的结果,用于处理更细粒度的履约逻辑。
发货单则是具体的执行单据,指导商品从仓库到客户手中的具体操作任务。
这三个模型层层递进,确保整个履约链条的高效管理。
- 订单:客户提交购物请求后,生成的买卖合同,通常包含客户信息、下单日期、所购买的商品或服务明细、价格、数量、收货地址以及支付方式等详细信息。
- 子订单:为了更高效地进行履约,大订单可能会被拆分成多个子订单,子订单会根据商品类型、配送地址、仓库位置或供应商等因素进行拆分。
- 发货单:根据子订单生成,指导完成订单的具体履约任务,如商品的拣选、包装、出库、配送等。
订单拆分场景
单门店履约场景
在连锁模式下,系统会自动根据用户的收货地址匹配最近的门店。
如果匹配到某个门店,且门店库存充足,能完成履约服务。在这种情况下,不会对订单进行拆分,直接分配给门店进行发货。
多仓库履约场景
有些商家有多个仓库,不同的商品存放在不同的门店或仓库里。
当用户下单时,如果订单内的商品在不同的仓库,就需要拆分订单,把拆分后的子订单匹配到对应的仓库中,然后根据商品的数量进行备货和出库。
按订单类型、商品类型拆分
由于订单和商品类型的差异,我们需要将其拆分成不同类型的子订单。
商品中包括跨境商品、分销商品等,我们会根据不同的商品类型自动拆分。
对于生鲜水果、冷链食品以及其他易碎物品,由于它们对快递的保护性和及时性有较高的要求,我们需要单独包装并发货。如果订单中包含这类商品,会对订单进行拆分处理。
按物流场景拆分
物流公司通常对包裹的重量和体积有限制。如果订单中的商品超过这些限制,就需要将订单拆分为多个发货单来发货。
从成本的角度考虑,在某些情况下,将大量商品分成多个发货单可能会比一个大包裹发货更省钱。
客户可能会有特殊的物流要求,如分批送达或特定时间送达,需要将订单拆分为多个发货单。例如预售商品与其他商品一起下单,需要等到预售商品到货后再发货。
系统的核心能力
通过分析订单履约的全流程和各个业务活动,我们可以梳理出订单履约流程所需的核心业务能力,分别为履约服务表达、履约调度和物流配送。
- 履约服务表达:负责清楚、准确地向客户传递履约服务的能力,包括订单处理时间、配送时间、费用计算和服务范围。确保客户下单时有明确的期待,并在整个订单过程中保持透明和一致。
- 履约调度:涉及订单的接收、处理、门店/仓库分配。这一能力确保订单根据预定的规则和优先级,有效地分配给门店/仓库。提升内部操作的效率,减少履约时间,同时最大限度地减少延期情况。
- 物流配送:确保下单商品从门店/仓库准时地运送到客户手中,这包括与第三方运力服务商的合作、配送管理、配送路径的优化以及送货执行。这部分能力由配送系统提供。
应用架构设计
应用层定义软件的应用功能,它负责接收用户请求,协调领域层能力来执行任务,并将结果返回给用户,核心模块包括:
- C端履约服务
- 预计送达时间:为消费者提供订单的预计处理时间、配送时效等,通常基于订单处理时间、配送情况、配送距离等多种因素计算。
- 实时订单状态查询:允许消费者实时查看他们的订单所处阶段。包括订单待接单、拣货、打包、已发货、配送中等状态。
- 配送轨迹跟踪:提供订单从出库到最终送达的完整路径跟踪,消费者可以查看订单的当前位置和过往的配送节点,了解配送进度。
- 配送信息修改:在订单还未最终发出之前,消费者可能需要更改配送信息,如地址或配送时间。
- 配送费用明细:显示消费者的订单配送费用的详细分解,包括配送费、包装费、服务费等。
- 确认收货:消费者可以通过系统确认收货,是完成订单流程的最后一步。
- B端管理模块:
- 订单派单:接收来自销售平台的订单,并按照既定规则自动分配给对应的门店/仓库。
- 订单管理:全面管理订单的生命周期,包括订单的确认、处理、状态跟踪、修改和取消等管理操作。
- 拣货管理:管理仓库内的拣货操作,确保商品被准确无误地从货架上拣选出来,并进行打包和发货。
- 发货管理:全面管理发货单的生命周期,根据订单的地址、商品大小、重量和客户选择的履约方式,匹配合适的发货方式,并对发货流程进行跟踪。
- 逆向履约:当客户不满意或需退换商品时,逆向履约模块负责处理退货请求,并管理退货退款和换货流程。
领域层是业务逻辑的核心,专注于表示业务概念、业务状态流转和业务规则,沉淀可复用的服务能力,模块包括:
- 履约服务表达:负责向客户提供履约服务的明确信息。包括预计的送货时间、费用计算、服务选项(如定时达、次日达等)以及履约可达性要求。
- 订单履约调度:提供订单履约调度的核心能力,确保订单被高效地处理和执行。它涉及订单从接收到最终准备配送的所有调度和处理过程,包括订单拆分、分配、拣货、包装、发货等。
订单履约系统与其他系统的依赖关系:
- 商品管理系统:提供的商品信息,包括价格、规格、描述、分类、SKU等。
- 中央库存系统:需要访问中央库存系统来确认下单商品的实物库存情况,包括库存数量和库存位置。
- 配送系统:一旦商品打包完成,将依赖配送系统来处理商品的实际配送工作,包括配送安排、跟踪和状态更新。配送系统提供的配送状态和时间信息,对于订单履约系统中订单状态的更新至关重要。
- 基础数据系统:提供组织机构信息、用户权限信息、服务商信息等基础数据。这些标准化的数据确保各个系统数据的一致性
- 数据分析系统:订单履约系统将产生大量数据,包括订单数据、履约过程数据、配送时效数据等,这些数据需传输到数据分析系统。数据分析系统基于采集到的数据,提供分析与洞察,帮助优化订单履约流程,提升客户满意度,并提供预测分析,来辅助库存管理和需求预测。
写在最后
订单履约系统负责管理从接收客户订单到将商品送达客户手中的全过程。它连接上游交易和下游仓储配送,以提高供应链效率。
该系统的核心业务能力包括履约服务表达、履约调度和物流配送。
根据物流和商品类型等因素,订单会被拆分成子订单。这样做可以提高处理速度并减少物流费用。
在订单履约系统的应用架构中,应用层定义了软件的应用功能,包括C端履约服务和B端管理模块。领域层是业务逻辑的核心,专注于表示业务概念、业务状态流转和业务规则。
订单履约系统与商品管理系统、中央库存系统、配送系统、基础数据系统和数据分析系统等其他系统存在依赖关系。各系统通过相互协作来完成订单履约流程。
本文来自博客园,作者:架构师汤师爷,转载请注明原文链接:https://www.cnblogs.com/tangshiye/p/18054953
更新于:5个月前相关文章
- LinkWeChat开源系统
- 每一个程序员,都希望能成为分布式系统架构师
- 游戏陪玩系统语音聊天系统商业版源码安装教程
- 服务架构进化论
- 【说站】php架构什么意思
- 【说站】python系统内置方法如何获取
- 【说站】python os怎样处理系统文件
- 系统架构7个非功能性需求
- mac 系统 homebrew 管理 PHP
- 小程序中商家入驻提醒、新订单提醒
- TP6.0 空控制器: 健壮系统服务
- 系统的讲解网站的优化
- TP6.0 系统服务的使用和理解
- Windows 系统 PhpStorm 2020无限试用30天
- 你如何设计一个可扩展的.NET应用程序架构?请描述你在这方面的思考过程和实践经验。
- C#中如何获取当前系统CPU的核心数
- C#获取Windows系统中所有已安装软件的名称和版本号
- 在64位的Windows系统下运行32位的C#程序如何控制重定向
- .NET开发常用分层架构
- 如何快速优化几千万数据量的订单表