功能详细设计文档:F3 人群定向推荐
功能优先级:P1(差异化核心) 文档版本:v1.0 关联 PRD:PRD-v1.0.md
一、页面结构
1.1 入口设计
人群入口位于首页快速入口区,以独立 Tab 或卡片形式呈现:
┌─────────────────────────────────────┐
│ │
│ 今日随便推荐 ────────────────── │
│ │
│ ┌─────────┐ ┌─────────┐ │
│ │ 👴 │ │ 🏥 │ │
│ │ 老人饮食 │ │ 病患饮食 │ │
│ └─────────┘ └─────────┘ │
│ ┌─────────┐ ┌─────────┐ │
│ │ 💪 │ │ ⚖️ │ │
│ │ 健身饮食 │ │ 减肥饮食 │ │
│ └─────────┘ └─────────┘ │
│ │
└─────────────────────────────────────┘
1.2 页面流程
人群入口卡片点击
↓
人群专属页(补充信息表单)
↓
推荐结果列表
↓
点击菜品 → 菜品详情页(F4)
二、人群分类详细设计
2.1 老年人群(Elderly)
补充信息表单
┌──────────────────────────────────────┐
│ 👴 老人饮食推荐 │
│ │
│ 年龄段: │
│ [60-70岁] [70-80岁] [80岁以上] │
│ │
│ 咀嚼能力: │
│ [正常] [较差-需软烂] [只能流食] │
│ │
│ 饮食限制(可多选): │
│ ☐ 低盐 ☐ 低糖 ☐ 低脂 ☐ 高钙 │
│ ☐ 无限制 │
│ │
│ 今日可用食材(选填): │
│ [ + 添加食材 ] │
│ │
│ [ 开始推荐 ] │
└──────────────────────────────────────┘
推荐逻辑
- 优先推荐 蒸、煮、炖、焖 类菜品
- 排除:油炸、辛辣、过硬、过咸菜品
- 硬度评级为「软」或「中」的菜品优先
- 高钙食材(豆腐、芝麻、深绿叶菜)加权
- 标注每道菜的咀嚼难度星级
菜品卡片特殊标注
┌──────────────────────────────────────┐
│ 🍲 蒸茄子(家常菜) │
│ 🟢软烂适合 · 🔥 85kcal │
│ ✅低盐 ✅易消化 │
│ [👴咀嚼难度:★☆☆(容易)] │
└──────────────────────────────────────┘
2.2 慢病患者(Patient)
补充信息表单
┌──────────────────────────────────────┐
│ 🏥 病患饮食推荐 │
│ │
│ 病症类型: │
│ [糖尿病] [高血压] [痛风] [肾病] │
│ [心脏病] [胃病] [其他] │
│ │
│ 当前状况: │
│ [控制期(严格限制)] │
│ [稳定期(日常饮食)] │
│ [恢复期(加强营养)] │
│ │
│ 其他约束(可多选): │
│ ☐ 低盐 ☐ 低糖 ☐ 低脂 │
│ ☐ 低嘌呤 ☐ 低蛋白 ☐ 低钾 │
│ │
│ [ 开始推荐 ] │
└──────────────────────────────────────┘
推荐逻辑
| 病症 | 核心限制 | 推荐策略 |
|---|---|---|
| 糖尿病 | 控糖、低GI | 推荐 GI ≤ 55 的菜品,标注每道菜的 GI 值 |
| 高血压 | 控钠、低盐 | 推荐每份钠含量 < 600mg 的菜品 |
| 痛风 | 控嘌呤 | 避免内脏类、海鲜类;推荐低嘌呤蔬菜 |
| 肾病 | 低蛋白、低钾 | 推荐优质蛋白,少豆类 |
| 心脏病 | 低脂、低盐 | 推荐少油、清淡的菜品 |
| 胃病 | 软烂、少刺激 | 推荐蒸煮类,避免辛辣、生冷 |
菜品卡片特殊标注
┌──────────────────────────────────────┐
│ 🥗 凉拌黄瓜(清爽小菜) │
│ 🟢GI值:15(低GI) │
│ ⚠️ 钠含量:280mg/份 │
│ ✅低脂 ✅低卡 │
│ [⚠️ 注意:胃病患者需少量食用] │
└──────────────────────────────────────┘
⚠️ 免责声明设计
由于病患人群的特殊性,每道菜品详情页底部需展示:
⚠️ 温馨提示:
本推荐仅供参考,不构成医疗建议。
如有特殊病情,请遵医嘱调整饮食。
如有疑问,请咨询您的营养师或主治医生。
2.3 健身人群(Fitness)
补充信息表单
┌──────────────────────────────────────┐
│ 💪 健身饮食推荐 │
│ │
│ 健身目标: │
│ [减脂] [增肌] [维持体型] [力量训练] │
│ │
│ 当前阶段: │
│ [训练日] [休息日] [比赛/冲刺期] │
│ │
│ 蛋白质摄入目标(估算): │
│ [保守 1g/kg] [标准 1.5g/kg] │
│ [强化 2g/kg] │
│ │
│ 今日可用食材(选填): │
│ [ + 添加食材 ] │
│ │
│ [ 开始推荐 ] │
└──────────────────────────────────────┘
推荐逻辑
| 目标 | 核心逻辑 | 菜品加权 |
|---|---|---|
| 减脂 | 低卡、高蛋白、高纤维、饱腹感强 | 优先推荐 300kcal 以下、蛋白质 > 20g/份 |
| 增肌 | 高蛋白、适量碳水、低脂 | 优先推荐蛋白质 > 30g/份、低脂 |
| 维持 | 均衡饮食 | 参考标准营养配比 |
| 力量训练 | 碳水 + 蛋白质双高 | 优先推荐训练后餐(快碳+蛋白) |
训练日 vs 休息日
- 训练日:推荐高碳水 + 高蛋白(训练后餐推荐快碳如香蕉+鸡胸)
- 休息日:推荐低碳水 + 高蛋白
菜品卡片特殊标注
┌──────────────────────────────────────┐
│ 🍗 香煎鸡胸肉(健身经典) │
│ 🔥 200kcal · 🥩蛋白质:42g │
│ 🟢低碳水 🟢低脂 │
│ [💪 完美训练后餐:高蛋白低脂] │
└──────────────────────────────────────┘
2.4 减肥人群(Weight Loss)
补充信息表单
┌──────────────────────────────────────┐
│ ⚖️ 减肥饮食推荐 │
│ │
│ 当前阶段: │
│ [初期(控制总热量)] │
│ [中期(调整饮食结构)] │
│ [维持期(稳定体重)] │
│ │
│ 饮食习惯偏好: │
│ [正常吃三餐] [16:8轻断食] │
│ [少食多餐] [无特别偏好] │
│ │
│ 今日可接受的最大热量: │
│ [1000kcal以下] [1200kcal] │
│ [1500kcal] [不限制] │
│ │
│ 今日可用食材(选填): │
│ [ + 添加食材 ] │
│ │
│ [ 开始推荐 ] │
└──────────────────────────────────────┘
推荐逻辑
- 优先推荐 低热量密度(低卡/高饱腹感)的菜品
- 每道菜标注「饱腹感指数」:★1-5
- 推荐菜品以蔬菜、蛋白质为主,减少精制碳水
- 标注「易坚持程度」:简单易做才能长期坚持
饱腹感指数参考指标
饱腹感指数 = (蛋白质含量 × 0.3 + 纤维含量 × 0.4 + 体积/热量 × 0.3)
菜品卡片特殊标注
┌──────────────────────────────────────┐
│ 🥗 鸡胸肉沙拉(轻食首选) │
│ 🔥 180kcal · 饱腹感:★★★★☆ │
│ 🥩蛋白质:35g · 🥬纤维:6g │
│ 🟢低碳水 ✅易坚持 │
│ [⚖️ 热量警戒线内,可放心食用] │
└──────────────────────────────────────┘
三、推荐结果页
3.1 列表页结构
┌──────────────────────────────────────┐
│ ← 返回 👴 老人饮食推荐 筛选 │ ← 顶部导航
├──────────────────────────────────────┤
│ │
│ 当前条件:70-80岁 · 咀嚼较差 · 低盐 │
│ [全部清除] │
│ │
│ 推荐结果:共 23 道 │
│ │
│ ┌──────────────────────────┐ │
│ │ 🍲 豆腐蒸肉饼 ★推荐 │ │
│ │ 🟢软烂 ✅低盐 🔥180kcal │ │
│ │ 缺少:无 │ │
│ └──────────────────────────┘ │
│ │
│ ┌──────────────────────────┐ │
│ │ 🥬 菠菜猪肝汤 🉐优质 │ │
│ │ 🟢软烂 ⚠️高钙 🔥150kcal │ │
│ │ 缺少:无 │ │
│ └──────────────────────────┘ │
│ │
└──────────────────────────────────────┘
3.2 推荐标签说明
| 标签 | 含义 |
|---|---|
| ★ 推荐 | 系统认为最符合该人群当前需求的菜品 |
| 🉐 优质 | 营养配比优秀,超出预期 |
| ⚠️ 注意 | 需要注意某些成分,适合人群有限制 |
| 🆕 新菜 | 新入库菜品,无历史评分 |
四、技术数据模型
4.1 人群配置表
interface CrowdConfig {
crowdType: 'elderly' | 'patient' | 'fitness' | 'weightloss';
displayName: string; // 展示名称
icon: string; // 图标 emoji
formFields: FormField[]; // 补充信息表单
recommendRules: RecommendRule[]; // 推荐规则
dishLabels: DishLabel[]; // 特殊标签定义
disclaimer: string; // 免责声明
}
interface RecommendRule {
field: string; // 字段名
operator: 'eq' | 'lte' | 'gte' | 'in' | 'nin';
value: any; // 比较值
weight?: number; // 加权系数
exclude?: boolean; // true = 排除
}
4.2 推荐请求
interface CrowdRecommendRequest {
crowdType: 'elderly' | 'patient' | 'fitness' | 'weightloss';
formData: {
// 通用
ingredients?: string[];
// 老人
ageRange?: '60-70' | '70-80' | '80+';
chewingAbility?: 'normal' | 'poor' | 'liquid';
elderlyRestrictions?: string[];
// 病患
disease?: 'diabetes' | 'hypertension' | 'gout' | 'kidney' | 'heart' | 'stomach' | 'other';
diseaseStage?: 'controlled' | 'stable' | 'recovery';
// 健身
fitnessGoal?: 'fatloss' | 'muscle' | 'maintain' | 'strength';
trainingDay?: boolean;
proteinTarget?: 'conservative' | 'standard' | 'intensive';
// 减肥
weightLossStage?: 'early' | 'mid' | 'maintain';
dietHabit?: 'three-meals' | 'intermittent' | 'small-frequent' | 'none';
maxCalories?: number;
};
sortBy?: 'match' | 'calories' | 'protein';
page?: number;
pageSize?: number;
}
五、复核检查项
| 检查点 | 状态 |
|---|---|
| 四个人群入口清晰,图标语义正确 | ✅ |
| 表单设计贴合各人群实际需求 | ✅ |
| 推荐逻辑规则明确可实现 | ✅ |
| 菜品卡片特殊标注覆盖各人群特点 | ✅ |
| 病患人群有免责声明 | ✅ |
| 技术数据结构完整 | ✅ |
| 分类/健身/减肥各有差异化标签 | ✅ |