一、系统概述
美团买菜商品迭代记录系统旨在跟踪商品从上线到下架的全生命周期变化,包括价格调整、规格变更、库存变动、促销活动等关键信息,为运营、采购和数据分析提供决策支持。
二、核心功能模块
1. 商品基础信息管理
- 商品档案:存储商品ID、名称、分类、品牌、规格等基础信息
- SKU管理:支持多规格商品管理,记录各SKU的条形码、单位等
- 供应商信息:关联供应商信息及采购价
2. 迭代记录核心功能
- 变更类型分类:
- 价格变更(原价、现价、促销价)
- 库存变更(入库、出库、调拨、盘点)
- 商品状态变更(上架、下架、预售)
- 商品信息变更(名称、图片、描述等)
- 促销活动关联(满减、折扣、赠品等)
- 变更记录存储:
- 变更时间戳(精确到秒)
- 变更前内容
- 变更后内容
- 变更操作人
- 变更原因/备注
3. 版本控制与回滚
- 支持商品信息版本快照
- 可回滚到指定历史版本
- 版本差异对比功能
4. 审批流程管理
- 变更申请提交
- 多级审批流程(可根据变更类型配置)
- 审批意见记录
- 变更执行与通知
三、技术实现方案
1. 数据库设计
```sql
-- 商品主表
CREATE TABLE product (
product_id VARCHAR(32) PRIMARY KEY,
name VARCHAR(100) NOT NULL,
category_id VARCHAR(32),
brand_id VARCHAR(32),
status TINYINT DEFAULT 1 COMMENT 1-上架 0-下架,
create_time DATETIME,
update_time DATETIME
);
-- 商品变更记录表
CREATE TABLE product_change_log (
log_id VARCHAR(32) PRIMARY KEY,
product_id VARCHAR(32) NOT NULL,
change_type VARCHAR(20) NOT NULL COMMENT PRICE/STOCK/INFO/STATUS/PROMOTION,
field_name VARCHAR(50) COMMENT 变更字段名,
old_value TEXT,
new_value TEXT,
operator_id VARCHAR(32),
operator_name VARCHAR(50),
change_time DATETIME,
approval_status TINYINT DEFAULT 0 COMMENT 0-待审批 1-已通过 2-已拒绝,
approval_comment TEXT,
FOREIGN KEY (product_id) REFERENCES product(product_id)
);
-- 商品版本快照表
CREATE TABLE product_version (
version_id VARCHAR(32) PRIMARY KEY,
product_id VARCHAR(32) NOT NULL,
version_number INT AUTO_INCREMENT,
snapshot JSON,
change_time DATETIME,
change_desc VARCHAR(255),
FOREIGN KEY (product_id) REFERENCES product(product_id)
);
```
2. 关键实现代码示例
```java
// 商品变更记录服务
@Service
public class ProductChangeService {
@Autowired
private ProductChangeLogRepository logRepository;
@Autowired
private ProductVersionRepository versionRepository;
@Transactional
public void recordChange(ProductChangeDTO changeDTO) {
// 1. 记录变更日志
ProductChangeLog log = new ProductChangeLog();
log.setProductId(changeDTO.getProductId());
log.setChangeType(changeDTO.getChangeType());
log.setFieldName(changeDTO.getFieldName());
log.setOldValue(changeDTO.getOldValue());
log.setNewValue(changeDTO.getNewValue());
log.setOperatorId(changeDTO.getOperatorId());
log.setOperatorName(changeDTO.getOperatorName());
log.setChangeTime(LocalDateTime.now());
logRepository.save(log);
// 2. 创建版本快照(根据配置决定频率)
if (shouldCreateSnapshot(changeDTO.getChangeType())) {
Product product = productRepository.findById(changeDTO.getProductId())
.orElseThrow(() -> new RuntimeException("Product not found"));
ProductVersion version = new ProductVersion();
version.setProductId(product.getId());
version.setSnapshot(objectMapper.convertValue(product, JsonNode.class));
version.setChangeTime(LocalDateTime.now());
version.setChangeDesc(changeDTO.getChangeDesc());
versionRepository.save(version);
}
}
// 获取商品变更历史
public List
getChangeHistory(String productId) {
return logRepository.findByProductIdOrderByChangeTimeDesc(productId);
}
// 获取商品版本历史
public List getVersionHistory(String productId) {
return versionRepository.findByProductIdOrderByVersionNumberDesc(productId);
}
}
```
3. 前端展示方案
1. 商品详情页:
- 显示当前商品信息
- 添加"查看变更历史"按钮
- 弹出模态框展示变更记录时间轴
2. 变更历史页面:
- 按时间倒序排列变更记录
- 支持按变更类型筛选
- 点击记录可查看变更前后对比
3. 版本对比功能:
- 选择两个版本进行对比
- 高亮显示差异字段
四、高级功能扩展
1. 变更影响分析:
- 分析价格变更对销量的影响
- 评估库存变更对履约率的影响
- 预测促销活动效果
2. 自动化规则引擎:
- 设置价格变更自动审批规则
- 库存预警自动触发采购流程
- 商品信息变更自动同步至各渠道
3. 数据可视化:
- 商品变更频率统计
- 变更类型分布图表
- 变更与销售趋势关联分析
五、实施路线图
1. 第一阶段(1个月):
- 完成基础变更记录功能
- 实现价格、库存变更跟踪
- 开发简单历史查看界面
2. 第二阶段(2个月):
- 添加版本控制功能
- 实现审批流程
- 开发高级筛选和对比功能
3. 第三阶段(持续):
- 集成数据分析模块
- 开发自动化规则引擎
- 完善数据可视化看板
六、注意事项
1. 性能考虑:
- 对高频变更字段(如库存)采用异步记录方式
- 设置合理的变更记录保留周期
2. 数据安全:
- 变更记录不可篡改
- 敏感操作需要二次验证
3. 用户体验:
- 提供清晰的变更对比视图
- 支持按时间范围快速筛选
4. 系统集成:
- 与采购系统、库存系统、促销系统对接
- 确保变更记录的实时性和准确性
通过此系统的实施,美团买菜可以实现商品信息的全生命周期管理,提高运营效率,降低人为错误风险,并为数据分析提供丰富的历史数据支持。