本系统实现了基于服务类型匹配和距离优先级的智能派单算法,通过综合考虑多个维度来推荐最适合的师傅,提高派单效率和用户满意度。
智能派单算法基于以下四个维度计算师傅与订单的匹配度:
服务类型匹配度 (40%权重)
KxRider.workTypeKeywords
字段距离评分 (30%权重)
KxRider.workRadio
字段和师傅当前位置评分权重 (20%权重)
KxRiderExt.currentTotalRating
获取平均评分经验权重 (10%权重)
KxRiderExt.currentTotalOrderCount
获取经验值确保师傅的以下信息已正确配置:
// 服务类型关键词 (用逗号分隔)
rider.setWorkTypeKeywords("家电维修,水电维修,开锁换锁");
// 工作半径 (公里)
rider.setWorkRadio(new BigDecimal("10.0"));
// 当前位置 (纬度/经度)
rider.setLatitude(new BigDecimal("39.9042"));
rider.setLongitude(new BigDecimal("116.4074"));
@Autowired
private IKxRiderService riderService;
// 获取推荐师傅列表(按匹配度排序)
List<KxRiderVo> recommendedRiders = riderService.getRecommendedRiders(orderMessage, storageId);
@Autowired
private ISmartDispatchService smartDispatchService;
// 自动选择最佳师傅(匹配度≥60分)
KxRiderVo bestRider = smartDispatchService.selectBestRider(orderMessage, storageId);
POST /rider/rider/getRecommendedRiders?storageId=1
Content-Type: application/json
{
"orderNo": "202501080001",
"latitude": 39.9042,
"longitude": 116.4074,
"riderSpuBOList": [
{
"spuName": "家电维修服务"
}
]
}
可通过配置文件调整算法参数:
kxmall:
smart-dispatch:
enabled: true # 是否启用智能派单
service-type-weight: 0.4 # 服务类型权重
distance-weight: 0.3 # 距离权重
rating-weight: 0.2 # 评分权重
experience-weight: 0.1 # 经验权重
min-match-score: 60.0 # 最低匹配度阈值
max-recommend-count: 10 # 最大推荐数量
当智能派单算法执行失败或找不到合适师傅时,系统会自动回退到原有的派单逻辑,确保系统的稳定性。
建议师傅设置的服务类型关键词:
家电维修,电器,空调,冰箱,洗衣机,电视
水电维修,管道,电路,插座,开关,水管
开锁换锁,锁具,门锁,密码锁
家政清洁,清洁,保洁,卫生
搬家服务,搬运,搬迁
建议监控以下指标: