Files
wms-saas/docs/04-domain-model.md
T
2026-09-29 13:08:21 +08:00

111 lines
3.0 KiB
Markdown

# 04 WMS 领域模型
## 业务编码优先
业务系统尽量使用明确的业务编码:
| 编码 | 含义 |
| --- | --- |
| tenant_code | 租户 |
| warehouse_code | 仓库 |
| location_code | 库位 |
| customer_code | 客户 |
| supplier_code | 供应商 |
| product_code | 商品 |
| sku_code | SKU |
| order_no | 订单 |
| inbound_no | 入库单 |
| outbound_no | 出库单 |
| picking_no | 拣货单 |
| shipment_no | 发货单 |
| package_no | 包裹 |
不要让业务逻辑全部依赖数据库自增 ID。数据库 ID 可以作为内部主键,但业务关联应优先考虑业务编码。
## 业务模块(第一阶段设计)
### 1. SaaS
租户、用户、角色、权限、租户设置、操作日志
### 2. 基础资料
客户、供应商、商品、SKU、SKU 条码、包装规格、重量、尺寸
### 3. 仓库
仓库、库区、库位、库位类型、库位容量、库位策略
### 4. 入库
入库单、入库明细、收货、收货差异、质检、上架、入库流水
### 5. 出库
出库单、出库明细、库存分配、波次、拣货任务、复核、打包、发货
### 6. 库存
库存查询、库存余额、库存流水、库存锁定、库存调整、库存盘点、库存冻结、库存解冻、库存预警
### 7. 退货
退货单、退货收货、退货质检、重新入库、报废
### 8. 物流
物流渠道、承运商、物流服务、运费规则、面单、发货、Tracking
### 9. 报表
库存报表、入库报表、出库报表、库存周转、SKU 销量、仓库作业统计
### 10. AI / 数据分析(预留 Python 服务接口)
库存分析、SKU 销量分析、缺货预测、补货建议、库存周转分析、异常库存、AI WMS Assistant
## 订单模型
WMS 不应和某一个电商平台强绑定,订单应抽象为统一订单模型,例如:
- order
- order_item
- order_source
- order_status
- order_external_no
- order_channel
以后可以支持:Amazon、Shopify、TikTok Shop、Temu、Shopee、Mirakl、ERP、API、手工订单。
**不要在核心订单表中写死 Amazon / TikTok 等平台业务逻辑。**
## 第三方平台架构
第三方平台必须采用 **Adapter / Connector** 思路:
```
MarketplaceConnector (接口)
├── AmazonConnector
├── ShopifyConnector
├── MiraklConnector
└── TikTokShopConnector
```
以后增加平台时,不应该修改大量核心 WMS 代码。核心 WMS 只关心:
- 统一订单
- 统一 SKU
- 统一库存
- 统一物流
- 统一状态
平台实现放在 `app/Infrastructure/Platforms/{Platform}/`,负责平台数据与统一模型之间的映射。
## 状态机
入库、出库、订单、库存任务不要到处使用:
```php
if ($status == xxx)
```
应设计明确的状态流转。例如出库:
```
draft → allocated → picking → picked → packing → packed → shipped → completed
```
- 状态使用 PHP Enum 定义,禁止魔法字符串。
- 允许的状态转换集中定义,**非法状态转换必须被阻止**。
- 状态变更需记录日志(谁、何时、从何状态到何状态)。