产品需求文档(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.0 | 2025-04-17 | 产品团队 | 初版创建,覆盖全业务模块需求 |
目录
- 项目背景与目标
- 术语表与专业词汇解释
- 系统架构总览
- 用户角色与权限体系
- 多租户架构设计需求
- 供应商管理模块(SRM)
- 采购管理模块(PMS)
- 仓储管理模块(WMS)
- 商品管理模块(PIM)
- 订单管理模块(OMS)
- 物流管理模块(TMS)
- 财务结算模块(FMS)
- 数据分析与智能决策模块(BIS)
- 系统安全与权限控制
- SaaS 运营管理后台
- 非功能性需求
- 系统集成需求
- 整体验收标准
- 风险识别与应对策略
- 附录
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 业务术语
| 术语 | 英文全称 | 解释 |
|---|---|---|
| SaaS | Software as a Service | 软件即服务。基于云计算的软件交付模式,用户无需安装,通过浏览器订阅使用,按月/年付费。 |
| 多租户 | Multi-Tenancy | 一套系统同时服务多个客户(租户),各租户数据严格隔离,互不可见。 |
| 柔性供应链 | Flexible Supply Chain | 相对于刚性供应链(固定产能、固定供应商),柔性供应链能够根据市场需求波动,快速调整采购量、生产计划和物流方案。 |
| SKU | Stock Keeping Unit | 最小库存管理单元。如”红色 M 码 T 恤”是一个 SKU,“蓝色 L 码 T 恤”是另一个 SKU。 |
| SPU | Standard Product Unit | 标准产品单元。如”圆领 T 恤”是一个 SPU,包含多个不同颜色/尺码的 SKU。 |
| HS Code | Harmonized System Code | 海关编码。国际通用的商品分类编码,用于海关申报和关税计算,影响清关效率和税率。 |
| FBA | Fulfillment by Amazon | 亚马逊代运营履约服务。卖家将货物预先发往亚马逊仓库,由亚马逊完成拣货、打包和发货。 |
| FBA 头程 | FBA First Mile | 将货物从中国国内发往亚马逊海外仓库的国际运输段。 |
| 3PL | Third-Party Logistics | 第三方物流。由独立的物流服务商提供仓储、运输、配送等服务。 |
| DDP | Delivered Duty Paid | 完税后交货。卖家承担运输全程及目的国关税,买家无需额外付费,体验更好但风险由卖家承担。 |
| DDU | Delivered Duty Unpaid | 未完税交货。买家在目的国自行缴纳关税,可能导致包裹被扣押,买家体验较差。 |
| FNSKU | Fulfillment Network Stock Keeping Unit | 亚马逊履约网络条形码,每个 FBA 产品需要贴附 FNSKU 标签才能入库。 |
| MOQ | Minimum Order Quantity | 最小起订量。供应商规定的每次采购的最低数量。 |
| COGS | Cost of Goods Sold | 销售成本。直接与商品销售相关的成本,含采购成本、入仓成本、物流成本。 |
| ACOS | Advertising Cost of Sales | 广告销售成本比。广告花费 / 广告带来的销售额,是衡量广告效率的核心指标。 |
| VAT | Value Added Tax | 增值税。欧洲市场要求跨境卖家在销售额达到阈值后在当地注册 VAT 并申报。 |
| OSS | One-Stop Shop | 欧盟一站式增值税申报机制,允许卖家在一个欧盟成员国统一申报所有欧盟国家的 VAT。 |
| OTD | On-Time Delivery | 准时交货率。实际按时送达订单数 / 总订单数,衡量供应链履约能力。 |
| CPFR | Collaborative Planning, Forecasting and Replenishment | 协同计划、预测与补货。供应链上下游企业共享需求预测和库存数据,协同制定补货计划。 |
| MRP | Material Requirements Planning | 物料需求计划。根据销售订单和安全库存,反向计算所需采购物料的数量和时间。 |
| WMS | Warehouse Management System | 仓储管理系统。管理仓库内商品的入库、存储、出库、盘点等全部操作。 |
| TMS | Transportation Management System | 运输管理系统。管理货物的运输计划、承运商选择、运单跟踪和费用结算。 |
| OMS | Order Management System | 订单管理系统。接收、处理、跟踪客户订单的全生命周期系统。 |
| ERP | Enterprise Resource Planning | 企业资源计划。集成企业采购、生产、销售、财务等核心业务流程的系统。 |
| SRM | Supplier Relationship Management | 供应商关系管理。管理供应商信息、评估、协同和绩效考核的系统。 |
| PIM | Product Information Management | 商品信息管理。集中管理商品基础信息、多语言内容、图片和属性的系统。 |
| BIS | Business Intelligence System | 商业智能系统。通过数据分析为业务决策提供支持的系统。 |
| ARR | Annual Recurring Revenue | 年度经常性收入。SaaS 商业模式的核心财务指标,反映订阅制收入的规模。 |
| RBAC | Role-Based Access Control | 基于角色的访问控制。通过给用户分配角色来控制其对系统资源的访问权限。 |
| Sa-Token | Java 权限认证框架 | 用于登录认证、权限校验、会话管理和分布式登录态控制;本项目采用随机 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 查询自动加上租户过滤条件,确保数据隔离。 |
| 状态机 | 用于描述对象在不同状态之间流转规则的设计模式,如订单状态从”待支付”→“已支付”→“已发货”。 |
| AOP | Aspect-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_supplier、wms_inventory) - 字段名:全小写,下划线分隔
- 主键:统一使用
idBIGINT(雪花算法生成,分布式唯一) - 租户字段:所有业务表必须包含
tenant_idBIGINT NOT NULL - 时间字段:
created_timeDATETIME、updated_timeDATETIME(MyBatis Plus 自动填充) - 软删除字段:
deletedTINYINT(1) DEFAULT 0(0=未删除,1=已删除) - 操作人字段:
created_by、updated_byBIGINT(记录操作用户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-05 | Portal隔离 | 供应商 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 库存数量自动增加,误差为 0 | P0 |
| 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:智能上架推荐
- 上架时,系统根据以下规则推荐库位:
- 同 SKU 已有库存的相邻库位(集中存储,减少拣货路径);
- 空闲库位中距拣货口最近的(减少拣货行走距离);
- 满足货物重量和体积限制的库位。
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 | 流水完整性 | 任意一次库存变动,库存流水表必须有对应记录,缺失率为 0 | P0 |
| 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 | 规格生成SKU | SPU 配置 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 | 退款准确 | 退款金额计算经过测试用例验证(含平台手续费扣除),误差为 0 | P0 |
| 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-01 | KPI仪表板 | 首页 Dashboard 8 个核心 KPI 数据,页面加载完成时间 ≤ 3 秒 | P0 |
| BIS-02 | 补货建议 | 补货建议数量计算结果与手工按公式计算结果误差为 0 | P1 |
| BIS-03 | 报表导出 | 利润报表导出 Excel(12 个月 × 所有 SKU),导出时间 ≤ 60 秒,数据完整 | P1 |
| BIS-04 | AI查询 | 自然语言查询响应时间 ≤ 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-02 | SQL注入 | 在查询参数中输入 ' OR 1=1 --,系统返回正常空结果,不执行恶意 SQL | P0 |
| SEC-03 | 密码安全 | 数据库中不存在任何明文密码,密码字段全部为 BCrypt 哈希值 | P0 |
| SEC-04 | 频率限制 | 同一 IP 1 分钟内超过 100 次请求,返回 429,自动封禁 10 分钟 | P1 |
| SEC-05 | 审计日志 | 任意删除操作在操作日志表中均有记录,缺失率为 0 | P0 |
| 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 / 阿里云邮件推送 | 通知邮件(审核/提醒/告警) |
| 短信服务 | 阿里云短信 | 关键操作短信验证码 |
| 汇率 API | ExchangeRate-API / Open Exchange Rates | 实时汇率数据 |
| AI 大模型 | DeepSeek API / OpenAI API | 智能分析、自然语言查询 |
18. 整体验收标准
18.1 功能验收汇总
| 模块 | 必须通过(P0) | 应该通过(P1) | 可选(P2) |
|---|---|---|---|
| 多租户 | MT-01/02/03/04 | MT-05 | — |
| SRM | SRM-01/02/03/05 | SRM-04/06/07 | — |
| PMS | PMS-01/02/03/04/06 | PMS-05/07 | — |
| WMS | WMS-01/02/03 | WMS-04/05/06 | WMS-07 |
| PIM | PIM-01/02/03 | PIM-04/05 | — |
| OMS | OMS-01/02/03/04/05 | OMS-06/07 | — |
| TMS | TMS-01/02/06 | TMS-03/04 | TMS-05 |
| FMS | FMS-01/02/03 | FMS-04/05 | — |
| BIS | BIS-01 | BIS-02/03 | BIS-04 |
| 安全 | SEC-01/02/03/05/06 | SEC-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