init
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
---
|
||||
description: WMS 领域规则:业务编码、状态机、统一订单模型、第三方平台 Connector
|
||||
globs: backend/app/Domain/**,backend/app/Application/**,backend/app/Infrastructure/**,backend/app/Models/**
|
||||
alwaysApply: false
|
||||
---
|
||||
# WMS 领域规则
|
||||
|
||||
详见 `docs/04-domain-model.md`。
|
||||
|
||||
## 业务编码
|
||||
- 业务关联优先使用 `tenant_code`、`warehouse_code`、`location_code`、`customer_code`、`sku_code`、`order_no`、`inbound_no`、`outbound_no`、`picking_no`、`shipment_no`、`package_no`。
|
||||
- 单号生成集中在一个编号服务中(租户内唯一、并发安全),不要各模块各自拼接。
|
||||
|
||||
## 状态机
|
||||
- 状态定义为 Enum,合法转换集中声明,非法转换抛异常;状态变更写日志。
|
||||
- 出库:`draft → allocated → picking → picked → packing → packed → shipped → completed`
|
||||
|
||||
```php
|
||||
// ❌
|
||||
if ($outbound->status == 'packed') { $outbound->status = 'shipped'; }
|
||||
|
||||
// ✅
|
||||
$outbound->transitionTo(OutboundStatus::Shipped); // 内部校验 canTransitionTo,失败抛 InvalidStatusTransition
|
||||
```
|
||||
|
||||
## 统一订单模型
|
||||
- `order` / `order_item` / `order_source` / `order_channel` / `order_external_no` / `order_status`。
|
||||
- 核心订单表、Domain、Application 中**不得出现** Amazon / Shopify / TikTok 等平台特有字段与分支判断。
|
||||
|
||||
## 第三方平台
|
||||
- 实现 `MarketplaceConnector` 接口,放 `app/Infrastructure/Platforms/{Platform}/`。
|
||||
- Connector 负责平台数据 ↔ 统一模型(订单、SKU、库存、物流、状态)的映射。
|
||||
- 新增平台只新增 Connector 与配置,不修改核心 WMS 代码。
|
||||
- 平台调用走 Queue,不在用户 HTTP 请求中同步等待。
|
||||
Reference in New Issue
Block a user