一、系统设计目标
1. 实现商品全生命周期管理记录
2. 支持商品信息的版本追溯和变更审计
3. 提供商品迭代数据分析能力
4. 确保商品信息变更的准确性和及时性
二、核心功能模块设计
1. 商品信息模型设计
```
商品基础信息表(product_base)
- product_id (主键)
- name (商品名称)
- category_id (分类ID)
- brand_id (品牌ID)
- base_unit (基础单位)
- status (状态:上架/下架/待审核)
- create_time (创建时间)
- update_time (最后更新时间)
商品扩展信息表(product_ext)
- product_id (外键)
- spec_info (规格信息JSON)
- price_info (价格信息JSON)
- stock_info (库存信息JSON)
- image_urls (图片URL数组)
- description (商品描述)
- tags (标签数组)
商品迭代记录表(product_iteration)
- record_id (主键)
- product_id (关联商品ID)
- version (版本号)
- change_type (变更类型:新增/修改/删除)
- change_fields (变更字段JSON)
- old_values (旧值JSON)
- new_values (新值JSON)
- operator_id (操作人ID)
- operate_time (操作时间)
- change_reason (变更原因)
- approve_status (审批状态)
- approve_time (审批时间)
- approve_operator (审批人)
```
2. 商品迭代流程设计
1. 变更申请:
- 运营人员提交商品变更申请
- 填写变更字段、变更原因
- 系统自动记录变更前数据
2. 审批流程:
- 自动触发审批工作流
- 支持多级审批(根据商品重要性)
- 审批人可查看变更详情和历史版本
3. 版本发布:
- 审批通过后自动生成新版本
- 更新商品当前版本号
- 记录发布时间和操作人
4. 回滚机制:
- 支持回滚到指定历史版本
- 回滚操作同样记录迭代日志
三、技术实现方案
1. 后端实现
```java
// 商品迭代服务示例
@Service
public class ProductIterationService {
@Autowired
private ProductBaseRepository productBaseRepo;
@Autowired
private ProductIterationRepository iterationRepo;
@Transactional
public ProductIterationRecord applyChange(Long productId,
Map changes,
String operatorId,
String reason) {
// 1. 获取当前商品信息
ProductBase product = productBaseRepo.findById(productId)
.orElseThrow(() -> new RuntimeException("商品不存在"));
// 2. 记录变更前数据
Map oldValues = extractCurrentValues(product);
// 3. 创建迭代记录
ProductIterationRecord record = new ProductIterationRecord();
record.setProductId(productId);
record.setVersion(generateNextVersion(productId));
record.setChangeType(determineChangeType(changes));
record.setChangeFields(new HashMap<>(changes).keySet());
record.setOldValues(oldValues);
record.setNewValues(new HashMap<>(changes));
record.setOperatorId(operatorId);
record.setOperateTime(LocalDateTime.now());
record.setChangeReason(reason);
record.setApproveStatus(ApproveStatus.PENDING);
// 4. 保存迭代记录
iterationRepo.save(record);
return record;
}
private String generateNextVersion(Long productId) {
// 实现版本号生成逻辑,如:1.0.0 -> 1.0.1
// 可根据业务需求设计版本规则
}
}
```
2. 数据库实现要点
1. 版本控制策略:
- 采用乐观锁机制(version字段)
- 每次更新商品时版本号自动递增
2. 变更记录存储:
- 使用JSON格式存储变更字段和值
- 支持结构化和半结构化数据存储
3. 索引优化:
- 在product_id、version、operate_time等字段建立索引
- 支持快速查询特定商品的历史版本
3. 前端实现要点
1. 变更对比视图:
- 并排显示两个版本的差异
- 高亮显示变更字段
2. 审批工作流界面:
- 展示变更详情和历史版本
- 提供审批意见输入框
3. 版本时间轴:
- 可视化展示商品迭代历史
- 支持按时间范围筛选
四、关键业务规则
1. 版本号规则:
- 主版本号.次版本号.修订号(如1.2.3)
- 重大变更增加主版本号
- 功能新增/修改增加次版本号
- Bug修复增加修订号
2. 变更审批规则:
- 价格变更需二级审批
- 商品下架需三级审批
- 普通信息修改一级审批
3. 数据一致性保障:
- 变更记录与商品信息事务一致性
- 审批通过后才更新商品当前数据
五、扩展功能设计
1. 迭代分析看板:
- 统计商品变更频率
- 分析高频变更字段
- 识别频繁变更的商品
2. 变更影响评估:
- 预览变更对上下游系统的影响
- 自动生成变更影响报告
3. 自动化测试集成:
- 变更申请时自动触发相关测试
- 测试结果作为审批依据之一
六、实施路线图
1. 第一阶段(1个月):
- 完成核心数据模型设计
- 实现基础变更记录功能
- 开发简单版本对比视图
2. 第二阶段(2个月):
- 完善审批工作流
- 实现复杂变更场景支持
- 开发迭代分析基础功能
3. 第三阶段(1个月):
- 集成自动化测试
- 优化性能和用户体验
- 完成系统压力测试
七、运维监控
1. 变更监控:
- 实时监控高频变更商品
- 异常变更告警机制
2. 审计日志:
- 完整记录所有操作日志
- 支持操作日志检索
3. 数据备份:
- 迭代记录定期归档
- 支持历史数据恢复
通过以上设计,美团买菜系统可以实现完善的商品迭代记录管理,确保商品信息的可追溯性和业务连续性,同时为运营决策提供数据支持。