400 lines
7.3 KiB
Markdown
400 lines
7.3 KiB
Markdown
|
|
# Product API Specification
|
||
|
|
|
||
|
|
> **定位**:商品管理 API 规范 - 包含商品 CRUD、采集、定价、审核等接口。
|
||
|
|
> **更新日期**: 2026-03-18
|
||
|
|
> **版本**: v1.0
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1. 接口概览
|
||
|
|
|
||
|
|
| 方法 | 路径 | 功能 | 权限 |
|
||
|
|
|------|------|------|------|
|
||
|
|
| GET | `/api/v1/products` | 获取商品列表 | product:read |
|
||
|
|
| GET | `/api/v1/products/:id` | 获取商品详情 | product:read |
|
||
|
|
| POST | `/api/v1/products` | 创建商品 | product:create |
|
||
|
|
| PUT | `/api/v1/products/:id` | 更新商品 | product:update |
|
||
|
|
| DELETE | `/api/v1/products/:id` | 删除商品 | product:delete |
|
||
|
|
| POST | `/api/v1/products/:id/approve` | 审核商品 | product:review |
|
||
|
|
| POST | `/api/v1/products/collect` | 采集商品 | product:create |
|
||
|
|
| POST | `/api/v1/products/:id/pricing` | 动态调价 | product:update |
|
||
|
|
| POST | `/api/v1/products/autonomous-listing` | 自治上架 | product:create |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. 接口详情
|
||
|
|
|
||
|
|
### 2.1 获取商品列表
|
||
|
|
|
||
|
|
**请求**
|
||
|
|
```http
|
||
|
|
GET /api/v1/products?platform=AMAZON&status=ACTIVE&page=1&limit=20
|
||
|
|
```
|
||
|
|
|
||
|
|
**请求头**
|
||
|
|
```
|
||
|
|
Authorization: Bearer {token}
|
||
|
|
X-Tenant-Id: {tenantId}
|
||
|
|
X-Trace-Id: {traceId}
|
||
|
|
```
|
||
|
|
|
||
|
|
**查询参数**
|
||
|
|
|
||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
||
|
|
|------|------|------|------|
|
||
|
|
| platform | string | 否 | 平台筛选 (AMAZON, EBAY, SHOPIFY, etc.) |
|
||
|
|
| status | string | 否 | 状态筛选 (DRAFTED, PENDING_REVIEW, APPROVED, etc.) |
|
||
|
|
| page | number | 否 | 页码,默认 1 |
|
||
|
|
| limit | number | 否 | 每页数量,默认 20 |
|
||
|
|
|
||
|
|
**响应**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"data": {
|
||
|
|
"items": [
|
||
|
|
{
|
||
|
|
"id": 1,
|
||
|
|
"title": "Product Name",
|
||
|
|
"platform": "AMAZON",
|
||
|
|
"platformProductId": "B08N5WRWNW",
|
||
|
|
"status": "APPROVED",
|
||
|
|
"sellingPrice": 29.99,
|
||
|
|
"purchasePrice": 15.00,
|
||
|
|
"stock": 100,
|
||
|
|
"createdAt": "2026-03-18T10:00:00Z",
|
||
|
|
"updatedAt": "2026-03-18T10:00:00Z"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"pagination": {
|
||
|
|
"page": 1,
|
||
|
|
"limit": 20,
|
||
|
|
"total": 100,
|
||
|
|
"totalPages": 5
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2.2 获取商品详情
|
||
|
|
|
||
|
|
**请求**
|
||
|
|
```http
|
||
|
|
GET /api/v1/products/:id
|
||
|
|
```
|
||
|
|
|
||
|
|
**响应**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"data": {
|
||
|
|
"id": 1,
|
||
|
|
"title": "Product Name",
|
||
|
|
"description": "Product description...",
|
||
|
|
"platform": "AMAZON",
|
||
|
|
"platformProductId": "B08N5WRWNW",
|
||
|
|
"status": "APPROVED",
|
||
|
|
"sellingPrice": 29.99,
|
||
|
|
"purchasePrice": 15.00,
|
||
|
|
"currency": "USD",
|
||
|
|
"stock": 100,
|
||
|
|
"images": ["url1", "url2"],
|
||
|
|
"attributes": {
|
||
|
|
"color": "black",
|
||
|
|
"size": "M"
|
||
|
|
},
|
||
|
|
"profitMargin": 45.5,
|
||
|
|
"roi": 99.9,
|
||
|
|
"createdAt": "2026-03-18T10:00:00Z",
|
||
|
|
"updatedAt": "2026-03-18T10:00:00Z"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2.3 创建商品
|
||
|
|
|
||
|
|
**请求**
|
||
|
|
```http
|
||
|
|
POST /api/v1/products
|
||
|
|
```
|
||
|
|
|
||
|
|
**请求体**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"title": "Product Name",
|
||
|
|
"description": "Product description",
|
||
|
|
"platform": "AMAZON",
|
||
|
|
"platformProductId": "B08N5WRWNW",
|
||
|
|
"sellingPrice": 29.99,
|
||
|
|
"purchasePrice": 15.00,
|
||
|
|
"currency": "USD",
|
||
|
|
"stock": 100,
|
||
|
|
"images": ["url1", "url2"],
|
||
|
|
"attributes": {
|
||
|
|
"color": "black",
|
||
|
|
"size": "M"
|
||
|
|
},
|
||
|
|
"category": "Electronics",
|
||
|
|
"tags": ["new", "hot"]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**响应**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"data": {
|
||
|
|
"id": 1,
|
||
|
|
"message": "Product created successfully"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2.4 更新商品
|
||
|
|
|
||
|
|
**请求**
|
||
|
|
```http
|
||
|
|
PUT /api/v1/products/:id
|
||
|
|
```
|
||
|
|
|
||
|
|
**请求体**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"title": "Updated Product Name",
|
||
|
|
"sellingPrice": 34.99,
|
||
|
|
"stock": 150,
|
||
|
|
"status": "PENDING_REVIEW"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**状态机校验**
|
||
|
|
- 商品状态流转必须符合预定义状态机
|
||
|
|
- 非法状态流转返回 400 错误
|
||
|
|
|
||
|
|
**响应**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"data": {
|
||
|
|
"id": 1,
|
||
|
|
"title": "Updated Product Name",
|
||
|
|
"status": "PENDING_REVIEW",
|
||
|
|
"updatedAt": "2026-03-18T11:00:00Z"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2.5 删除商品
|
||
|
|
|
||
|
|
**请求**
|
||
|
|
```http
|
||
|
|
DELETE /api/v1/products/:id
|
||
|
|
```
|
||
|
|
|
||
|
|
**响应**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"message": "Product deleted successfully"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2.6 审核商品 [UX_REVIEW_01]
|
||
|
|
|
||
|
|
**请求**
|
||
|
|
```http
|
||
|
|
POST /api/v1/products/:id/approve
|
||
|
|
```
|
||
|
|
|
||
|
|
**请求体**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"decision": "APPROVE",
|
||
|
|
"reason": "符合上架标准"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**参数说明**
|
||
|
|
|
||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
||
|
|
|------|------|------|------|
|
||
|
|
| decision | string | 是 | APPROVE 或 REJECT |
|
||
|
|
| reason | string | 否 | 审核意见 |
|
||
|
|
|
||
|
|
**响应**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"message": "Product approved successfully"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2.7 采集商品 [CORE_WORK_01]
|
||
|
|
|
||
|
|
**请求**
|
||
|
|
```http
|
||
|
|
POST /api/v1/products/collect
|
||
|
|
```
|
||
|
|
|
||
|
|
**请求体**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"url": "https://www.1688.com/product/123456.html",
|
||
|
|
"sandbox": false
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**参数说明**
|
||
|
|
|
||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
||
|
|
|------|------|------|------|
|
||
|
|
| url | string | 是 | 商品链接 |
|
||
|
|
| sandbox | boolean | 否 | 是否使用沙箱模式 |
|
||
|
|
|
||
|
|
**响应**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"data": {
|
||
|
|
"jobId": "job-uuid",
|
||
|
|
"status": "PENDING",
|
||
|
|
"message": "Crawl job submitted successfully"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2.8 动态调价 [BIZ_MKT_30]
|
||
|
|
|
||
|
|
**请求**
|
||
|
|
```http
|
||
|
|
POST /api/v1/products/:id/pricing
|
||
|
|
```
|
||
|
|
|
||
|
|
**响应**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"data": {
|
||
|
|
"productId": 1,
|
||
|
|
"oldPrice": 29.99,
|
||
|
|
"newPrice": 32.99,
|
||
|
|
"reason": "Competitor price increased",
|
||
|
|
"profitMargin": 48.5,
|
||
|
|
"updatedAt": "2026-03-18T12:00:00Z"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2.9 自治上架 [CORE_AUTO_01]
|
||
|
|
|
||
|
|
**请求**
|
||
|
|
```http
|
||
|
|
POST /api/v1/products/autonomous-listing
|
||
|
|
```
|
||
|
|
|
||
|
|
**请求体**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"url": "https://www.1688.com/product/123456.html",
|
||
|
|
"targetPlatforms": ["AMAZON", "EBAY"]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**响应**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"data": {
|
||
|
|
"instanceId": "pipeline-uuid",
|
||
|
|
"status": "RUNNING",
|
||
|
|
"steps": [
|
||
|
|
{ "id": "crawl", "status": "PENDING" },
|
||
|
|
{ "id": "optimize", "status": "PENDING" },
|
||
|
|
{ "id": "publish", "status": "PENDING" }
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. 数据模型
|
||
|
|
|
||
|
|
### 3.1 Product (商品)
|
||
|
|
|
||
|
|
| 字段 | 类型 | 说明 |
|
||
|
|
|------|------|------|
|
||
|
|
| id | number | 主键 |
|
||
|
|
| tenantId | string | 租户ID |
|
||
|
|
| title | string | 商品标题 |
|
||
|
|
| description | string | 商品描述 |
|
||
|
|
| platform | string | 平台 (AMAZON, EBAY, etc.) |
|
||
|
|
| platformProductId | string | 平台商品ID |
|
||
|
|
| status | string | 状态 |
|
||
|
|
| sellingPrice | number | 售价 |
|
||
|
|
| purchasePrice | number | 采购价 |
|
||
|
|
| currency | string | 币种 |
|
||
|
|
| stock | number | 库存 |
|
||
|
|
| images | string[] | 图片URL列表 |
|
||
|
|
| attributes | object | 属性 |
|
||
|
|
| category | string | 类目 |
|
||
|
|
| tags | string[] | 标签 |
|
||
|
|
| profitMargin | number | 利润率 |
|
||
|
|
| roi | number | ROI |
|
||
|
|
| createdAt | string | 创建时间 |
|
||
|
|
| updatedAt | string | 更新时间 |
|
||
|
|
|
||
|
|
### 3.2 状态枚举
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
enum ProductStatus {
|
||
|
|
DRAFTED = 'DRAFTED', // 草稿
|
||
|
|
PENDING_REVIEW = 'PENDING_REVIEW', // 待审核
|
||
|
|
APPROVED = 'APPROVED', // 已通过
|
||
|
|
REJECTED = 'REJECTED', // 已拒绝
|
||
|
|
LISTED = 'LISTED', // 已上架
|
||
|
|
DELISTED = 'DELISTED' // 已下架
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. 错误码
|
||
|
|
|
||
|
|
| 错误码 | 说明 | HTTP状态 |
|
||
|
|
|--------|------|----------|
|
||
|
|
| PRODUCT_NOT_FOUND | 商品不存在 | 404 |
|
||
|
|
| INVALID_STATUS_TRANSITION | 非法状态流转 | 400 |
|
||
|
|
| UNAUTHORIZED | 未授权 | 401 |
|
||
|
|
| FORBIDDEN | 无权限 | 403 |
|
||
|
|
| VALIDATION_ERROR | 参数校验失败 | 400 |
|
||
|
|
| INTERNAL_ERROR | 内部错误 | 500 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5. 相关服务
|
||
|
|
|
||
|
|
- [Backend Design](../Backend_Design.md)
|
||
|
|
- [Order API](./Order_API.md)
|
||
|
|
- [Finance API](./Finance_API.md)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
*本文档基于代码自动生成,最后更新: 2026-03-18*
|