当前位置: 首页 > news >正文

新零售SaaS架构:订单履约系统架构设计(万字图文总结)

什么是订单履约系统?

订单履约系统用来管理从接收客户订单到将商品送达客户手中的全过程。

它连接了上游交易(客户在销售平台下单环)和下游仓储配送(如库存管理、物流配送),确保信息流顺畅、操作协同,提升整个供应链的效率和响应速度。

系统定位

Untitled

订单履约系统的目标是让订单处理更快、更清晰,提高客户体验。

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

业务流程

Untitled

订单履约过程是一系列步骤,从客户下单到商品交给客户,包含很多步骤,例如客户在销售平台下订单,订单履约系统接收订单,仓库或门店备货和发货,配送小哥交付给客户。每一步都必须顺利进行,确保整个过程高效。

履约流程的关键是协同顺畅,只有各系统相互配合,订单能从头到尾顺利完成各个环节,才能确保在客户约定的时间内完成履约。任何一个环节出问题都会导致履约时间延长,降低客户满意度。

  • 接收订单:当客户在销售平台下单后,第一步是收订单。这个步骤需要收集和确认订单信息,包括销售店铺信息、客户信息、商品信息、收发货地址、交付信息、支付信息等。在这个阶段,系统会检查订单是否有效,确保所有的订单信息都是完整的。

  • 订单拆单:此环节的目标是把复杂的订单分解成更好管理的子订单。通常根据订单类型、商品类型、存放位置、履约要求等因素来分解。比如,需要从不同地方发货的商品、预售商品。拆分子订单可以提高我们处理的速度,减少物流的费用,每个小订单都可以根据最佳的履约流程来处理。

  • 派单:该步骤会基于物流配送的因素进行决策,比如物流公司对包裹的重量和体积有限制、客户需分批送达或特定时间送达,在派单环节,可能会进一步拆单,分配给合适的仓库或门店。

  • 预占库存:该环节可以防止在处理订单时,库存被其他订单占用,防止超卖情况发生,是库存管理的关键环节,确保了库存的准确性。

  • 改派:在履约过程中,可能会因为库存不足、配送地址问题或其他突发情况,需要把订单转给另一个仓库或门店。改派环节允许订单根据实际情况进行调整。这个过程有助于更好地利用资源,确保订单能快速准确地完成。

  • 拣货:指根据订单信息从库存中挑选出下单商品的过程。这个环节要求高度的准确性和效率,拣选错误,会直接影响客户满意度。仓库工作人员通常会使用手持终端设备,确保按照订单作业的准确性。

  • 打包:拣货后商品会被妥善包装,保证运输安全。包装时会贴上运输标签和配送信息,确保商品能顺利送达。

  • 出库:打包好的商品被快递员或配送小哥揽收后,会被记录为已出库,这就意味着商品已经离开门店/仓库。

  • 物流配送:商品出库后,将通过快递或同城配送方式进行运送。这一阶段,物流公司或配送公司负责将商品运送到客户指定的收货地址。

  • 确认收货:当客户收到并确认商品没有问题后,订单就算完成了。客户通常在网上确认收货。这个环节是记录服务时间、收集客户反馈的时机。

核心概念模型

Untitled

在整个订单履约过程中,订单是起始,子订单是订单拆分的结果,用于处理更细粒度的履约逻辑。

发货单则是具体的执行单据,指导商品从仓库到客户手中的具体操作任务。

这三个模型层层递进,确保整个履约链条的高效管理。

  • 订单:客户提交购物请求后,生成的买卖合同,通常包含客户信息、下单日期、所购买的商品或服务明细、价格、数量、收货地址以及支付方式等详细信息。

  • 子订单:为了更高效地进行履约,大订单可能会被拆分成多个子订单,子订单会根据商品类型、配送地址、仓库位置或供应商等因素进行拆分。

  • 发货单:根据子订单生成,指导完成订单的具体履约任务,如商品的拣选、包装、出库、配送等。

订单拆分场景

单门店履约场景

在连锁模式下,系统会自动根据用户的收货地址匹配最近的门店。

如果匹配到某个门店,且门店库存充足,能完成履约服务。在这种情况下,不会对订单进行拆分,直接分配给门店进行发货。

Untitled

多仓库履约场景

有些商家有多个仓库,不同的商品存放在不同的门店或仓库里。

当用户下单时,如果订单内的商品在不同的仓库,就需要拆分订单,把拆分后的子订单匹配到对应的仓库中,然后根据商品的数量进行备货和出库。

Untitled

按订单类型、商品类型拆分

由于订单和商品类型的差异,我们需要将其拆分成不同类型的子订单。

商品中包括跨境商品、分销商品等,我们会根据不同的商品类型自动拆分。

对于生鲜水果、冷链食品以及其他易碎物品,由于它们对快递的保护性和及时性有较高的要求,我们需要单独包装并发货。如果订单中包含这类商品,会对订单进行拆分处理。

Untitled

按物流场景拆分

物流公司通常对包裹的重量和体积有限制。如果订单中的商品超过这些限制,就需要将订单拆分为多个发货单来发货。

从成本的角度考虑,在某些情况下,将大量商品分成多个发货单可能会比一个大包裹发货更省钱。

客户可能会有特殊的物流要求,如分批送达或特定时间送达,需要将订单拆分为多个发货单。例如预售商品与其他商品一起下单,需要等到预售商品到货后再发货。

Untitled

系统的核心能力

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

Untitled

  • 履约服务表达:负责清楚、准确地向客户传递履约服务的能力,包括订单处理时间、配送时间、费用计算和服务范围。确保客户下单时有明确的期待,并在整个订单过程中保持透明和一致。

  • 履约调度:涉及订单的接收、处理、门店/仓库分配。这一能力确保订单根据预定的规则和优先级,有效地分配给门店/仓库。提升内部操作的效率,减少履约时间,同时最大限度地减少延期情况。

  • 物流配送:确保下单商品从门店/仓库准时地运送到客户手中,这包括与第三方运力服务商的合作、配送管理、配送路径的优化以及送货执行。这部分能力由配送系统提供。

应用架构设计

Untitled

应用层定义软件的应用功能,它负责接收用户请求,协调领域层能力来执行任务,并将结果返回给用户,核心模块包括:

  • C端履约服务预计送达时间:为消费者提供订单的预计处理时间、配送时效等,通常基于订单处理时间、配送情况、配送距离等多种因素计算。实时订单状态查询:允许消费者实时查看他们的订单所处阶段。包括订单待接单、拣货、打包、已发货、配送中等状态。配送轨迹跟踪:提供订单从出库到最终送达的完整路径跟踪,消费者可以查看订单的当前位置和过往的配送节点,了解配送进度。配送信息修改:在订单还未最终发出之前,消费者可能需要更改配送信息,如地址或配送时间。配送费用明细:显示消费者的订单配送费用的详细分解,包括配送费、包装费、服务费等。确认收货:消费者可以通过系统确认收货,是完成订单流程的最后一步。

  • B端管理模块:订单派单:接收来自销售平台的订单,并按照既定规则自动分配给对应的门店/仓库。订单管理:全面管理订单的生命周期,包括订单的确认、处理、状态跟踪、修改和取消等管理操作。拣货管理:管理仓库内的拣货操作,确保商品被准确无误地从货架上拣选出来,并进行打包和发货。发货管理:全面管理发货单的生命周期,根据订单的地址、商品大小、重量和客户选择的履约方式,匹配合适的发货方式,并对发货流程进行跟踪。逆向履约:当客户不满意或需退换商品时,逆向履约模块负责处理退货请求,并管理退货退款和换货流程。

领域层是业务逻辑的核心,专注于表示业务概念、业务状态流转和业务规则,沉淀可复用的服务能力,模块包括:

  • 履约服务表达:负责向客户提供履约服务的明确信息。包括预计的送货时间、费用计算、服务选项(如定时达、次日达等)以及履约可达性要求。

  • 订单履约调度:提供订单履约调度的核心能力,确保订单被高效地处理和执行。它涉及订单从接收到最终准备配送的所有调度和处理过程,包括订单拆分、分配、拣货、包装、发货等。

订单履约系统与其他系统的依赖关系:

  • 商品管理系统:提供的商品信息,包括价格、规格、描述、分类、SKU等。

  • 中央库存系统:需要访问中央库存系统来确认下单商品的实物库存情况,包括库存数量和库存位置。

  • 配送系统:一旦商品打包完成,将依赖配送系统来处理商品的实际配送工作,包括配送安排、跟踪和状态更新。配送系统提供的配送状态和时间信息,对于订单履约系统中订单状态的更新至关重要。

  • 基础数据系统:提供组织机构信息、用户权限信息、服务商信息等基础数据。这些标准化的数据确保各个系统数据的一致性

  • 数据分析系统:订单履约系统将产生大量数据,包括订单数据、履约过程数据、配送时效数据等,这些数据需传输到数据分析系统。数据分析系统基于采集到的数据,提供分析与洞察,帮助优化订单履约流程,提升客户满意度,并提供预测分析,来辅助库存管理和需求预测。

写在最后

订单履约系统负责管理从接收客户订单到将商品送达客户手中的全过程。它连接上游交易和下游仓储配送,以提高供应链效率。

该系统的核心业务能力包括履约服务表达、履约调度和物流配送。

根据物流和商品类型等因素,订单会被拆分成子订单。这样做可以提高处理速度并减少物流费用。

在订单履约系统的应用架构中,应用层定义了软件的应用功能,包括C端履约服务和B端管理模块。领域层是业务逻辑的核心,专注于表示业务概念、业务状态流转和业务规则。

订单履约系统与商品管理系统、中央库存系统、配送系统、基础数据系统和数据分析系统等其他系统存在依赖关系。各系统通过相互协作来完成订单履约流程。

文章转载自:架构师汤师爷

原文链接:https://www.cnblogs.com/tangshiye/p/18054953

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

相关文章:

新零售SaaS架构:订单履约系统架构设计(万字图文总结)

什么是订单履约系统? 订单履约系统用来管理从接收客户订单到将商品送达客户手中的全过程。 它连接了上游交易(客户在销售平台下单环)和下游仓储配送(如库存管理、物流配送),确保信息流顺畅、操作协同&…...

Hive SQL 开发指南(三)优化及常见异常

在大数据领域,Hive SQL 是一种常用的查询语言,用于在 Hadoop上进行数据分析和处理。为了确保代码的可读性、维护性和性能,制定一套规范化的 Hive SQL 开发规范至关重要。本文将介绍 Hive SQL 的基础知识,并提供一些规范化的开发指…...

Spring Boot 自动装配的原理!!!

SpringBootApplication SpringBootConfiguration:标识启动类是一个IOC容器的配置类 EnableAutoConfiguration: AutoConfigurationPackage:扫描启动类所在包及子包中所有的组件,生…...

Linux运维_Bash脚本_编译安装Wayland-1.22.0

Linux运维_Bash脚本_编译安装Wayland-1.22.0 Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 Sh (Bourne Shell) 的替代品。 您可以在 Linu…...

Python数字类型

文章目录 Python数字类型1. 数字类型1.1 数字类型概述1.2 整数类型1.3 浮点数类型1.4 复数 2. 数字类型的操作2.1 内置的数值运算操作符2.2 内置的数值运算函数2.3 内置的数字类型转换函数 思考与练习 Python数字类型 1. 数字类型 1.1 数字类型概述 数字是自然界计数活动的抽…...

每天一个数据分析题(一百九十六)

在多元线性回归模型的自变量选择方法中,关于向后回归法和逐步回归法的描述,以下哪些是正确的? A. 向后回归法开始时包含所有自变量,并逐步剔除每个不显著的变量。 B. 逐步回归法结合了向前回归法和向后回归法,可以在…...

华为北向网管NCE开发教程(1)闭坑选接口协议

华为北向网管NCE开发教程(1)闭坑选接口协议 华为北向网管NCE开发教程(2)REST接口开发 华为北向网管NCE开发教程(3)CORBA协议开发 本文一是记录自己开发华为北向网管遇到的坑,二是给需要的人&…...

JavaScript极速入门-综合案例(3)

综合案例 猜数字 预期效果 代码实现 <button type"button" id"reset">重新开始一局游戏</button><br>请输入要猜的数字:<input type"text" id"number"><button type"button" id"button&q…...

RabbitMQ架构详解

文章目录 概述架构详解核心组件虚拟主机&#xff08;Virtual Host&#xff09;RabbitMQ 有几种广播类型 概述 RabbitMQ是⼀个高可用的消息中间件&#xff0c;支持多种协议和集群扩展。并且支持消息持久化和镜像队列&#xff0c;适用于对消息可靠性较高的场合 官网https://www.…...

编译内核错误 multiple definition of `yylloc‘

编译内核错误 # make ARCHarm CROSS_COMPILEarm-mix410-linux- uImageHOSTLD scripts/dtc/dtc /usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss0x10): multiple definition of yylloc; scripts/dtc/dtc-lexer.lex.o:(.bss0x0): first defined here collect2: error: ld ret…...

深度学习模型部署(四)常用模型及推理平台评估指标

判断选择什么模型&#xff0c;什么量化方案&#xff0c;什么推理框架&#xff0c;最基础的知识就是如何评估自己的模型以及推理平台。 模型衡量标准 衡量一个模型的最直接标准就是运算速度&#xff0c;但是运算速度是无法计算的&#xff0c;所以定义了一些间接标准来推测模型的…...

【控制台警告】npm WARN EBADENGINE Unsupported engine

今天用webpack下载几个loader依赖&#xff0c;爆出了三个警告&#xff0c;大概的意思就是本地安装的node和npm的版本不是很匹配&#xff1f; 我的解决思路是&#xff1a; 先检查node和npm版本 然后去官网查找版本的对应 靠&#xff0c;官网404 Node.js (nodejs.org) 就找到…...

ArmSoM Rockchip系列产品 通用教程 之 GPIO 使用

1. GPIO简介​ GPIO&#xff0c;全称 General-Purpose Input/Output&#xff08;通用输入输出&#xff09;&#xff0c;是一种在计算机和嵌入式系统中常见的数字输入输出接口。它允许软件控制硬件的数字输入和输出&#xff0c;例如开关、传感器、LED灯等。GPIO通常由一个芯片或…...

npm镜像源地址

镜像源地址替换问题&#xff08;重要&#xff09; 2024 年 1 月 22 日 &#xff0c;registry.npm.taobao.org 的 SSL 证书正式过期。 2022 年 5 月 淘宝源发布了公告&#xff1a; &#xff08;大家应该没有太多关注哦&#xff0c;也包括我&#xff0c;哈哈&#xff09; &am…...

Java的Writer类详解

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…...

R语言基础的代码语法解译笔记

1、双冒号&#xff0c;即&#xff1a;“::” 要使用某个包里的函数&#xff0c;通常做法是先加载&#xff08;library&#xff09;包&#xff0c;再调用函数。最新加载的包的namespace会成为最新的enviroment&#xff0c;某些情况下可能影响函数的结果。而package name::funct…...

【蓝桥杯】蓝桥杯算法复习(一)

&#x1f600;大家好&#xff0c;我是白晨&#xff0c;一个不是很能熬夜&#x1f62b;&#xff0c;但是也想日更的人✈。如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下&#x1f440;白晨吧&#xff01;你的支持就是我最大的动力&#xff01;&#x1f4…...

移动端精准测试简介

在测试领域每隔一段时间&#xff0c;就会有一些主流的测试技术&#xff0c;比如说&#xff1a;接口自动化&#xff0c;WebUI, AppUI自动化&#xff0c;然后就是测试平台的开发&#xff0c;各类专项测试&#xff08;性能&#xff0c;安全&#xff09;,再到前几年的手机集群云测平…...

CCProxy代理服务器地址的设置步骤

目录 前言 一、下载和安装CCProxy 二、启动CCProxy并设置代理服务器地址 三、验证代理服务器设置是否生效 四、使用CCProxy进行代理设置的代码示例 总结 前言 CCProxy是一款常用的代理服务器软件&#xff0c;可以帮助用户实现网络共享和上网代理。本文将详细介绍CCProxy…...

探秘分布式神器RMI:原理、应用与前景分析(二)

本系列文章简介&#xff1a; 本系列文章将深入探究RMI远程调用的原理、应用及未来的发展趋势。首先&#xff0c;我们会详细介绍RMI的工作原理和基本流程&#xff0c;解析其在分布式系统中的核心技术。随后&#xff0c;我们将探讨RMI在各个领域的应用&#xff0c;包括分布式计算…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...