# 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 定义,禁止魔法字符串。 - 允许的状态转换集中定义,**非法状态转换必须被阻止**。 - 状态变更需记录日志(谁、何时、从何状态到何状态)。