一、系统概述
美团买菜商品迭代记录系统用于跟踪和管理商品从上线到下架的全生命周期变更,包括商品信息修改、价格调整、库存变化、上下架状态等关键操作记录。
二、核心功能设计
1. 商品变更记录模块
- 变更类型分类:
- 基础信息变更(名称、描述、图片等)
- 价格体系变更(售价、促销价、会员价)
- 库存相关变更(总库存、预警库存、区域库存)
- 状态变更(上架、下架、预售、缺货)
- 营销活动关联(参与的促销活动变更)
- 记录字段:
- 变更ID
- 商品ID
- 变更类型
- 变更前内容
- 变更后内容
- 变更人
- 变更时间
- 变更原因
- 关联操作(如关联的促销活动ID)
2. 版本管理模块
- 商品版本快照:
- 每次重大变更自动生成版本快照
- 支持按版本号回溯商品完整信息
- 版本对比功能(高亮显示差异)
- 版本控制策略:
- 自动版本号生成(如V1.0, V1.1等)
- 手动版本标记(如"2023夏季版")
- 版本有效期管理
3. 审批流程模块
- 变更审批工作流:
- 普通变更:自动通过
- 敏感变更(如价格大幅调整):需上级审批
- 重大变更:多级审批+会签
- 审批状态跟踪:
- 待审批
- 审批中
- 已通过
- 已拒绝
- 已撤销
4. 查询与统计模块
- 多维查询:
- 按商品ID查询变更历史
- 按时间范围查询
- 按变更类型筛选
- 按操作人筛选
- 统计分析:
- 变更频率分析
- 变更类型分布
- 操作人活跃度
- 变更与销售数据关联分析
三、技术实现方案
1. 数据库设计
```sql
CREATE TABLE product_change_log (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
product_id VARCHAR(32) NOT NULL,
change_type ENUM(info,price,inventory,status,promotion) NOT NULL,
before_value TEXT,
after_value TEXT,
operator_id VARCHAR(32) NOT NULL,
operator_name VARCHAR(50) NOT NULL,
change_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
change_reason VARCHAR(500),
approval_status ENUM(pending,approved,rejected) DEFAULT pending,
approval_id VARCHAR(32),
approval_time DATETIME,
related_id VARCHAR(32) COMMENT 关联的促销活动ID等
);
CREATE TABLE product_version (
version_id VARCHAR(32) PRIMARY KEY,
product_id VARCHAR(32) NOT NULL,
version_number VARCHAR(20) NOT NULL,
version_name VARCHAR(100),
snapshot_data JSON NOT NULL,
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
creator_id VARCHAR(32) NOT NULL,
effective_start DATETIME,
effective_end DATETIME,
is_current BOOLEAN DEFAULT FALSE
);
```
2. 核心实现代码示例
```java
// 商品变更记录服务
@Service
public class ProductChangeService {
@Autowired
private ProductChangeLogMapper changeLogMapper;
@Autowired
private ProductVersionMapper versionMapper;
@Autowired
private ApprovalWorkflowClient approvalWorkflowClient;
@Transactional
public void recordProductChange(ProductChangeDTO changeDTO) {
// 1. 记录变更日志
ProductChangeLog log = new ProductChangeLog();
BeanUtils.copyProperties(changeDTO, log);
changeLogMapper.insert(log);
// 2. 检查是否需要审批
if (requiresApproval(changeDTO.getChangeType())) {
String approvalId = approvalWorkflowClient.startApproval(
changeDTO.getProductId(),
changeDTO.getOperatorId(),
changeDTO.getChangeReason()
);
log.setApprovalStatus("pending");
log.setApprovalId(approvalId);
changeLogMapper.updateById(log);
} else {
// 3. 自动通过的变更处理
applyChange(changeDTO);
// 4. 创建版本快照(如果是重大变更)
if (isMajorChange(changeDTO)) {
createVersionSnapshot(changeDTO.getProductId(),
"自动版本_" + System.currentTimeMillis());
}
}
}
private void createVersionSnapshot(String productId, String versionName) {
// 获取商品当前完整信息
ProductFullInfo fullInfo = productService.getFullProductInfo(productId);
// 创建版本记录
ProductVersion version = new ProductVersion();
version.setVersionId(UUID.randomUUID().toString());
version.setProductId(productId);
version.setVersionNumber("V" + System.currentTimeMillis());
version.setVersionName(versionName);
version.setSnapshotData(JSON.toJSONString(fullInfo));
version.setCreatorId(SecurityContext.getCurrentUserId());
versionMapper.insert(version);
}
// 其他辅助方法...
}
```
3. 审批流程集成
```java
// 审批回调处理
@RestController
@RequestMapping("/api/approval")
public class ApprovalCallbackController {
@Autowired
private ProductChangeService changeService;
@PostMapping("/callback")
public ResponseEntity<?> handleApprovalResult(@RequestBody ApprovalResultDTO result) {
if ("approved".equals(result.getStatus())) {
// 审批通过,执行变更
ProductChangeDTO changeDTO = changeService.getChangeByApprovalId(result.getApprovalId());
changeService.applyChange(changeDTO);
// 创建版本快照
if (changeDTO.getChangeType() == ChangeType.PRICE) {
changeService.createVersionSnapshot(
changeDTO.getProductId(),
"价格调整版本_" + System.currentTimeMillis()
);
}
} else {
// 审批拒绝,记录状态
changeService.updateApprovalStatus(result.getApprovalId(), "rejected");
}
return ResponseEntity.ok().build();
}
}
```
四、前端实现要点
1. 变更历史时间轴:
- 使用时间轴组件展示商品变更历史
- 不同变更类型使用不同颜色标识
- 支持点击查看变更详情
2. 版本对比视图:
- 并排显示两个版本差异
- 高亮显示变更字段
- 支持导出对比结果
3. 审批流程跟踪:
- 审批状态可视化展示
- 审批意见历史记录
- 审批进度提醒
五、高级功能扩展
1. 变更影响分析:
- 分析价格变更对销量的影响
- 评估库存变更对履约率的影响
- 预测促销活动变更的收益
2. 自动化变更策略:
- 基于销售数据的自动调价
- 库存预警自动补货建议
- 季节性商品自动上下架
3. 多端同步:
- 变更实时同步到APP、小程序、H5等各端
- 变更预览功能(预览各端展示效果)
六、部署与监控
1. 日志收集:
- 集中收集所有商品变更日志
- 支持按商品、时间、操作人等维度查询
2. 告警机制:
- 异常变更告警(如价格大幅波动)
- 审批超时告警
- 频繁变更告警
3. 数据备份:
- 变更记录定期备份
- 版本快照冷热数据分离存储
七、实施路线图
1. 第一阶段(1个月):
- 完成基础变更记录功能
- 实现简单版本管理
- 开发基础查询界面
2. 第二阶段(2个月):
- 集成审批工作流
- 完善版本对比功能
- 开发统计分析模块
3. 第三阶段(1个月):
- 实现高级分析功能
- 开发自动化变更策略
- 完成多端同步适配
该方案可帮助美团买菜实现商品全生命周期的透明化管理,提高运营效率,降低人为错误风险,并为数据分析提供丰富的历史数据支持。