Files
agent/.opencode/skills/business/product-management/SKILL.md

133 lines
3.6 KiB
Markdown
Raw Normal View History

2026-02-16 12:46:37 +08:00
---
name: product-management
description: 商品管理模块的业务规则、数据模型、状态机与 UI 交互规范。当涉及商品相关功能开发时必须参考此 Skill。
---
# 商品管理 (Product Management) 业务 Skill
## 适用范围
当任务涉及以下场景时,必须加载并遵循此 Skill
- 商品列表、商品详情、商品创建/编辑
- SKU 管理、库存管理、价格体系
- 商品分类与属性管理
## 业务规则
### 1. 商品状态机
```
草稿 (draft) → 待审核 (pending_review) → 已上架 (online) → 已下架 (offline)
↓ ↑
驳回 (rejected) ────────────────────────────→ ┘
```
**关键约束**:
- 草稿状态可直接删除
- 已上架商品必须先下架才能编辑核心字段名称、价格、SKU
- 已上架商品的**非核心字段**(描述、图片)允许直接编辑
- 删除操作仅限于「草稿」和「已下架」状态
### 2. 价格体系
- `originalPrice`: 原价(必填,> 0
- `salePrice`: 售价(必填,> 0且 ≤ 原价)
- `costPrice`: 成本价(选填,仅管理员可见)
- 价格精度: 统一保留 **2 位小数**,使用 `number` 类型,前端展示时通过 `valueType: 'money'` 格式化
### 3. 库存规则
- 库存低于 `safetyStock`(安全库存)时在列表显示 ⚠️ 警告标识
- 库存为 0 时自动标记为「缺货」状态(不影响上下架状态)
- 库存变更必须记录变更日志(调拨、入库、出库、盘点)
## 数据模型
### 核心接口
```typescript
// src/services/product.ts
export async function getProductList(
params: ProductQueryParams,
): Promise<API.PageResult<ProductItem>> {}
export async function getProductDetail(id: string): Promise<ProductItem> {}
export async function createProduct(
data: ProductFormData,
): Promise<ProductItem> {}
export async function updateProduct(
id: string,
data: Partial<ProductFormData>,
): Promise<ProductItem> {}
export async function updateProductStatus(
id: string,
status: ProductStatus,
): Promise<void> {}
export async function deleteProduct(id: string): Promise<void> {}
```
### 关键类型
```typescript
// src/pages/ProductList/data.d.ts
type ProductStatus =
| 'draft'
| 'pending_review'
| 'online'
| 'offline'
| 'rejected';
interface ProductItem {
id: string;
name: string;
categoryId: string;
categoryName: string;
originalPrice: number;
salePrice: number;
costPrice?: number;
stock: number;
safetyStock: number;
status: ProductStatus;
images: string[];
description: string;
attributes: Record<string, string>;
createdAt: string;
updatedAt: string;
}
```
## UI 交互规范
### 1. 商品列表页
- **组件**: `ProTable`
- **必须包含列**: 商品名称、分类、售价、库存、状态、操作
- **状态筛选**: 使用 `valueEnum` 映射状态标签颜色
- draft → 灰色
- pending_review → 橙色
- online → 绿色
- offline → 默认
- rejected → 红色
- **批量操作**: 支持批量上架/下架
### 2. 商品编辑
- **组件**: `ProForm` + `StepsForm`(分步表单)
- **步骤**: 基本信息 → SKU/价格 → 图片/描述 → 确认提交
- **价格输入**: 使用 `ProFormMoney``ProFormDigit` 并配置 `precision={2}`
### 3. 库存警告
- 库存 < 安全库存: 单元格显示橙色 + ⚠️
- 库存 = 0: 单元格显示红色 + "缺货" 标签
## i18n Key 规范
菜单和页面文案 Key 前缀:
- 菜单: `menu.product.*`
- 页面: `pages.product.*`
- 表单: `product.form.*`
- 状态: `product.status.*`