一、功能概述
本地供应商评价功能是小象买菜系统中用于收集、展示和管理用户对本地农产品供应商反馈的核心模块,旨在提升供应链透明度、优化供应商管理并增强用户信任。
二、核心功能设计
1. 评价维度设计
- 商品质量(40%权重):
- 新鲜度
- 规格符合度
- 包装完整性
- 缺货率
- 服务水平(30%权重):
- 配送准时率
- 响应速度
- 退换货处理
- 沟通态度
- 价格竞争力(20%权重):
- 性价比
- 价格波动合理性
- 促销活动频率
- 可持续性(10%权重):
- 有机/绿色认证
- 本地化程度
- 环保包装
2. 评价系统架构
```
用户界面层
│
├─ 评价提交组件(星级评分+文字评论+图片上传)
├─ 评价展示组件(供应商主页/商品详情页)
├─ 评价管理后台(供应商/平台管理员)
│
数据层
│
├─ 评价数据库(MySQL/MongoDB)
├─ 用户行为日志
├─ 供应商画像数据
│
业务逻辑层
│
├─ 评价计算引擎(加权平均算法)
├─ 反作弊机制(IP检测/行为分析)
├─ 评价审核流程
```
三、技术实现方案
1. 前端实现
```javascript
// 评价提交组件示例(React)
function RatingForm({ supplierId }) {
const [rating, setRating] = useState(0);
const [comment, setComment] = useState();
const [images, setImages] = useState([]);
const handleSubmit = async () => {
const formData = new FormData();
formData.append(supplier_id, supplierId);
formData.append(rating, rating);
formData.append(comment, comment);
images.forEach(img => formData.append(images[], img));
await fetch(/api/reviews, {
method: POST,
body: formData
});
};
return (
);
}
```
2. 后端实现(Node.js示例)
```javascript
// 评价处理路由
router.post(/reviews, authMiddleware, async (req, res) => {
try {
const { supplier_id, rating, comment } = req.body;
const userId = req.user.id;
// 反作弊检查
if (await hasRecentReview(userId, supplier_id)) {
return res.status(403).json({ error: 评价频率过高 });
}
// 创建评价记录
const review = await Review.create({
supplier_id,
user_id: userId,
rating,
comment,
images: req.files?.map(f => f.location) || []
});
// 更新供应商评分
await updateSupplierRating(supplier_id);
res.status(201).json(review);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
```
3. 数据库设计
```sql
CREATE TABLE suppliers (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
avg_rating DECIMAL(3,2) DEFAULT 0,
review_count INT DEFAULT 0,
-- 其他供应商信息
);
CREATE TABLE reviews (
id INT PRIMARY KEY AUTO_INCREMENT,
supplier_id INT NOT NULL,
user_id INT NOT NULL,
rating TINYINT NOT NULL CHECK (rating BETWEEN 1 AND 5),
comment TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- 反作弊字段
ip_address VARCHAR(45),
user_agent TEXT,
FOREIGN KEY (supplier_id) REFERENCES suppliers(id)
);
```
四、关键算法实现
1. 供应商评分计算
```python
def calculate_supplier_rating(supplier_id):
获取最近90天的有效评价
reviews = Review.objects.filter(
supplier_id=supplier_id,
created_at__gte=datetime.now() - timedelta(days=90),
is_verified=True
)
if not reviews:
return 0
加权计算(考虑评价者信誉)
total_weight = 0
weighted_sum = 0
for review in reviews:
user_weight = get_user_weight(review.user_id) 根据用户历史行为计算权重
weighted_sum += review.rating * user_weight
total_weight += user_weight
return weighted_sum / total_weight if total_weight > 0 else 0
```
2. 评价排序算法
```javascript
function sortReviews(reviews, sortBy = newest) {
switch(sortBy) {
case highest_rating:
return [...reviews].sort((a, b) => b.rating - a.rating);
case lowest_rating:
return [...reviews].sort((a, b) => a.rating - b.rating);
case helpful:
return [...reviews].sort((a, b) => (b.helpful_votes - b.unhelpful_votes) -
(a.helpful_votes - a.unhelpful_votes));
default: // newest
return [...reviews].sort((a, b) => new Date(b.created_at) - new Date(a.created_at));
}
}
```
五、反作弊与质量控制
1. 评价验证机制:
- 购买验证:仅允许对实际购买过的商品评价
- 时间窗口限制:收货后7天内可评价
- 验证码验证:高频评价时触发
2. 异常检测:
```python
def detect_fake_reviews(supplier_id):
检测指标
indicators = {
rating_variance: calculate_rating_variance(supplier_id),
new_user_ratio: get_new_user_ratio(supplier_id),
time_pattern: analyze_time_pattern(supplier_id),
text_similarity: check_text_similarity(supplier_id)
}
综合评分
score = sum(indicators.values())
return score > THRESHOLD 返回是否可能存在虚假评价
```
3. 人工审核流程:
- 随机抽样审核
- 负面评价优先审核
- 供应商申诉处理
六、供应商端功能
1. 评价响应系统:
- 实时通知新评价
- 官方回复模板
- 私信沟通功能
2. 绩效看板:
```javascript
// 供应商绩效仪表盘示例
function SupplierDashboard({ supplierData }) {
return (
总体评分
{supplierData.review_count}条评价
评分趋势
改进建议
{supplierData.improvement_areas.map(area => (
- {area}
))}
);
}
```
七、部署与监控
1. 性能优化:
- 评价数据分表存储(按供应商ID分片)
- 异步评分计算(使用消息队列)
- 缓存热门供应商评分(Redis)
2. 监控指标:
- 评价提交成功率
- 评分计算延迟
- 虚假评价检测率
- 供应商响应时效
八、扩展功能建议
1. 图片识别验证:使用AI验证评价图片真实性
2. 评价情感分析:自动分类评价情感倾向
3. 供应商分级体系:基于评价建立供应商等级制度
4. 评价激励系统:优质评价奖励积分或优惠券
该方案可根据实际业务需求和技术栈进行调整,建议采用敏捷开发方式分阶段实施,优先实现核心评价功能,再逐步完善反作弊和数据分析模块。