Files
wms-saas/.cursor/rules/wms-domain.mdc
T
2026-09-30 11:11:54 +08:00

35 lines
1.6 KiB
Plaintext

---
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 请求中同步等待。