改进饮食推荐首页的"今日菜篮"食材推荐,从单纯按菌属推荐分排序 → 综合考虑菌属推荐、营养均衡、烹饪便捷性、能量控制,选出 10-12 个食材。
每份食材计算 4 个维度的子分数(均归一化到 0-100),加权合成综合分:
| 维度 | 权重 | 计算方式 |
|---|---|---|
| 菌属推荐分 | 40% | 知识库方向(推荐/避免/中性)+ 推荐指数修正 |
| 营养密度分 | 25% | 基于类别的维生素/矿物质基础分 + 宏量营养素质量分 |
| 烹饪便捷分 | 20% | 类别映射(快手=90,中等=60,耗时=35) |
| 能量效率分 | 15% | 营养密度/能量比值,能量低且营养高者分高 |
菌属推荐分:
营养密度分(基于类别启发式):
叠加宏量营养素质量修正(±15):
烹饪便捷分:
能量效率分:
IngredientRecommendation 新增字段:
private Integer caloriesPer100g; // 千卡/100g
private Integer cookingLevel; // 1=快手, 2=中等, 3=耗时
private Integer nutritionScore; // 营养密度分
private Integer cookingScore; // 烹饪便捷分
private String balanceReason; // 推荐理由(如"高蛋白·快手")
/api/diet/ingredients/suggest 和 /recommend)refreshIngredients() 方法不变,seed 机制保留foods 表无 vitamin/mineral 字段,评分完全在内存中计算| 文件 | 变更类型 | 说明 |
|---|---|---|
dto/IngredientRecommendation.java |
修改 | 新增 4 个字段 |
service/BeijingNutritionService.java |
修改 | generateIngredientList() 重构为均衡化选择 |
service/DietIngredientService.java |
修改 | refreshIngredients() 传递 seed 给新算法 |