refactor: 优化代码结构并修复类型问题
- 移除未使用的TabPane组件 - 修复类型定义和导入方式 - 优化mock数据源的环境变量判断逻辑 - 更新文档结构并归档旧文件 - 添加新的UI组件和Memo组件 - 调整API路径和响应处理
This commit is contained in:
483
docs/ARCHIVE/01_Architecture/03_Domain_Model.md
Normal file
483
docs/ARCHIVE/01_Architecture/03_Domain_Model.md
Normal file
@@ -0,0 +1,483 @@
|
||||
# DOMAIN_MODEL(领域模型)
|
||||
|
||||
## 核心实体
|
||||
|
||||
### Merchant(商户)
|
||||
- id
|
||||
- name
|
||||
- status(pending / active / inactive)
|
||||
- created_at
|
||||
- updated_at
|
||||
- contact_person
|
||||
- contact_email
|
||||
- contact_phone
|
||||
- address
|
||||
- business_type(B2B / B2C)
|
||||
|
||||
---
|
||||
|
||||
### User(用户)
|
||||
- id
|
||||
- merchant_id
|
||||
- role(admin / operator / viewer)
|
||||
- status
|
||||
- username
|
||||
- email
|
||||
- password_hash
|
||||
- created_at
|
||||
- updated_at
|
||||
|
||||
---
|
||||
|
||||
### Store(店铺)
|
||||
- id
|
||||
- merchant_id
|
||||
- name
|
||||
- platform
|
||||
- platform_shop_id
|
||||
- description
|
||||
- status
|
||||
- created_at
|
||||
- updated_at
|
||||
|
||||
---
|
||||
|
||||
### Feature(功能)
|
||||
- code
|
||||
- name
|
||||
- price_type(free / paid)
|
||||
- price_value
|
||||
- description
|
||||
|
||||
---
|
||||
|
||||
### PlatformIntegration(平台集成)
|
||||
- id
|
||||
- merchant_id
|
||||
- platform_name(Sellbrite / Shoplazza / SaleSmartly)
|
||||
- api_key
|
||||
- api_secret
|
||||
- access_token
|
||||
- refresh_token
|
||||
- status
|
||||
- created_at
|
||||
- updated_at
|
||||
|
||||
---
|
||||
|
||||
### CrossBorderProduct(跨境商品)
|
||||
- id
|
||||
- product_id
|
||||
- hs_code
|
||||
- tariff_rate
|
||||
- compliance_status
|
||||
- country_of_origin
|
||||
- weight
|
||||
- dimensions
|
||||
- created_at
|
||||
- updated_at
|
||||
|
||||
---
|
||||
|
||||
### CustomsDocument(清关文件)
|
||||
- id
|
||||
- order_id
|
||||
- document_type
|
||||
- document_url
|
||||
- status
|
||||
- created_at
|
||||
- updated_at
|
||||
|
||||
---
|
||||
|
||||
### CrossBorderOrder(跨境订单)
|
||||
- id
|
||||
- order_id
|
||||
- customs_status
|
||||
- shipping_status
|
||||
- tracking_number
|
||||
- logistics_provider
|
||||
- estimated_delivery
|
||||
- created_at
|
||||
- updated_at
|
||||
- category
|
||||
|
||||
---
|
||||
|
||||
### MerchantFeature(商户功能)
|
||||
- id
|
||||
- merchant_id
|
||||
- feature_code
|
||||
- status(inactive / pending_payment / active / expired)
|
||||
- expire_at
|
||||
- created_at
|
||||
- updated_at
|
||||
|
||||
---
|
||||
|
||||
### Order(订单)
|
||||
- id
|
||||
- user_id
|
||||
- merchant_id
|
||||
- total_amount
|
||||
- status(pending / paid / split / shipped / completed / refunded)
|
||||
- created_at
|
||||
- updated_at
|
||||
- shipping_address
|
||||
- payment_method
|
||||
|
||||
---
|
||||
|
||||
### SubOrder(子订单)
|
||||
- id
|
||||
- order_id
|
||||
- merchant_id
|
||||
- store_id
|
||||
- amount
|
||||
- status
|
||||
- created_at
|
||||
- updated_at
|
||||
|
||||
---
|
||||
|
||||
### Product(商品)
|
||||
- id
|
||||
- merchant_id
|
||||
- store_id
|
||||
- name
|
||||
- sku
|
||||
- price
|
||||
- stock
|
||||
- status
|
||||
- created_at
|
||||
- updated_at
|
||||
|
||||
---
|
||||
|
||||
### Inventory(库存)
|
||||
- id
|
||||
- product_id
|
||||
- merchant_id
|
||||
- warehouse_id
|
||||
- quantity
|
||||
- status
|
||||
- last_sync_at
|
||||
|
||||
---
|
||||
|
||||
### Payment(支付)
|
||||
- id
|
||||
- merchant_id
|
||||
- amount
|
||||
- status(created / paid / failed)
|
||||
- type(feature / order)
|
||||
- payment_method
|
||||
- transaction_id
|
||||
- created_at
|
||||
- updated_at
|
||||
|
||||
---
|
||||
|
||||
### Bill(账单)
|
||||
- id
|
||||
- merchant_id
|
||||
- type(income / expense)
|
||||
- amount
|
||||
- status(pending / confirmed / settled)
|
||||
- source_type(order / feature)
|
||||
- source_id
|
||||
- created_at
|
||||
- updated_at
|
||||
|
||||
---
|
||||
|
||||
### Permission(权限)
|
||||
- id
|
||||
- role
|
||||
- resource
|
||||
- action
|
||||
- created_at
|
||||
|
||||
---
|
||||
|
||||
### Settlement(结算)
|
||||
- id
|
||||
- merchant_id
|
||||
- total_amount
|
||||
- platform_fee
|
||||
- net_amount
|
||||
- status
|
||||
- period_start
|
||||
- period_end
|
||||
- created_at
|
||||
- updated_at
|
||||
|
||||
---
|
||||
|
||||
### Analytics(数据分析)
|
||||
- id
|
||||
- merchant_id
|
||||
- report_type
|
||||
- data
|
||||
- generated_at
|
||||
- period_start
|
||||
- period_end
|
||||
|
||||
---
|
||||
|
||||
## 商品中心领域模型(Product Center Domain Model)
|
||||
|
||||
> **设计原则**: 采用三层商品模型(SPU → SKU → Listing),支持多平台统一管理
|
||||
|
||||
### 商品层级关系
|
||||
|
||||
```
|
||||
SPU(产品层)
|
||||
│
|
||||
├── SKU-001(库存单元层)
|
||||
│ ├── Listing-A(平台商品层)
|
||||
│ ├── Listing-B(平台商品层)
|
||||
│ └── Listing-C(平台商品层)
|
||||
│
|
||||
├── SKU-002(库存单元层)
|
||||
│ └── Listing-D(平台商品层)
|
||||
│
|
||||
└── SKU-003(库存单元层)
|
||||
└── Listing-E(平台商品层)
|
||||
```
|
||||
|
||||
### SPU(标准产品单元)
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | string | 主键 |
|
||||
| tenant_id | string | 租户ID |
|
||||
| name | string | 产品名称 |
|
||||
| brand | string | 品牌 |
|
||||
| category_id | string | 类目ID |
|
||||
| description | text | 产品描述 |
|
||||
| attributes | json | 通用属性 |
|
||||
| status | enum | DRAFT/ACTIVE/INACTIVE/ARCHIVED |
|
||||
| created_at | timestamp | 创建时间 |
|
||||
| updated_at | timestamp | 更新时间 |
|
||||
|
||||
```typescript
|
||||
interface SPU {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
name: string;
|
||||
brand: string;
|
||||
categoryId: string;
|
||||
description: string;
|
||||
attributes: Record<string, any>;
|
||||
status: 'DRAFT' | 'ACTIVE' | 'INACTIVE' | 'ARCHIVED';
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
}
|
||||
```
|
||||
|
||||
### SKU(库存单元)
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | string | 主键 |
|
||||
| spu_id | string | 关联SPU |
|
||||
| tenant_id | string | 租户ID |
|
||||
| sku_code | string | SKU编码 |
|
||||
| attributes | json | 变体属性 {"color": "red", "size": "XL"} |
|
||||
| cost_price | decimal(10,2) | 成本价 |
|
||||
| base_price | decimal(10,2) | 基准价(参考锚点) |
|
||||
| weight | decimal(10,3) | 重量(kg) |
|
||||
| dimensions | json | 尺寸 {length, width, height} |
|
||||
| status | enum | ACTIVE/INACTIVE |
|
||||
| created_at | timestamp | 创建时间 |
|
||||
| updated_at | timestamp | 更新时间 |
|
||||
|
||||
```typescript
|
||||
interface SKU {
|
||||
id: string;
|
||||
spuId: string;
|
||||
tenantId: string;
|
||||
skuCode: string;
|
||||
attributes: Record<string, any>;
|
||||
costPrice: number;
|
||||
basePrice: number;
|
||||
weight: number;
|
||||
dimensions: { length: number; width: number; height: number };
|
||||
status: 'ACTIVE' | 'INACTIVE';
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
}
|
||||
```
|
||||
|
||||
### PlatformListing(平台商品)
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | string | 主键 |
|
||||
| sku_id | string | 关联SKU |
|
||||
| shop_id | string | 店铺ID |
|
||||
| tenant_id | string | 租户ID |
|
||||
| platform | enum | 平台类型 |
|
||||
| platform_listing_id | string | 平台商品ID |
|
||||
| title | string | 商品标题 |
|
||||
| price | decimal(10,2) | 最终销售价 |
|
||||
| original_price | decimal(10,2) | 原价 |
|
||||
| stock | int | 库存 |
|
||||
| status | enum | DRAFT/PENDING/ACTIVE/INACTIVE |
|
||||
| strategy_id | string | 价格策略ID |
|
||||
| override_price | decimal(10,2) | 手动覆盖价格 |
|
||||
| created_at | timestamp | 创建时间 |
|
||||
| updated_at | timestamp | 更新时间 |
|
||||
|
||||
```typescript
|
||||
interface PlatformListing {
|
||||
id: string;
|
||||
skuId: string;
|
||||
shopId: string;
|
||||
tenantId: string;
|
||||
platform: 'TIKTOK' | 'SHOPEE' | 'LAZADA' | 'SHOPIFY' | 'WOOCOMMERCE' | 'B2B';
|
||||
platformListingId: string;
|
||||
title: string;
|
||||
price: number;
|
||||
originalPrice: number;
|
||||
stock: number;
|
||||
status: 'DRAFT' | 'PENDING' | 'ACTIVE' | 'INACTIVE';
|
||||
strategyId: string;
|
||||
overridePrice: number | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
}
|
||||
```
|
||||
|
||||
### PriceStrategy(价格策略)
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | string | 主键 |
|
||||
| tenant_id | string | 租户ID |
|
||||
| name | string | 策略名称 |
|
||||
| scope_type | enum | PLATFORM/SHOP/LISTING |
|
||||
| scope_id | string | 作用域ID |
|
||||
| strategy_type | enum | MULTIPLIER/FIXED/DYNAMIC |
|
||||
| value | decimal(10,2) | 策略值(倍率或固定值) |
|
||||
| min_price | decimal(10,2) | 最低价格限制 |
|
||||
| max_price | decimal(10,2) | 最高价格限制 |
|
||||
| status | enum | ACTIVE/INACTIVE |
|
||||
| created_at | timestamp | 创建时间 |
|
||||
| updated_at | timestamp | 更新时间 |
|
||||
|
||||
```typescript
|
||||
interface PriceStrategy {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
name: string;
|
||||
scopeType: 'PLATFORM' | 'SHOP' | 'LISTING';
|
||||
scopeId: string;
|
||||
strategyType: 'MULTIPLIER' | 'FIXED' | 'DYNAMIC';
|
||||
value: number;
|
||||
minPrice: number;
|
||||
maxPrice: number;
|
||||
status: 'ACTIVE' | 'INACTIVE';
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
}
|
||||
```
|
||||
|
||||
### SKUMapping(SKU映射)
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | string | 主键 |
|
||||
| tenant_id | string | 租户ID |
|
||||
| sku_id | string | 系统SKU ID |
|
||||
| platform | enum | 平台类型 |
|
||||
| shop_id | string | 店铺ID |
|
||||
| platform_sku_id | string | 平台SKU ID |
|
||||
| mapping_type | enum | AUTO/MANUAL |
|
||||
| confidence | decimal(5,2) | 匹配置信度 |
|
||||
| status | enum | ACTIVE/INACTIVE |
|
||||
| created_at | timestamp | 创建时间 |
|
||||
| updated_at | timestamp | 更新时间 |
|
||||
|
||||
```typescript
|
||||
interface SKUMapping {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
skuId: string;
|
||||
platform: string;
|
||||
shopId: string;
|
||||
platformSkuId: string;
|
||||
mappingType: 'AUTO' | 'MANUAL';
|
||||
confidence: number;
|
||||
status: 'ACTIVE' | 'INACTIVE';
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
}
|
||||
```
|
||||
|
||||
### Organization(组织架构)
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | string | 主键 |
|
||||
| tenant_id | string | 租户ID |
|
||||
| parent_id | string | 父级ID |
|
||||
| name | string | 组织名称 |
|
||||
| type | enum | COMPANY/DEPARTMENT/TEAM |
|
||||
| path | string | 层级路径 |
|
||||
| level | int | 层级深度 |
|
||||
| status | enum | ACTIVE/INACTIVE |
|
||||
| created_at | timestamp | 创建时间 |
|
||||
| updated_at | timestamp | 更新时间 |
|
||||
|
||||
```typescript
|
||||
interface Organization {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
parentId: string | null;
|
||||
name: string;
|
||||
type: 'COMPANY' | 'DEPARTMENT' | 'TEAM';
|
||||
path: string;
|
||||
level: number;
|
||||
status: 'ACTIVE' | 'INACTIVE';
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
}
|
||||
```
|
||||
|
||||
### ShopAuthorization(店铺授权)
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | string | 主键 |
|
||||
| shop_id | string | 店铺ID |
|
||||
| tenant_id | string | 租户ID |
|
||||
| auth_type | enum | OAUTH/API_KEY/AGENT |
|
||||
| access_token | text | 访问令牌 |
|
||||
| refresh_token | text | 刷新令牌 |
|
||||
| expire_at | timestamp | 过期时间 |
|
||||
| cookies | text | Cookie(Agent授权) |
|
||||
| proxy | json | 代理配置 |
|
||||
| status | enum | PENDING/ACTIVE/EXPIRED/INVALID |
|
||||
| last_sync_at | timestamp | 最后同步时间 |
|
||||
| created_at | timestamp | 创建时间 |
|
||||
| updated_at | timestamp | 更新时间 |
|
||||
|
||||
```typescript
|
||||
interface ShopAuthorization {
|
||||
id: string;
|
||||
shopId: string;
|
||||
tenantId: string;
|
||||
authType: 'OAUTH' | 'API_KEY' | 'AGENT';
|
||||
accessToken: string;
|
||||
refreshToken: string;
|
||||
expireAt: Date;
|
||||
cookies: string;
|
||||
proxy: { host: string; port: number; username: string };
|
||||
status: 'PENDING' | 'ACTIVE' | 'EXPIRED' | 'INVALID';
|
||||
lastSyncAt: Date;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user