Series Article

跨境出海 SaaS 柔性供应链系统 PRD

产品需求文档(PRD)


字段内容
文档编号PRD-SCM-2025-001
文档版本V1.0.0
产品名称跨境出海 SaaS 柔性供应链管理系统
英文名称Cross-Border SaaS Flexible Supply Chain Management System
文档状态评审中
创建日期2025-04-17
最后更新2025-04-17
产品负责人待定
技术负责人待定
评审人技术委员会 / 业务委员会
保密级别内部保密

文档变更记录

版本日期修改人修改内容摘要
V1.0.02025-04-17产品团队初版创建,覆盖全业务模块需求

目录

  1. 项目背景与目标
  2. 术语表与专业词汇解释
  3. 系统架构总览
  4. 用户角色与权限体系
  5. 多租户架构设计需求
  6. 供应商管理模块(SRM)
  7. 采购管理模块(PMS)
  8. 仓储管理模块(WMS)
  9. 商品管理模块(PIM)
  10. 订单管理模块(OMS)
  11. 物流管理模块(TMS)
  12. 财务结算模块(FMS)
  13. 数据分析与智能决策模块(BIS)
  14. 系统安全与权限控制
  15. SaaS 运营管理后台
  16. 非功能性需求
  17. 系统集成需求
  18. 整体验收标准
  19. 风险识别与应对策略
  20. 附录

1. 项目背景与目标

1.1 项目背景

2024 年中国跨境电商出口规模突破 1.88 万亿元人民币,同比增长 17%,亚马逊、TikTok Shop、Temu、Shopee 等平台持续扩张,为中国卖家提供了大量出海机会。然而,随着多平台经营、多仓库管理、多渠道物流的复杂度急剧上升,传统 Excel 手工管理模式已无法支撑规模化运营。

核心痛点:

  • 信息孤岛:采购、仓储、订单、物流数据分散在不同系统或 Excel 中,无法实时联动;
  • 库存失控:缺乏精准的库存可视化,频繁出现超卖或积压;
  • 响应迟缓:补货决策依赖人工经验,无法快速响应市场需求变化;
  • 成本不透明:物流成本、平台费用、退货损耗无法精确核算到 SKU 级别;
  • 合规风险:跨境清关、数据合规(GDPR)、平台合规要求日益严格,人工管控风险极高。

1.2 产品定位

本系统定位为面向中小跨境卖家和出海品牌商的 SaaS 化柔性供应链管理平台,覆盖从供应商协同、智能采购、仓储管理、订单履约、跨境物流到财务结算的全链路数字化。以”柔性”为核心设计理念,强调系统对市场需求变化的快速响应与动态调度能力。

1.3 项目目标

目标类型具体目标
业务目标帮助卖家将库存周转率提升 30%,订单处理人效提升 50%
产品目标在 8 个月内完成 MVP 版本上线,覆盖供应链全链路核心功能
技术目标支持 1000+ 租户并发,单租户日订单处理量 ≥ 50,000 单
商业目标首年签约租户数 ≥ 500 家,年化 ARR ≥ 500 万元

1.4 项目范围

本期(V1.0)包含: 供应商管理、采购管理、仓储管理、商品管理、订单管理、物流管理、财务结算、数据分析、权限管理、SaaS 运营后台。

本期不包含(规划至 V2.0): B2B 分销管理、供应链金融模块、IoT 设备集成、自研 WMS 硬件对接、海外仓 WMS 本地部署版。


2. 术语表与专业词汇解释

2.1 业务术语

术语英文全称解释
SaaSSoftware as a Service软件即服务。基于云计算的软件交付模式,用户无需安装,通过浏览器订阅使用,按月/年付费。
多租户Multi-Tenancy一套系统同时服务多个客户(租户),各租户数据严格隔离,互不可见。
柔性供应链Flexible Supply Chain相对于刚性供应链(固定产能、固定供应商),柔性供应链能够根据市场需求波动,快速调整采购量、生产计划和物流方案。
SKUStock Keeping Unit最小库存管理单元。如”红色 M 码 T 恤”是一个 SKU,“蓝色 L 码 T 恤”是另一个 SKU。
SPUStandard Product Unit标准产品单元。如”圆领 T 恤”是一个 SPU,包含多个不同颜色/尺码的 SKU。
HS CodeHarmonized System Code海关编码。国际通用的商品分类编码,用于海关申报和关税计算,影响清关效率和税率。
FBAFulfillment by Amazon亚马逊代运营履约服务。卖家将货物预先发往亚马逊仓库,由亚马逊完成拣货、打包和发货。
FBA 头程FBA First Mile将货物从中国国内发往亚马逊海外仓库的国际运输段。
3PLThird-Party Logistics第三方物流。由独立的物流服务商提供仓储、运输、配送等服务。
DDPDelivered Duty Paid完税后交货。卖家承担运输全程及目的国关税,买家无需额外付费,体验更好但风险由卖家承担。
DDUDelivered Duty Unpaid未完税交货。买家在目的国自行缴纳关税,可能导致包裹被扣押,买家体验较差。
FNSKUFulfillment Network Stock Keeping Unit亚马逊履约网络条形码,每个 FBA 产品需要贴附 FNSKU 标签才能入库。
MOQMinimum Order Quantity最小起订量。供应商规定的每次采购的最低数量。
COGSCost of Goods Sold销售成本。直接与商品销售相关的成本,含采购成本、入仓成本、物流成本。
ACOSAdvertising Cost of Sales广告销售成本比。广告花费 / 广告带来的销售额,是衡量广告效率的核心指标。
VATValue Added Tax增值税。欧洲市场要求跨境卖家在销售额达到阈值后在当地注册 VAT 并申报。
OSSOne-Stop Shop欧盟一站式增值税申报机制,允许卖家在一个欧盟成员国统一申报所有欧盟国家的 VAT。
OTDOn-Time Delivery准时交货率。实际按时送达订单数 / 总订单数,衡量供应链履约能力。
CPFRCollaborative Planning, Forecasting and Replenishment协同计划、预测与补货。供应链上下游企业共享需求预测和库存数据,协同制定补货计划。
MRPMaterial Requirements Planning物料需求计划。根据销售订单和安全库存,反向计算所需采购物料的数量和时间。
WMSWarehouse Management System仓储管理系统。管理仓库内商品的入库、存储、出库、盘点等全部操作。
TMSTransportation Management System运输管理系统。管理货物的运输计划、承运商选择、运单跟踪和费用结算。
OMSOrder Management System订单管理系统。接收、处理、跟踪客户订单的全生命周期系统。
ERPEnterprise Resource Planning企业资源计划。集成企业采购、生产、销售、财务等核心业务流程的系统。
SRMSupplier Relationship Management供应商关系管理。管理供应商信息、评估、协同和绩效考核的系统。
PIMProduct Information Management商品信息管理。集中管理商品基础信息、多语言内容、图片和属性的系统。
BISBusiness Intelligence System商业智能系统。通过数据分析为业务决策提供支持的系统。
ARRAnnual Recurring Revenue年度经常性收入。SaaS 商业模式的核心财务指标,反映订阅制收入的规模。
RBACRole-Based Access Control基于角色的访问控制。通过给用户分配角色来控制其对系统资源的访问权限。
Sa-TokenJava 权限认证框架用于登录认证、权限校验、会话管理和分布式登录态控制;本项目采用随机 Token + Redis 登录态。
幂等性Idempotency同一操作执行多次与执行一次的效果相同。在网络不稳定时防止重复下单、重复扣库存等问题。
乐观锁Optimistic Lock通过版本号机制防止并发修改冲突,适用于读多写少的场景(如库存扣减)。
五流合一Five-Flow Integration供应链中商品流、订单流、资金流、信息流、物流五个维度的数据打通与协同。
安全库存Safety Stock为应对需求波动或供应延迟而额外持有的缓冲库存,防止缺货。
库存周转率Inventory Turnover Rate销售成本 / 平均库存值,衡量库存的使用效率,越高说明资金利用率越好。
账期Payment Terms买卖双方约定的从收货到付款的时间间隔,如 Net30 代表收货后 30 天内付款。
Settlement Report亚马逊结算报告亚马逊每两周生成一次的账单报告,包含销售额、平台费、FBA 费、广告费、退款等明细。

2.2 技术术语

术语解释
Schema 隔离多租户数据隔离方案之一,每个租户使用独立的数据库 Schema(命名空间),数据完全独立。
tenant_id 透传在每个请求中携带租户标识,所有 SQL 查询自动加上租户过滤条件,确保数据隔离。
状态机用于描述对象在不同状态之间流转规则的设计模式,如订单状态从”待支付”→“已支付”→“已发货”。
AOPAspect-Oriented Programming,面向切面编程。在不修改业务代码的前提下,统一处理日志、权限、事务等横切关注点。
分布式锁在多个服务实例间协调访问共享资源的锁机制,常用 Redis 实现,防止并发超卖。
消息队列用于异步解耦的中间件(如 RocketMQ/Kafka),生产者发送消息后无需等待消费者处理,提升系统吞吐量。
CI/CD持续集成/持续部署。代码提交后自动完成构建、测试、部署的流水线。
容器化使用 Docker 将应用和其依赖打包成标准化镜像,确保在任何环境中运行一致。

3. 系统架构总览

3.1 整体技术架构

graph TB
    FE["🖥️ 前端层(Frontend Layer)<br/>Vue 3 + Element Plus<br/>卖家工作台<br/>供应商 Portal<br/>运营后台"]

    GW["🔀 网关层(API Gateway)<br/>Nginx 反向代理<br/>限流<br/>鉴权<br/>路由分发"]

    APP["⚙️ 应用服务层(Application Layer)<br/>SRM 供应商管理<br/>PMS 采购管理<br/>WMS 仓储管理<br/>PIM 商品管理<br/>OMS 订单管理<br/>TMS 物流管理<br/>FMS 财务管理<br/>BI 数据分析<br/>权限/租户管理<br/>SaaS 运营后台"]

    INFRA["🗄️ 基础设施层(Infrastructure Layer)<br/>MySQL 8.0 主从<br/>Redis 7 缓存/锁<br/>MinIO/OSS 文件存储<br/>RocketMQ 消息队列<br/>XXL-Job 定时任务<br/>ELK 日志中心"]

    EXT["🌐 外部集成层(External Integration)<br/>亚马逊 SP-API<br/>TikTok Shop API<br/>Shopee Open API<br/>物流商 API(菜鸟/云途/燕文)<br/>汇率 API<br/>邮件/短信服务"]

    FE -->|"HTTPS / WebSocket"| GW
    GW -->|"内部路由"| APP
    APP -->|"数据存储 / 消息 / 调度"| INFRA
    APP -->|"第三方对接"| EXT

3.2 技术选型明细

层级技术选型选型理由
后端框架Spring Boot 3.x业界主流,生态成熟,社区活跃
ORM框架MyBatis Plus简化 CRUD,支持逻辑删除、字段自动填充
关系数据库MySQL 8.0稳定可靠,支持 JSON 字段,广泛使用
缓存Redis 7.0高性能 Key-Value,用于 Session、分布式锁、热点数据缓存
文件存储阿里云 OSS / MinIO私有化部署选 MinIO,公有云选 OSS
消息队列RocketMQ阿里巴巴出品,与 Spring Cloud Alibaba 原生集成,吞吐量高,支持延迟消息和事务消息
定时任务XXL-Job分布式任务调度,支持可视化管理
前端框架Vue 3 + TypeScript组合式 API,类型安全,性能优秀
UI组件库Element Plus跨境电商管理后台场景最成熟的组件库
权限框架Sa-Token轻量级,注解驱动,多端登录支持好
日志ELK(Elasticsearch + Logstash + Kibana)集中化日志管理,便于问题排查
容器化Docker + Docker Compose标准化部署,环境一致性保障
网关Nginx反向代理、负载均衡、SSL 终止

3.3 数据库设计全局规范

命名规范:

  • 表名:全小写,下划线分隔,业务模块前缀(如 srm_supplierwms_inventory
  • 字段名:全小写,下划线分隔
  • 主键:统一使用 id BIGINT(雪花算法生成,分布式唯一)
  • 租户字段:所有业务表必须包含 tenant_id BIGINT NOT NULL
  • 时间字段:created_time DATETIME、updated_time DATETIME(MyBatis Plus 自动填充)
  • 软删除字段:deleted TINYINT(1) DEFAULT 0(0=未删除,1=已删除)
  • 操作人字段:created_byupdated_by BIGINT(记录操作用户ID)

索引规范:

  • 所有外键字段必须建立索引
  • tenant_id 必须包含在每个查询的联合索引前缀中
  • 时间范围查询字段需建立索引

4. 用户角色与权限体系

4.1 角色定义

角色编码角色名称所属端核心职责
ROLE_PLATFORM_ADMIN平台超级管理员运营后台管理所有租户、套餐、公告;系统全局配置
ROLE_PLATFORM_OPS平台运营人员运营后台租户服务支持、数据查询,不可修改系统配置
ROLE_TENANT_ADMIN租户管理员卖家工作台管理本租户下所有用户和功能;全数据权限
ROLE_PURCHASE_MGR采购主管卖家工作台采购订单审批、供应商管理
ROLE_PURCHASE_OP采购专员卖家工作台创建采购申请,查看供应商信息
ROLE_WAREHOUSE_MGR仓储主管卖家工作台管理仓库配置、库存盘点审批
ROLE_WAREHOUSE_OP仓库操作员卖家工作台执行入库、出库、上架操作
ROLE_ORDER_OP订单处理员卖家工作台处理订单、异常订单处理
ROLE_FINANCE_MGR财务主管卖家工作台财务数据查看、对账审核、付款操作
ROLE_DATA_ANALYST数据分析师卖家工作台查看所有报表和分析数据,无操作权限
ROLE_SUPPLIER供应商账号供应商Portal查看对己采购单、上传发货信息、查看对账单

4.2 数据权限说明

权限维度说明实现方式
租户隔离各租户只能访问自己的数据tenant_id 全链路过滤
仓库权限部分角色只能操作被授权的仓库user_warehouse 关联表控制
供应商视角隔离供应商账号只能看到与自己相关的采购单接口层过滤 supplier_id = current_supplier_id
菜单权限不同角色看到不同的菜单动态路由 + 后端菜单权限树
按钮权限控制页面操作按钮的显示和可用前端指令 v-permission + 后端接口鉴权

5. 多租户架构设计需求

5.1 租户隔离策略

本系统采用 共享数据库 + tenant_id 字段隔离 方案(Row-Level Security)。

选型理由:

  • 独立数据库隔离方案维护成本过高(1000 租户需维护 1000 个数据库);
  • tenant_id 字段隔离成本低、易扩展,通过 MyBatis Plus 拦截器全局注入过滤条件;
  • 对于有强隔离需求的大客户(企业版),预留支持独立数据库的扩展能力。

5.2 租户生命周期

stateDiagram-v2
    [*] --> 注册申请
    注册申请 --> 邮箱验证 : 填写基本信息
    邮箱验证 --> 试用期 : 验证成功(自动开通14天试用)
    试用期 --> 正式订阅 : 选择套餐并付款
    试用期 --> 已过期 : 14天到期未付款
    正式订阅 --> 已过期 : 订阅到期未续费
    正式订阅 --> 正式订阅 : 续费成功
    正式订阅 --> 套餐升级 : 选择更高套餐
    套餐升级 --> 正式订阅 : 升级成功
    已过期 --> 正式订阅 : 续费激活
    已过期 --> 已注销 : 超期180天自动注销
    正式订阅 --> 已注销 : 用户主动注销
    已注销 --> [*]

5.3 租户功能开关

功能模块基础版专业版企业版
供应商管理✓(≤10个)✓(不限)✓(不限)
采购管理
仓储管理✓(1个仓库)✓(≤5个仓库)✓(不限)
订单管理✓(≤3个平台店铺)✓(≤10个)✓(不限)
物流管理
财务结算基础对账完整财务完整财务
数据分析基础报表高级报表自定义报表 + AI分析
API 开放接口✓(限速 1000次/天)✓(不限)
用户数上限5人20人不限

5.4 验收标准 — 多租户

编号验收项验收条件优先级
MT-01数据隔离A 租户登录后,无论通过任何接口,均无法获取 B 租户的任何数据P0
MT-02功能开关基础版租户访问企业版专属接口时,返回 403 及”套餐不支持该功能”提示P0
MT-03租户注册用户提交注册信息后 5 分钟内收到验证邮件,点击链接后账号激活成功P0
MT-04试用到期试用期到期后次日,用户登录时提示续费,核心写操作被禁用,数据仍可查看P0
MT-05性能隔离单一租户的大量查询操作不应导致其他租户的响应时间超过 2 倍基准值P1

6. 供应商管理模块(SRM)

6.1 模块概述

供应商管理模块(SRM)是供应链的最上游入口,负责管理与供应商的全生命周期关系,包括供应商的引入、认证、合同管理、绩效评估和淘汰。本模块提供供应商侧 Portal 账号,实现买卖双方数字化协同。

6.2 业务流程

6.2.1 供应商引入与审核流程

flowchart TD
    A([卖家发起供应商邀请]) --> B[供应商收到邮件邀请链接]
    B --> C[供应商注册Portal账号]
    C --> D["填写基本资质信息<br/>公司名称/联系人/经营范围"]
    D --> E["上传资质文件<br/>营业执照/质检报告/产品图册"]
    E --> F{采购部门审核}
    F -->|资料不完整| G["退回补充<br/>站内信通知供应商"]
    G --> D
    F -->|通过初审| H[采购主管复核]
    H -->|拒绝| I(["发送拒绝通知<br/>注明原因"])
    H -->|通过| J["签订合作协议<br/>上传合同扫描件"]
    J --> K["设置供应商等级<br/>初始评级为C级"]
    K --> L(["供应商状态变更为合作中<br/>发送欢迎通知"])

6.2.2 供应商绩效评估流程

flowchart LR
    A(["每月1日<br/>定时任务触发"]) --> B["从采购模块拉取<br/>过去30天数据"]
    B --> C{计算评分指标}
    C --> C1["交货准时率<br/>权重40%"]
    C --> C2["质量合格率<br/>权重35%"]
    C --> C3["响应速度<br/>权重15%"]
    C --> C4["价格竞争力<br/>权重10%"]
    C1 & C2 & C3 & C4 --> D["加权计算总分<br/>100分制"]
    D --> E{评级判断}
    E -->|90-100分| F[S级优质供应商]
    E -->|75-89分| G[A级良好供应商]
    E -->|60-74分| H[B级合格供应商]
    E -->|60分以下| I["C级待改善<br/>发送预警通知"]
    I --> J{连续3个月C级?}
    J -->|是| K[触发供应商淘汰流程]
    J -->|否| L[保留观察]
    F & G & H & L --> M(["更新供应商等级<br/>生成月度绩效报告"])

6.3 功能需求详细说明

6.3.1 供应商基础信息管理

FR-SRM-001:供应商信息录入

字段名类型必填规则说明
供应商名称文本2-100字,同一租户下不可重名
供应商类型枚举工厂供应商/贸易商/物流服务商
统一社会信用代码文本18位,格式校验
法定代表人文本2-20字
注册地址文本精确到市
联系人姓名文本对接业务人员
联系人电话文本手机号格式校验
联系人邮箱文本邮箱格式校验,用于发送通知
银行账号文本用于付款,加密存储
开户银行文本
账期天数数字默认30天,可选0/15/30/60/90
主营品类多选从品类树中选择
MOQ数字最小起订量
备注文本≤500字

FR-SRM-002:资质文件管理

  • 支持上传 PDF、JPG、PNG 格式,单文件 ≤ 20MB;
  • 每类文件(营业执照、质检报告等)可上传多个版本;
  • 文件配置有效期,到期前 30 天系统发送预警通知;
  • 文件在线预览(PDF 内嵌展示,图片缩略图点击大图)。

FR-SRM-003:供应商搜索与筛选

  • 支持按名称(模糊匹配)、类型、评级、状态、主营品类、创建时间范围多条件组合筛选;
  • 列表支持按评分、创建时间、更新时间排序;
  • 分页展示,每页 20/50/100 条可配置。

6.3.2 供应商绩效管理

绩效评分计算公式:

综合得分 = 交货准时率(%) × 40% + 质量合格率(%) × 35% + 响应速度得分 × 15% + 价格竞争力得分 × 10%

响应速度得分:
  - 24小时内响应 → 100分
  - 24-48小时响应 → 80分
  - 48-72小时响应 → 60分
  - 72小时以上 → 40分

价格竞争力得分:
  - 低于市场均价10%以上 → 100分
  - 低于市场均价0-10% → 80分
  - 高于市场均价0-10% → 60分
  - 高于市场均价10%以上 → 40分

6.4 核心数据模型

-- 供应商主表
CREATE TABLE srm_supplier (
    id              BIGINT PRIMARY KEY COMMENT '雪花ID',
    tenant_id       BIGINT NOT NULL COMMENT '租户ID',
    supplier_code   VARCHAR(32) NOT NULL COMMENT '供应商编码(系统自动生成)',
    supplier_name   VARCHAR(100) NOT NULL COMMENT '供应商名称',
    supplier_type   TINYINT NOT NULL COMMENT '类型:1工厂2贸易商3物流商',
    credit_code     VARCHAR(18) COMMENT '统一社会信用代码',
    contact_name    VARCHAR(50) NOT NULL COMMENT '联系人',
    contact_phone   VARCHAR(20) NOT NULL COMMENT '联系电话',
    contact_email   VARCHAR(100) NOT NULL COMMENT '联系邮箱',
    grade           CHAR(1) DEFAULT 'C' COMMENT '评级:S/A/B/C',
    score           DECIMAL(5,2) DEFAULT 0.00 COMMENT '最新综合评分',
    status          TINYINT DEFAULT 1 COMMENT '状态:1待审核2审核中3合作中4暂停5淘汰',
    payment_days    TINYINT DEFAULT 30 COMMENT '账期天数',
    portal_user_id  BIGINT COMMENT '关联的Portal账号ID',
    remark          VARCHAR(500) COMMENT '备注',
    deleted         TINYINT(1) DEFAULT 0,
    created_by      BIGINT,
    created_time    DATETIME,
    updated_by      BIGINT,
    updated_time    DATETIME,
    INDEX idx_tenant_status (tenant_id, status),
    INDEX idx_tenant_grade (tenant_id, grade)
) COMMENT '供应商主表';

6.5 验收标准

编号验收项验收条件优先级
SRM-01供应商创建填写必填字段后,成功创建供应商,系统自动生成唯一编码(如SUP2025001)P0
SRM-02状态流转供应商状态只能按规定路径流转,不可跳级(如不能直接从”待审核”变为”合作中”)P0
SRM-03文件上传上传 15MB 的 PDF 文件,成功率 100%,上传时间 ≤ 10 秒P0
SRM-04绩效计算定时任务在每月 1 日 02:00 前完成所有供应商评分计算,偏差 ≤ 0.01 分P1
SRM-05Portal隔离供应商 Portal 账号登录后,只能查看与本供应商相关的采购单,不可查看其他供应商数据P0
SRM-06查询性能供应商列表查询(含多条件筛选),响应时间 ≤ 500ms(10万条数据量级)P1
SRM-07预警通知资质文件到期前 30 天,系统自动发送邮件通知采购负责人P1

7. 采购管理模块(PMS)

7.1 模块概述

采购管理模块(PMS)负责管理企业的物料采购全流程,从采购需求的产生(可由系统自动触发或人工申请),经询价比价、下单确认、在途跟踪,直至入库验收和财务对账。本模块与 WMS(仓储)、SRM(供应商)、FMS(财务)深度联动。

7.2 业务流程

7.2.1 完整采购流程

flowchart TD
    A([需求来源]) --> A1[库存预警自动触发]
    A --> A2[销售预测触发]
    A --> A3[运营人员手动申请]

    A1 & A2 & A3 --> B[创建采购申请单<br/>填写物料/数量/期望到货日期]
    B --> C{采购金额判断}
    C -->|金额 < 1万元| D[采购专员直接审批]
    C -->|1万 ≤ 金额 < 10万| E[采购主管审批]
    C -->|金额 ≥ 10万| F[租户管理员审批]

    D & E & F -->|拒绝| G([退回申请人<br/>注明原因])
    D & E & F -->|通过| H[进入询价环节]

    H --> I{是否有历史价格?}
    I -->|有历史价格且价格稳定| J[直接使用历史最优供应商]
    I -->|无历史/价格波动大| K[向多个供应商发送询价]
    K --> L[收集供应商报价]
    L --> M[价格对比分析<br/>选择最优供应商]

    J & M --> N[生成正式采购订单]
    N --> O[发送给供应商确认]
    O --> P{供应商确认}
    P -->|供应商拒绝/修改| Q[重新协商]
    Q --> O
    P -->|供应商接受| R[采购订单状态→已确认]

    R --> S[跟踪供应商发货]
    S --> T{是否按时发货?}
    T -->|逾期未发| U[发送催货提醒]
    U --> S
    T -->|已发货| V[更新物流单号<br/>进入在途状态]

    V --> W[货物到达仓库]
    W --> X[仓库执行入库验收<br/>数量核对/质量抽检]
    X --> Y{验收结果}
    Y -->|部分不合格| Z[填写退货单<br/>走采购退货流程]
    Y -->|全部合格| AA[入库完成<br/>库存增加]
    Z & AA --> AB[生成对账单]
    AB --> AC[财务审核确认]
    AC --> AD([付款处理<br/>采购单关闭])

7.2.2 采购退货流程

flowchart LR
    A([发现质量问题<br/>/发货错误]) --> B[仓库填写退货申请<br/>注明退货原因和数量]
    B --> C[采购主管审核]
    C -->|不通过| D([驳回,保留证据])
    C -->|通过| E[通知供应商]
    E --> F{供应商响应}
    F -->|同意退货| G[生成退货出库单]
    F -->|拒绝退货| H[上报采购主管协商]
    G --> I[仓库扫描出库]
    I --> J[供应商签收确认]
    J --> K[财务处理退款<br/>或冲抵下次货款]
    K --> L([更新库存<br/>关闭退货单])

7.3 功能需求详细说明

FR-PMS-001:采购申请单

  • 申请人填写:物料(从商品库搜索 SKU)、需求数量、期望到货仓库、期望到货日期、申请原因;
  • 支持批量添加物料(Excel 导入模板);
  • 申请提交后,系统根据金额自动分配到对应审批人;
  • 审批人在移动端也可完成审批操作。

FR-PMS-002:询价管理

  • 支持同时向最多 10 个供应商发起询价;
  • 询价单包含:物料规格、数量、要求交期、目标价格、有效期;
  • 供应商通过 Portal 在线回复报价;
  • 系统自动生成对比表,标注最低价和历史最优价差异。

FR-PMS-003:采购订单管理

  • 采购单唯一编号格式:PO-YYYYMMDD-XXXXX(如 PO-20250417-00001);
  • 支持部分到货:一张采购单可多次入库,系统自动核算已到/未到数量;
  • 采购单支持打印(PDF 格式,含二维码用于手机扫描查看详情);
  • 关键节点时间节点记录:下单时间、确认时间、发货时间、入库时间、付款时间。

FR-PMS-004:应付账款管理

  • 自动根据采购单和账期天数计算应付款到期日;
  • 到期前 7 天发送提醒通知(站内信 + 邮件);
  • 支持批量付款操作,生成付款记录;
  • 应付账款汇总报表:按供应商、时间段显示待付/已付/逾期金额。

7.4 核心数据模型

-- 采购订单主表
CREATE TABLE pms_purchase_order (
    id              BIGINT PRIMARY KEY,
    tenant_id       BIGINT NOT NULL,
    po_code         VARCHAR(32) NOT NULL COMMENT '采购单号',
    supplier_id     BIGINT NOT NULL COMMENT '供应商ID',
    warehouse_id    BIGINT NOT NULL COMMENT '目标仓库ID',
    total_amount    DECIMAL(12,2) NOT NULL COMMENT '采购总金额',
    currency        VARCHAR(8) DEFAULT 'CNY' COMMENT '货币',
    status          TINYINT NOT NULL COMMENT '状态:1草稿2待审批3已审批4已确认5部分到货6全部到货7已付款8已关闭9已取消',
    payment_type    TINYINT COMMENT '付款方式:1现购2赊购',
    payment_days    TINYINT COMMENT '账期天数',
    due_date        DATE COMMENT '应付款到期日',
    expected_date   DATE COMMENT '期望到货日期',
    remark          VARCHAR(500),
    deleted         TINYINT(1) DEFAULT 0,
    created_by      BIGINT,
    created_time    DATETIME,
    updated_by      BIGINT,
    updated_time    DATETIME,
    INDEX idx_tenant_status (tenant_id, status),
    INDEX idx_po_code (tenant_id, po_code),
    INDEX idx_supplier (tenant_id, supplier_id)
) COMMENT '采购订单主表';

-- 采购订单明细表
CREATE TABLE pms_purchase_order_item (
    id              BIGINT PRIMARY KEY,
    po_id           BIGINT NOT NULL COMMENT '采购单ID',
    sku_id          BIGINT NOT NULL COMMENT 'SKU ID',
    sku_name        VARCHAR(200) NOT NULL COMMENT 'SKU名称快照',
    quantity        INT NOT NULL COMMENT '采购数量',
    received_qty    INT DEFAULT 0 COMMENT '已到货数量',
    unit_price      DECIMAL(10,4) NOT NULL COMMENT '含税单价',
    amount          DECIMAL(12,2) NOT NULL COMMENT '行金额',
    INDEX idx_po_id (po_id)
) COMMENT '采购订单明细';

7.5 验收标准

编号验收项验收条件优先级
PMS-01审批路由金额 < 1 万的采购申请,直接流转至采购专员;≥ 10 万的申请,流转至租户管理员,不可跳过中间层级P0
PMS-02库存联动采购单状态变为”全部到货”后,对应 SKU 库存数量自动增加,误差为 0P0
PMS-03状态回滚采购单取消时,若已触发库存预占,库存预占数量自动回滚P0
PMS-04部分收货一张 100 件的采购单,支持分 3 次(50+30+20 件)分批入库,最终状态变为”全部到货”P0
PMS-05到期提醒应付款到期前 7 天,财务人员收到站内信和邮件双渠道通知P1
PMS-06并发安全同一采购单同时被两个用户操作(一人确认、一人取消),系统不出现数据不一致P0
PMS-07报表准确采购统计报表中的总金额与采购单明细金额逐条核对,误差为零P1

8. 仓储管理模块(WMS)

8.1 模块概述

仓储管理模块(WMS)是供应链的核心枢纽,管理货物从入库到出库的全部仓内操作,包括收货、上架、拣货、包装、发货、盘点等。本模块的数据准确性直接决定订单履约率和财务核算的准确性,是整个供应链系统最关键的基础数据层。

8.2 仓库体系结构

仓库(Warehouse)
└── 区域(Zone):收货区/存储区/拣选区/退货区/危险品区
    └── 排(Row):A/B/C/D...
        └── 列(Column):01/02/03...
            └── 层(Level):1/2/3/4/5
                └── 格(Cell):库位(如 A-03-2-4 = A排第3列第2层第4格)

8.3 库存状态定义

库存状态说明触发条件
可用库存可供正常销售和发货的库存入库验收完成后
冻结库存已被订单占用,等待发货的库存订单确认,扣减可用并冻结
在途库存已采购但尚未到仓的库存采购单确认后
预占库存采购计划中预计采购的数量补货申请审批通过后
残次库存质检不合格或破损的商品库存入库质检发现问题或退货质检后

库存公式:

实物库存 = 可用库存 + 冻结库存 + 残次库存
账面库存 = 可用库存 + 冻结库存 + 在途库存

8.4 业务流程

8.4.1 入库全流程

flowchart TD
    A([入库单来源]) --> A1[采购入库单<br/>关联采购订单]
    A --> A2[调拨入库单<br/>来自其他仓库]
    A --> A3[退货入库单<br/>买家退货]
    A --> A4[盘盈入库单<br/>盘点发现多余]

    A1 & A2 & A3 & A4 --> B[仓库创建入库任务]
    B --> C[货物到达仓库]
    C --> D[收货员扫描/录入箱号或运单号]
    D --> E[核对入库单:<br/>品名/数量/外包装状态]
    E --> F{外包装异常?}
    F -->|有破损| G[拍照记录<br/>标记异常]
    G --> H[质检员进行质量抽检]
    F -->|完好| H

    H --> I{质检结果}
    I -->|不合格| J[生成质检不合格报告]
    J --> K{处理决策}
    K -->|退货供应商| L[创建采购退货单]
    K -->|降级处理| M[标记为残次品入库]
    I -->|合格| N[确认收货数量]

    L & M & N --> O[执行上架操作]
    O --> P{是否有指定库位?}
    P -->|有系统推荐库位| Q[按推荐库位上架]
    P -->|无推荐/无空位| R[仓管手动指定库位]
    Q & R --> S[扫描库位码确认]
    S --> T[系统更新库存]
    T --> U{采购单全部入库?}
    U -->|否,部分入库| V["更新采购单为「部分到货」"]
    U -->|是| W["更新采购单为「全部到货」"]
    V & W --> X([入库流程结束<br/>触发财务记账])

8.4.2 出库全流程

flowchart TD
    A([出库触发]) --> A1[销售出库<br/>来自OMS订单]
    A --> A2[调拨出库<br/>移库指令]
    A --> A3[报损出库<br/>残次品处理]

    A1 & A2 & A3 --> B[系统生成出库单]
    B --> C[生成拣货单]
    C --> D{拣货模式}
    D -->|单单拣货| E[按订单拣货]
    D -->|波次拣货| F[合并多单统一拣货<br/>提升效率]

    E & F --> G[按系统推荐拣货路径<br/>最短路径算法]
    G --> H[扫描库位码确认]
    H --> I[扫描商品条码<br/>核对数量]
    I --> J{数量匹配?}
    J -->|不匹配| K[异常上报<br/>仓管处理]
    J -->|匹配| L{是否全部拣完?}
    L -->|否| H
    L -->|是| M[商品移至打包区]

    M --> N[称重打包]
    N --> O[打印物流面单]
    O --> P[扫描面单与订单绑定]
    P --> Q[库存由冻结→出库完成]
    Q --> R(["订单状态变更为「已发货」<br/>物流轨迹开始更新"])

8.4.3 库存盘点流程

flowchart LR
    A([盘点发起]) --> B{盘点类型}
    B -->|全盘| C[系统锁定全部库位<br/>禁止出入库操作]
    B -->|抽盘| D[选择指定库位或品类<br/>仅锁定选中库位]
    B -->|循环盘点| E[按库位分批次<br/>不影响整体操作]

    C & D & E --> F[生成盘点任务单]
    F --> G[盘点员持手持终端<br/>扫描库位码]
    G --> H[清点实际数量<br/>系统记录]
    H --> I{是否盘完?}
    I -->|否| G
    I -->|是| J[系统对比账面库存与实盘数量]
    J --> K{是否有差异?}
    K -->|无差异| L[盘点完成确认]
    K -->|有差异| M[生成盘点差异报告]
    M --> N[仓储主管审核差异原因]
    N --> O{差异处理}
    O -->|盘盈| P[生成盘盈入库单<br/>正向调整库存]
    O -->|盘亏| Q[生成盘亏出库单<br/>负向调整库存<br/>计入损耗]
    P & Q & L --> R([解除库位锁定<br/>库存正式更新])

8.5 功能需求详细说明

FR-WMS-001:库位管理

  • 系统维护完整的库位树结构;
  • 每个库位维护属性:容积、载重限制、适用温度、状态(空闲/占用/锁定/禁用);
  • 支持批量创建库位(如一次创建整排库位);
  • 库位支持二维码打印(贴于实物库位上,手持终端扫描使用)。

FR-WMS-002:库存管理

  • 库存精确到 SKU + 仓库 + 库位 三个维度;
  • 每次库存变动必须记录库存流水(类型、数量、变动前后库存、关联单号、操作人、时间);
  • 支持查看任意时间点的历史库存快照;
  • 库存预警:可用库存 ≤ 安全库存时,颜色高亮并推送通知;可用库存为 0 时,自动触发商品在相关平台下架(需平台接口支持)。

FR-WMS-003:智能上架推荐

  • 上架时,系统根据以下规则推荐库位:
    1. 同 SKU 已有库存的相邻库位(集中存储,减少拣货路径);
    2. 空闲库位中距拣货口最近的(减少拣货行走距离);
    3. 满足货物重量和体积限制的库位。

FR-WMS-004:库存冻结与释放

  • 订单确认时,实时从可用库存中划拨至冻结库存;
  • 若可用库存不足,订单进入”缺货待处理”状态,不强制冻结;
  • 订单取消/退款时,已冻结库存自动回归可用库存;
  • 冻结和释放操作必须在同一数据库事务中执行,保证原子性。

8.6 核心数据模型

-- 库存主表(多仓多SKU)
CREATE TABLE wms_inventory (
    id              BIGINT PRIMARY KEY,
    tenant_id       BIGINT NOT NULL,
    warehouse_id    BIGINT NOT NULL COMMENT '仓库ID',
    location_id     BIGINT COMMENT '库位ID(NULL表示仓库级别)',
    sku_id          BIGINT NOT NULL COMMENT 'SKU ID',
    available_qty   INT DEFAULT 0 COMMENT '可用库存',
    frozen_qty      INT DEFAULT 0 COMMENT '冻结库存',
    in_transit_qty  INT DEFAULT 0 COMMENT '在途库存',
    defective_qty   INT DEFAULT 0 COMMENT '残次库存',
    safety_stock    INT DEFAULT 0 COMMENT '安全库存',
    created_time    DATETIME,
    updated_time    DATETIME,
    UNIQUE KEY uk_warehouse_location_sku (warehouse_id, location_id, sku_id),
    INDEX idx_tenant_sku (tenant_id, sku_id)
) COMMENT '库存主表';

-- 库存流水表
CREATE TABLE wms_inventory_log (
    id              BIGINT PRIMARY KEY,
    tenant_id       BIGINT NOT NULL,
    inventory_id    BIGINT NOT NULL COMMENT '库存ID',
    sku_id          BIGINT NOT NULL,
    warehouse_id    BIGINT NOT NULL,
    change_type     VARCHAR(32) NOT NULL COMMENT '变动类型:PURCHASE_IN/SALE_OUT/TRANSFER_IN/...',
    change_qty      INT NOT NULL COMMENT '变动数量(正入负出)',
    before_qty      INT NOT NULL COMMENT '变动前可用库存',
    after_qty       INT NOT NULL COMMENT '变动后可用库存',
    ref_order_id    BIGINT COMMENT '关联单据ID',
    ref_order_type  VARCHAR(32) COMMENT '关联单据类型',
    remark          VARCHAR(200),
    created_by      BIGINT,
    created_time    DATETIME,
    INDEX idx_tenant_sku_time (tenant_id, sku_id, created_time),
    INDEX idx_inventory_id (inventory_id)
) COMMENT '库存流水';

8.7 验收标准

编号验收项验收条件优先级
WMS-01库存原子性并发 100 个请求同时扣减同一 SKU 库存(每次扣 1),库存初始为 50,最终库存必须精确为 0,不可出现负库存P0
WMS-02流水完整性任意一次库存变动,库存流水表必须有对应记录,缺失率为 0P0
WMS-03盘点准确盘盈/盘亏调整后,账面库存与实物库存完全一致P0
WMS-04拣货路径波次拣货路径生成时间 ≤ 2 秒(100 单以内)P1
WMS-05预警触发库存低于安全库存时,5 分钟内向采购负责人推送通知P1
WMS-06入库效率单次扫码入库操作(从扫描条码到系统响应)≤ 1 秒P1
WMS-07历史快照查询任意历史日期的库存数量,数据来源于流水表计算,准确率 100%P2

9. 商品管理模块(PIM)

9.1 模块概述

商品管理模块(PIM)是系统的商品信息中枢,统一管理跨平台销售商品的全部基础信息,包括多语言内容、规格属性、价格体系、图片资产和平台类目映射。PIM 的数据为 OMS、WMS、FMS 等模块提供商品基础数据服务。

9.2 商品数据结构

品类(Category)—— 树形无限级
└── SPU(标准产品单元)—— 如"圆领棉质T恤"
    ├── 商品属性(公共属性):材质、适用性别、适用季节
    ├── 商品规格(规格项):颜色(红/蓝/黑)× 尺码(S/M/L/XL)
    └── SKU(最小库存单元)—— 如"红色M码圆领棉质T恤"
        ├── SKU编码(自动生成)
        ├── FNSKU(亚马逊条码)
        ├── 条形码(EAN/UPC)
        ├── 采购成本价
        ├── 建议售价(多货币)
        └── 重量/体积信息

9.3 多语言内容管理

内容字段支持语言备注
商品名称中/英/日/韩/西班牙/法/德不同平台店铺使用对应语言
商品描述中/英/日/韩/西班牙/法/德富文本格式
规格名称中/英如”颜色”/“Color”
规格值中/英如”宝石蓝”/“Sapphire Blue”

FR-PIM-001:多语言存储方案

  • 商品名称和描述存储在独立的 pim_spu_i18n 国际化表中;
  • 主表存储默认语言(中文)内容;
  • 查询时根据当前用户语言设置或指定语言 Code 查询对应翻译内容。

FR-PIM-002:价格体系

价格类型说明必填
采购成本价采购入库时的平均成本,自动由采购模块更新(移动加权平均法)
建议零售价(RRP)官方建议售价,用于显示划线价
平台售价在各平台实际的挂牌价格,支持多货币是(有店铺时)
会员价对会员/批发商的特殊价格

FR-PIM-003:HS Code 管理

  • 每个 SPU 必须填写 HS Code(6 位国际通用,后可扩展至 8-10 位各国细分);
  • 系统内置 HS Code 搜索功能,支持按关键词搜索商品描述找到对应编码;
  • HS Code 影响关税税率,与 TMS 模块报关数据联动。

9.4 核心数据模型

-- 商品SPU主表
CREATE TABLE pim_spu (
    id              BIGINT PRIMARY KEY,
    tenant_id       BIGINT NOT NULL,
    spu_code        VARCHAR(32) NOT NULL COMMENT 'SPU编码',
    spu_name        VARCHAR(200) NOT NULL COMMENT '默认语言名称(中文)',
    category_id     BIGINT NOT NULL COMMENT '品类ID',
    hs_code         VARCHAR(16) COMMENT '海关编码',
    brand           VARCHAR(100) COMMENT '品牌',
    status          TINYINT DEFAULT 1 COMMENT '状态:1草稿2已上架3已下架',
    main_image      VARCHAR(500) COMMENT '主图URL',
    description     TEXT COMMENT '默认语言描述',
    created_by      BIGINT,
    created_time    DATETIME,
    updated_by      BIGINT,
    updated_time    DATETIME,
    deleted         TINYINT(1) DEFAULT 0,
    INDEX idx_tenant_category (tenant_id, category_id),
    INDEX idx_spu_code (tenant_id, spu_code)
) COMMENT '商品SPU主表';

-- SKU明细表
CREATE TABLE pim_sku (
    id              BIGINT PRIMARY KEY,
    tenant_id       BIGINT NOT NULL,
    spu_id          BIGINT NOT NULL COMMENT 'SPU ID',
    sku_code        VARCHAR(64) NOT NULL COMMENT 'SKU编码',
    sku_name        VARCHAR(300) NOT NULL COMMENT 'SKU完整名称',
    barcode         VARCHAR(64) COMMENT 'EAN/UPC条形码',
    fnsku           VARCHAR(32) COMMENT '亚马逊FNSKU',
    spec_values     JSON COMMENT '规格值 {"颜色":"红色","尺码":"M"}',
    cost_price      DECIMAL(10,4) DEFAULT 0 COMMENT '采购成本价(移动加权平均)',
    suggest_price   DECIMAL(10,4) COMMENT '建议售价(CNY)',
    weight          DECIMAL(8,3) COMMENT '重量(kg)',
    length          DECIMAL(8,2) COMMENT '长(cm)',
    width           DECIMAL(8,2) COMMENT '宽(cm)',
    height          DECIMAL(8,2) COMMENT '高(cm)',
    status          TINYINT DEFAULT 1 COMMENT '状态:1启用2停用',
    deleted         TINYINT(1) DEFAULT 0,
    created_time    DATETIME,
    updated_time    DATETIME,
    UNIQUE KEY uk_tenant_sku_code (tenant_id, sku_code),
    INDEX idx_spu_id (spu_id)
) COMMENT 'SKU明细';

9.5 验收标准

编号验收项验收条件优先级
PIM-01规格生成SKUSPU 配置 3 种颜色 × 4 种尺码,系统自动生成 12 个 SKU,编码规则符合规范P0
PIM-02多语言切换界面语言切换为英文后,商品名称和描述显示为英文翻译内容,中文内容不显示P0
PIM-03成本价联动采购单确认入库后,SKU 成本价按移动加权平均法自动更新,误差 ≤ 0.01 元P0
PIM-04图片管理单个 SPU 可上传最多 9 张图片,支持拖拽排序,主图标记唯一P1
PIM-05批量导入Excel 批量导入 500 条 SKU,成功率 100%,用时 ≤ 30 秒,失败行数据报告明确P1

10. 订单管理模块(OMS)

10.1 模块概述

订单管理模块(OMS)是连接前端销售平台与后端供应链的核心枢纽,负责从多个电商平台聚合订单,完成订单路由、库存分配、指导仓库履约,并全程跟踪订单状态至交付完成。

10.2 订单状态全集

stateDiagram-v2
    [*] --> 待支付 : 平台推送/拉取到新订单
    待支付 --> 已支付 : 买家完成支付
    待支付 --> 已取消 : 超时未支付自动取消
    已支付 --> 待备货 : 库存充足,自动路由仓库
    已支付 --> 缺货待处理 : 库存不足
    缺货待处理 --> 待备货 : 紧急补货或人工调配
    缺货待处理 --> 已取消 : 长时间无法履约,退款
    待备货 --> 备货中 : 仓库接单,生成拣货单
    备货中 --> 待发货 : 拣货打包完成
    待发货 --> 已发货 : 面单打印,交运物流商
    已发货 --> 运输中 : 物流商扫描揽件
    运输中 --> 已签收 : 买家签收确认
    运输中 --> 物流异常 : 超期未更新轨迹/拒收/丢失
    物流异常 --> 运输中 : 问题解决,继续运输
    物流异常 --> 退款退货中 : 买家申请退款
    已签收 --> 售后处理中 : 买家申请退货(签收后N天内)
    已签收 --> 已完成 : 超过售后期,自动完结
    售后处理中 --> 退款退货中 : 卖家同意退货
    售后处理中 --> 已完成 : 卖家拒绝,买家放弃
    退款退货中 --> 已退款 : 退款到账
    已取消 --> [*]
    已完成 --> [*]
    已退款 --> [*]

10.3 业务流程

10.3.1 多平台订单聚合与路由

flowchart TD
    A([平台订单到达]) --> B{同步模式}
    B -->|定时拉取| C[每5分钟轮询各平台API]
    B -->|实时推送| D[Webhook回调接收]
    C & D --> E[订单数据标准化处理]
    E --> F{去重判断<br/>订单号+平台}
    F -->|重复订单| G([丢弃,记录日志])
    F -->|新订单| H[保存原始订单数据]
    H --> I[解析订单商品<br/>映射到本地SKU]
    I --> J{SKU映射成功?}
    J -->|失败| K[进入人工处理队列<br/>通知运营人员]
    J -->|成功| L{库存路由计算}
    L --> M{库存充足?}
    M -->|否| N["标记「缺货待处理」<br/>触发补货预警"]
    M -->|是| O{多仓库判断}
    O -->|只有一个可用仓库| P[直接分配]
    O -->|多个可用仓库| Q[按优先级选仓<br/>1.目的地最近仓<br/>2.库存最充足仓<br/>3.成本最低仓]
    P & Q --> R[冻结库存<br/>推送仓库履约任务]
    R --> S([订单状态→待备货<br/>仓库收到备货任务])

10.3.2 退款退货(售后)流程

flowchart TD
    A([买家在平台申请退货退款]) --> B[平台通知同步至OMS]
    B --> C{退款类型}
    C -->|仅退款(无需退货)| D[卖家审核<br/>核实理由]
    C -->|退货退款| E[卖家审核<br/>确认退货地址]

    D -->|同意| F[生成退款记录<br/>提交平台退款]
    D -->|拒绝| G([发送拒绝原因<br/>买家可申诉])

    E -->|同意| H[向买家提供退货物流标签/地址]
    H --> I[买家寄回货物]
    I --> J[仓库收到退货]
    J --> K[质检退回商品]
    K --> L{质检结果}
    L -->|完好可二次销售| M[退货入库<br/>增加可用库存]
    L -->|轻微瑕疵| N[入残次品库位]
    L -->|严重损坏| O[拍照记录,计入损耗]
    M & N & O --> P[生成退款记录<br/>提交平台退款]

    F & P --> Q{退款金额计算}
    Q --> Q1[原售价]
    Q --> Q2[减:平台不退的手续费(如有)]
    Q --> Q3[减:买家原因的退货物流费(如有)]
    Q1 & Q2 & Q3 --> R[确认退款金额]
    R --> S([执行退款<br/>更新财务记录])

10.4 订单拆分规则

场景拆分规则
多仓库库存订单中 A 商品在仓库 1,B 商品在仓库 2,自动拆分为 2 个子订单分别发货
超重/超体积单件商品超过物流渠道限重,需拆分为多个包裹(不拆订单,生成多个运单)
含限制品订单中含带电/液体商品,需从普通渠道中拆出,走专项渠道
买家要求分发买家备注指定分批发货(一般用于预售或礼品场景)

10.5 核心数据模型

-- 订单主表
CREATE TABLE oms_order (
    id              BIGINT PRIMARY KEY,
    tenant_id       BIGINT NOT NULL,
    order_no        VARCHAR(64) NOT NULL COMMENT '本系统订单号',
    platform_order_no VARCHAR(100) NOT NULL COMMENT '平台订单号',
    platform        VARCHAR(32) NOT NULL COMMENT '平台:AMAZON/SHOPEE/TIKTOK/...',
    shop_id         BIGINT NOT NULL COMMENT '店铺ID',
    buyer_name      VARCHAR(100) COMMENT '买家名称',
    buyer_email     VARCHAR(200) COMMENT '买家邮箱(加密存储)',
    receiver_country VARCHAR(8) NOT NULL COMMENT '目的国(ISO 3166-1 alpha-2)',
    receiver_address TEXT COMMENT '收件地址(加密存储)',
    currency        VARCHAR(8) NOT NULL COMMENT '结算货币',
    total_amount    DECIMAL(12,2) NOT NULL COMMENT '订单总金额',
    platform_fee    DECIMAL(10,2) DEFAULT 0 COMMENT '平台手续费',
    status          TINYINT NOT NULL COMMENT '订单状态枚举',
    warehouse_id    BIGINT COMMENT '分配的仓库ID',
    paid_time       DATETIME COMMENT '支付时间',
    shipped_time    DATETIME COMMENT '发货时间',
    signed_time     DATETIME COMMENT '签收时间',
    cancel_reason   VARCHAR(200) COMMENT '取消原因',
    remark          VARCHAR(500),
    created_time    DATETIME,
    updated_time    DATETIME,
    UNIQUE KEY uk_platform_order (platform, platform_order_no, tenant_id),
    INDEX idx_tenant_status (tenant_id, status),
    INDEX idx_tenant_paid_time (tenant_id, paid_time)
) COMMENT '订单主表';

10.6 验收标准

编号验收项验收条件优先级
OMS-01订单同步订单从平台产生到系统同步完成,延迟 ≤ 5 分钟(定时模式)或 ≤ 30 秒(Webhook 模式)P0
OMS-02库存防超卖并发 200 个请求同时对同一 SKU 下单(库存 100),最终确认订单数 ≤ 100,无负库存P0
OMS-03退款准确退款金额计算经过测试用例验证(含平台手续费扣除),误差为 0P0
OMS-04状态不逆流已签收订单不可回到”运输中”状态,状态机校验必须有效P0
OMS-05拆单含多仓库库存的订单,自动拆分为子订单并独立追踪,总金额与明细金额一致P0
OMS-06异常处理SKU 映射失败的订单,进入人工处理队列,5 分钟内通知负责人,不影响其他订单处理P1
OMS-07日处理量单租户每日订单处理量 ≥ 50,000 单,高峰期(TPS)≥ 100 单/秒P1

11. 物流管理模块(TMS)

11.1 模块概述

物流管理模块(TMS)负责管理货物从仓库出门到买家签收的全程运输管理,包括物流商和渠道管理、运单自动分配、面单打印、物流轨迹追踪、运费核算以及异常物流处理。

11.2 跨境物流渠道体系

物流商(Carrier)
└── 渠道(Channel)
    ├── 适用条件:目的国范围、重量范围、品类限制(带电/液体/危险品)
    ├── 时效承诺:3-5工作日 / 7-15工作日
    ├── 计费规则:首重价格、续重价格、燃油附加费、操作费
    └── API对接:面单获取URL、轨迹查询URL、认证信息

11.3 业务流程

11.3.1 运单自动分配流程

flowchart TD
    A([仓库备货完成<br/>触发运单分配]) --> B[读取订单信息<br/>目的国/商品/重量/货值]
    B --> C[过滤不可用渠道]
    C --> C1{有无禁运品?}
    C1 -->|含带电品| D1[排除不支持带电的渠道]
    C1 -->|含液体| D2[排除不支持液体的渠道]
    C1 -->|普通商品| D3[全部渠道可选]
    D1 & D2 & D3 --> E[过滤目的国不支持的渠道]
    E --> F[过滤重量超限的渠道]
    F --> G{剩余可用渠道数量}
    G -->|0个| H([报警!无可用渠道<br/>推送给物流专员人工处理])
    G -->|1个| I[直接选择该渠道]
    G -->|多个| J{分配策略}
    J -->|时效优先| K[选择时效最短的渠道]
    J -->|成本优先| L[选择预估运费最低的渠道]
    J -->|均衡模式| M[综合时效和成本评分选最优]
    I & K & L & M --> N[调用物流商API<br/>创建运单]
    N --> O{API调用成功?}
    O -->|失败| P[重试3次]
    P -->|仍失败| Q([切换备选渠道<br/>记录异常日志])
    O & P -->|成功| R[获取面单文件URL和运单号]
    R --> S[保存运单信息]
    S --> T(["更新订单状态为「已发货」<br/>面单可打印"])

11.3.2 物流轨迹追踪流程

flowchart LR
    A([定时任务<br/>每小时执行]) --> B[查询状态为运输中的运单]
    B --> C[按物流商批量调用轨迹API]
    C --> D[解析轨迹数据]
    D --> E[标准化轨迹事件<br/>统一事件描述格式]
    E --> F{是否有新轨迹?}
    F -->|无更新| G([记录日志,结束])
    F -->|有更新| H[保存新轨迹记录]
    H --> I{最新轨迹状态}
    I -->|已签收| J[更新订单状态为已签收]
    I -->|拒收| K[触发异常处理<br/>通知售后团队]
    I -->|清关扣押| L[触发预警<br/>通知物流专员]
    I -->|超X天无更新| M[触发停滞预警]
    J & K & L & M --> N([推送通知到相关责任人])

11.4 运费计算规则

预估运费计算:

1. 计算计费重量:
   - 实重 = 商品重量(kg)
   - 材积重 = 长(cm) × 宽(cm) × 高(cm) / 5000
   - 计费重量 = MAX(实重, 材积重)

2. 运费计算:
   - 若计费重量 ≤ 首重:运费 = 首重价格
   - 若计费重量 > 首重:运费 = 首重价格 + (计费重量 - 首重) × 续重单价

3. 附加费:
   - 燃油附加费 = 运费 × 燃油附加费率(每月更新)
   - 操作费(固定值,按渠道配置)
   - 远端附加费(部分偏远地区)

4. 总预估运费 = 运费 + 燃油附加费 + 操作费 + 远端附加费

11.5 验收标准

编号验收项验收条件优先级
TMS-01渠道自动分配满足条件的订单,在仓库备货完成后 30 秒内自动完成渠道分配并生成运单P0
TMS-02面单打印批量打印 100 张面单(PDF),生成时间 ≤ 30 秒,面单内容完整(条码清晰可扫)P0
TMS-03轨迹更新轨迹数据更新延迟 ≤ 1 小时(依赖物流商API频率)P1
TMS-04异常预警运单超过 5 个自然日无轨迹更新,系统自动预警,物流专员在 1 小时内收到通知P1
TMS-05运费计算随机抽取 100 个运单,预估运费与实际收费的误差率 ≤ 10%P2
TMS-06无可用渠道当无可用渠道时,订单不进入已发货状态,系统推送人工处理提醒P0

12. 财务结算模块(FMS)

12.1 模块概述

财务结算模块(FMS)负责跨境业务的资金流管理,包括多货币收款对账、平台结算报告解析、SKU 级别利润核算、应付账款管理和财务报表生成。

12.2 利润核算体系

销售额(平台结算金额)
  - 平台手续费(Commission)
  - FBA 仓储费/配送费(如适用)
  - 广告费(ACOS)
= 平台净收入
  - 商品采购成本(COGS)
  - 头程物流费(入仓运费)
  - 本地物流费(非FBA发货运费)
= 毛利润(Gross Profit)
  - 退货损耗(退货率 × 单品成本)
  - 人工/运营成本(按SKU分摊)
  - 汇率损益(CNY换算差值)
= 净利润(Net Profit)

12.3 业务流程

12.3.1 平台结算对账流程

flowchart TD
    A([每两周一次<br/>亚马逊生成结算报告]) --> B[卖家下载Settlement Report CSV]
    B --> C[上传至系统]
    C --> D[系统解析CSV文件<br/>字段映射]
    D --> E[清洗数据<br/>处理空字段/格式异常]
    E --> F[按事件类型分类<br/>销售/退款/广告/FBA费/其他]
    F --> G[与系统内订单数据核对]
    G --> H{对账差异检查}
    H -->|金额完全一致| I[标记对账通过<br/>更新订单结算状态]
    H -->|存在差异| J[生成差异报告]
    J --> K[差异原因分类<br/>1.系统未收录订单<br/>2.金额计算不同<br/>3.退款时间差]
    K --> L[财务人员人工审核]
    L --> M{处理结果}
    M -->|已解释清楚| N[标记已审核<br/>备注差异原因]
    M -->|需联系平台| O[提交平台客服工单]
    I & N --> P([更新应收款状态<br/>推进后续付款流程])

12.4 多货币处理规范

  • 所有金额字段均存储原始货币金额折合人民币金额两个字段;
  • 汇率数据每天 00:00 自动从汇率 API(如 ExchangeRate-API)同步更新;
  • 每笔交易使用交易发生时的当日汇率进行折算,并记录使用的汇率快照;
  • 汇率快照单独存储在 fin_currency_rate 表中,不可事后修改(审计要求)。

12.5 验收标准

编号验收项验收条件优先级
FMS-01对账解析上传亚马逊标准 Settlement Report(约 5000 行),解析成功率 ≥ 99.9%,用时 ≤ 60 秒P0
FMS-02利润计算随机抽取 50 个订单,系统计算利润与手工核算结果误差为 0(精确到分)P0
FMS-03汇率快照历史订单的汇率折算使用交易当天的汇率,修改当前汇率不影响历史记录P0
FMS-04多货币展示报表支持按 CNY/USD/EUR/GBP 切换展示,金额自动换算P1
FMS-05付款提醒应付款到期前 7 天,财务负责人收到提醒;到期当天仍未付款,每天提醒一次P1

13. 数据分析与智能决策模块(BIS)

13.1 核心 KPI 指标体系

指标名称计算公式刷新频率所属模块
库存周转率销售成本 / 平均库存价值每日WMS + FMS
订单履约率(OTD)按时履约订单数 / 总订单数 × 100%实时OMS + TMS
采购准时到货率按时到货采购单数 / 总采购单数 × 100%每日PMS
缺货率因库存不足取消的订单数 / 总订单数 × 100%每日OMS + WMS
退货率退货订单数 / 总订单数 × 100%每日OMS
SKU 毛利率(销售额 - COGS - 物流费 - 平台费) / 销售额 × 100%每日FMS
广告 ACOS广告花费 / 广告产生销售额 × 100%每日(导入)FMS
供应商准时率供应商按时交货次数 / 总交货次数 × 100%每月SRM + PMS

13.2 智能补货算法

补货建议触发条件:可用库存 ≤ 安全库存

安全库存计算:
  安全库存 = 平均日销量 × 补货周期天数 × 安全系数
  
  - 平均日销量:过去 30 天销量 / 30
  - 补货周期:供应商生产周期 + 头程物流时间(天)
  - 安全系数:1.2~1.5(根据商品销量波动系数自动调整)

建议采购数量:
  建议数量 = (目标库存天数 × 平均日销量) - (可用库存 + 在途库存)
  目标库存天数 = 补货周期天数 × 1.5(预留缓冲)

13.3 AI 智能分析功能

FR-BIS-AI-001:自然语言数据查询

  • 用户输入自然语言问题(如”上个月哪 5 个 SKU 利润最高?”);
  • 系统通过大模型(接入 DeepSeek/OpenAI API)将问题转化为 SQL 查询;
  • SQL 执行后,大模型将结果用自然语言描述并返回;
  • 安全限制:仅允许 SELECT 查询,SQL 经过白名单验证,禁止写操作。

FR-BIS-AI-002:异常智能诊断

  • 当 KPI 指标出现异常波动(如退货率突然上升 20%),系统自动触发诊断;
  • 大模型分析关联维度(时间、SKU、地区、物流渠道)给出可能原因;
  • 以诊断报告形式推送给负责人。

13.4 验收标准

编号验收项验收条件优先级
BIS-01KPI仪表板首页 Dashboard 8 个核心 KPI 数据,页面加载完成时间 ≤ 3 秒P0
BIS-02补货建议补货建议数量计算结果与手工按公式计算结果误差为 0P1
BIS-03报表导出利润报表导出 Excel(12 个月 × 所有 SKU),导出时间 ≤ 60 秒,数据完整P1
BIS-04AI查询自然语言查询响应时间 ≤ 10 秒,查询结果准确率(测试集)≥ 80%P2

14. 系统安全与权限控制

14.1 认证与授权

认证方案: Sa-Token + Redis 分布式登录态认证(随机 Token 为主,JWT 仅作为跨系统身份传递扩展)

配置项
Access Token 有效期2 小时
Refresh Token 有效期7 天
算法HMAC-SHA256
Token 存储前端 localStorage,服务端 Redis 黑名单
强制下线将 Token 加入 Redis 黑名单,TTL = 剩余有效时间

14.2 接口安全防护

flowchart LR
    A([API请求]) --> B[Nginx层<br/>HTTPS/IP黑名单]
    B --> C[网关层<br/>Token校验]
    C --> D{Token有效?}
    D -->|无效| E([返回401])
    D -->|有效| F[频率限制检查<br/>同一IP/用户N次/分钟]
    F -->|超限| G([返回429 Too Many Requests])
    F -->|未超限| H[租户权限检查<br/>tenant_id校验]
    H --> I[角色权限检查<br/>@SaCheckPermission]
    I -->|无权限| J([返回403])
    I -->|有权限| K[业务处理]
    K --> L[请求参数过滤<br/>XSS/SQL注入防护]
    L --> M([返回响应])

14.3 数据安全规范

数据类型处理方式
用户密码BCrypt 哈希存储,不可逆
银行账号AES-256 对称加密存储,查看时解密显示脱敏(前4后4)
买家地址AES-256 加密存储(GDPR 合规要求)
买家邮箱加密存储,前端显示脱敏(如 j***@gmail.com)
日志中的敏感字段脱敏后记录,不记录原始值

14.4 操作审计日志

覆盖范围: 所有 POST/PUT/DELETE 接口

审计记录内容:

{
  "id": "雪花ID",
  "tenantId": "租户ID",
  "userId": "操作用户ID",
  "userName": "操作用户名",
  "clientIp": "客户端IP",
  "requestUri": "/api/purchase/order/confirm",
  "requestMethod": "POST",
  "requestBody": "脱敏后的请求参数",
  "responseStatus": 200,
  "bizType": "采购单确认",
  "bizId": "采购单ID",
  "operateTime": "2025-04-17T10:30:00",
  "costTime": 120
}

14.5 验收标准

编号验收项验收条件优先级
SEC-01越权访问A 租户的 Token 请求 B 租户的数据,返回 403,无数据泄露P0
SEC-02SQL注入在查询参数中输入 ' OR 1=1 --,系统返回正常空结果,不执行恶意 SQLP0
SEC-03密码安全数据库中不存在任何明文密码,密码字段全部为 BCrypt 哈希值P0
SEC-04频率限制同一 IP 1 分钟内超过 100 次请求,返回 429,自动封禁 10 分钟P1
SEC-05审计日志任意删除操作在操作日志表中均有记录,缺失率为 0P0
SEC-06敏感字段脱敏日志文件和接口响应中,银行账号/买家邮箱均以脱敏形式展示P0

15. SaaS 运营管理后台

15.1 功能概述

运营后台(Platform Admin Console)是平台超级管理员和运营人员使用的管理界面,用于管理租户、套餐、系统公告和平台健康监控。

15.2 功能清单

功能模块功能点说明
租户管理租户列表/搜索按名称/状态/套餐/注册时间筛选
租户管理租户详情查看租户的用户数/订单数/存储用量等使用情况
租户管理手动调整套餐为租户临时升级套餐或延长试用期(如销售承诺)
租户管理强制下线对违规租户强制注销所有 Token
套餐管理套餐配置配置各套餐的功能开关、用量上限、价格
套餐管理价格调整修改套餐价格,不影响已订阅的租户(grandfathering)
系统公告发布公告按租户范围(全部/指定套餐/指定租户)发送系统通知
系统公告维护通知发布计划维护通知,自动在系统顶部展示 Banner
监控大盘系统健康CPU/内存/磁盘/数据库连接池实时监控
监控大盘业务监控实时订单量/接口成功率/平均响应时间
数据概览商业指标总租户数/活跃租户数/MRR/本月新增租户

16. 非功能性需求

16.1 性能需求

场景指标要求
普通列表查询(10万数据量)P99 响应时间 ≤ 500ms
订单创建(含库存扣减)P99 响应时间 ≤ 1000ms
文件上传(20MB)上传完成时间 ≤ 30 秒
数据分析报表生成P95 响应时间 ≤ 5 秒
首页 Dashboard 加载≤ 3 秒(含全部 KPI 数据)
批量导入(500条)≤ 30 秒
系统并发用户数支持 5000 并发在线用户
峰值 TPS订单处理 ≥ 200 TPS

16.2 可用性需求

指标要求
系统可用率(SLA)≥ 99.5%(月度计算)
计划内维护时间每月最多 4 小时,必须在业务低谷期(凌晨 02:00 - 06:00)执行
故障恢复时间(RTO)核心功能 ≤ 30 分钟
数据恢复时间点(RPO)≤ 1 小时(最多丢失 1 小时数据)
数据库备份每日全量备份,每 6 小时增量备份,保留 30 天

16.3 扩展性需求

  • 数据库设计预留扩展字段,不因业务需求频繁修改表结构;
  • 新增电商平台对接,不超过 5 个工作日完成(有标准化平台接入模板);
  • 新增物流商渠道,不需要修改代码,通过配置完成;
  • 系统支持水平扩展,增加应用服务器节点不需要修改代码。

16.4 兼容性需求

要求
浏览器Chrome 100+、Firefox 100+、Edge 100+、Safari 15+
分辨率最低支持 1280×768,推荐 1920×1080
移动端审批功能支持手机浏览器访问(响应式布局)
操作系统服务器支持 Ubuntu 20.04 LTS / CentOS 7+

17. 系统集成需求

17.1 电商平台 API 集成

平台集成内容对接协议
亚马逊(Amazon)订单同步/库存上传/广告数据/结算报告SP-API(OAuth2.0)
TikTok Shop订单同步/商品上架/库存同步Open API(App Key + HMAC签名)
Shopee订单同步/物流推单/库存同步Open API v2
Lazada订单同步/商品发布Open Platform API
独立站(Shopify)订单同步/商品同步/库存推送REST Admin API + Webhook

集成规范:

  • 所有平台 API 的 AccessToken 加密存储,支持到期自动刷新;
  • 调用失败时自动重试(指数退避,最多重试 3 次);
  • 保留原始 API 响应日志(保留 7 天,用于排查问题)。

17.2 物流商 API 集成(示例)

物流商支持功能
菜鸟裹裹/AliExpress Logistics面单创建/轨迹查询
云途物流面单创建/轨迹查询/重量回传
燕文物流面单创建/轨迹查询
4PX 递四方面单创建/轨迹查询
转运四方面单创建

17.3 第三方服务集成

服务类型服务商用途
文件存储阿里云 OSS商品图片、PDF文件、导入导出文件
邮件服务SendGrid / 阿里云邮件推送通知邮件(审核/提醒/告警)
短信服务阿里云短信关键操作短信验证码
汇率 APIExchangeRate-API / Open Exchange Rates实时汇率数据
AI 大模型DeepSeek API / OpenAI API智能分析、自然语言查询

18. 整体验收标准

18.1 功能验收汇总

模块必须通过(P0)应该通过(P1)可选(P2)
多租户MT-01/02/03/04MT-05
SRMSRM-01/02/03/05SRM-04/06/07
PMSPMS-01/02/03/04/06PMS-05/07
WMSWMS-01/02/03WMS-04/05/06WMS-07
PIMPIM-01/02/03PIM-04/05
OMSOMS-01/02/03/04/05OMS-06/07
TMSTMS-01/02/06TMS-03/04TMS-05
FMSFMS-01/02/03FMS-04/05
BISBIS-01BIS-02/03BIS-04
安全SEC-01/02/03/05/06SEC-04

18.2 上线准入标准

系统正式上线前,必须满足以下全部条件:

  • 所有 P0 验收项 100% 通过;
  • P1 验收项通过率 ≥ 90%;
  • 性能压测:5000 并发用户,核心接口响应时间满足 16.1 节要求;
  • 安全扫描:无高危漏洞(OWASP Top 10 全部覆盖测试);
  • 数据备份恢复演练:完成一次全量备份恢复验证,RTO ≤ 30 分钟;
  • 运维文档完备:部署文档、运维手册、常见故障排查手册已完成;
  • 监控告警配置:核心服务的健康检查、CPU/内存/慢查询告警已配置并测试。

19. 风险识别与应对策略

风险编号风险描述概率影响应对策略
R-01平台 API 变更导致集成失效建立 API 版本监控;封装适配层,降低变更影响范围;订阅各平台开发者公告
R-02库存数据不一致(超卖)极高使用 Redis 分布式锁 + 数据库乐观锁双重保障;定期自动对账(每日巡检)
R-03多租户数据泄露极低极高代码层:MyBatis Plus 拦截器全局注入 tenant_id;测试层:专项越权测试用例;监控层:异常访问告警
R-04核心模块开发延期优先保障 WMS/OMS 核心链路;采用 MVP 思维,非核心功能延期至 V1.1
R-05物流商 API 不稳定接入多家物流商互为备份;失败自动切换备选渠道;本地化队列重试机制
R-06大量数据下性能劣化数据库索引优化;读写分离;热点数据 Redis 缓存;归档历史数据
R-07跨境合规政策变化模块化设计合规逻辑,便于快速更新;建立合规变化监控机制

20. 附录

20.1 接口规范

统一响应格式:

{
  "code": 200,
  "message": "操作成功",
  "data": { },
  "timestamp": 1713340800000,
  "traceId": "abc123def456"
}

错误码规范:

错误码含义
200成功
400请求参数错误
401未登录或 Token 已失效
403无权限访问
404资源不存在
409数据冲突(如重复创建)
429请求过于频繁
500服务器内部错误
10001套餐功能不支持
10002库存不足
10003订单状态流转不合法
10004供应商状态不允许操作

20.2 分页规范

请求参数:

{
  "pageNum": 1,
  "pageSize": 20,
  "keyword": "搜索关键词(可选)",
  "sortField": "created_time",
  "sortOrder": "DESC"
}

响应格式:

{
  "code": 200,
  "data": {
    "total": 1250,
    "pages": 63,
    "current": 1,
    "size": 20,
    "records": [ ]
  }
}

20.3 枚举值定义汇总

供应商状态(srm_supplier.status):

  • 1=待审核
  • 2=审核中
  • 3=合作中
  • 4=暂停合作
  • 5=已淘汰

采购单状态(pms_purchase_order.status):

  • 1=草稿
  • 2=待审批
  • 3=已审批
  • 4=已确认
  • 5=部分到货
  • 6=全部到货
  • 7=已付款
  • 8=已关闭
  • 9=已取消

库存变动类型(wms_inventory_log.change_type):

  • PURCHASE_IN(采购入库)
  • PURCHASE_RETURN_OUT(采购退货出库)
  • SALE_OUT(销售出库)
  • SALE_RETURN_IN(退货入库)
  • TRANSFER_IN(调拨入库)
  • TRANSFER_OUT(调拨出库)
  • PROFIT_IN(盘盈入库)
  • LOSS_OUT(盘亏/报损出库)
  • FREEZE(冻结)
  • UNFREEZE(解冻)

订单状态(oms_order.status):

  • 1=待支付
  • 2=已支付
  • 3=待备货
  • 4=备货中
  • 5=待发货
  • 6=已发货
  • 7=运输中
  • 8=已签收
  • 9=已完成
  • 10=已取消
  • 11=缺货待处理
  • 12=物流异常
  • 13=售后处理中
  • 14=退款退货中
  • 15=已退款

本文档版权归产品团队所有,未经授权不得对外分享。如有疑问或修改建议,请联系产品负责人。


文档结束 · PRD-SCM-2025-001 · V1.0.0