Files
plates-server/docs/diet-records-api-guide.md
richarjiang 485ba1f67c feat: 新增饮食记录和分析功能
- 创建饮食记录相关的数据库模型、DTO和API接口,支持用户手动添加和AI视觉识别记录饮食。
- 实现饮食分析服务,提供营养分析和健康建议,优化AI教练服务以集成饮食分析功能。
- 更新用户控制器,添加饮食记录的增删查改接口,增强用户饮食管理体验。
- 提供详细的API使用指南和数据库创建脚本,确保功能的完整性和可用性。
2025-08-18 16:27:01 +08:00

3.8 KiB
Raw Blame History

饮食记录功能 API 使用指南

功能概述

饮食记录功能允许用户通过多种方式记录和管理饮食信息,包括:

  • 手动添加饮食记录
  • AI视觉识别自动记录通过拍照
  • 获取饮食历史记录
  • 营养分析和健康建议

数据库模型

饮食记录表 (t_user_diet_history)

包含以下关键字段:

  • 基础信息:食物名称、餐次类型、用餐时间
  • 营养成分:热量、蛋白质、碳水化合物、脂肪、膳食纤维等
  • 记录来源手动输入、AI视觉识别、其他
  • AI分析结果完整的识别数据JSON格式

API 端点

1. 添加饮食记录

POST /users/diet-records

请求体示例:

{
  "mealType": "lunch",
  "foodName": "鸡胸肉沙拉",
  "foodDescription": "烤鸡胸肉配蔬菜沙拉",
  "portionDescription": "1份",
  "estimatedCalories": 280,
  "proteinGrams": 35.0,
  "carbohydrateGrams": 15.5,
  "fatGrams": 8.0,
  "fiberGrams": 5.2,
  "source": "manual",
  "notes": "午餐很健康"
}

2. 获取饮食记录历史

GET /users/diet-records?startDate=2024-01-01&endDate=2024-01-31&mealType=lunch&page=1&limit=20

响应示例:

{
  "records": [
    {
      "id": 1,
      "mealType": "lunch",
      "foodName": "鸡胸肉沙拉",
      "estimatedCalories": 280,
      "proteinGrams": 35.0,
      "source": "manual",
      "createdAt": "2024-01-15T12:30:00.000Z"
    }
  ],
  "total": 1,
  "page": 1,
  "limit": 20,
  "totalPages": 1
}

3. 更新饮食记录

PUT /users/diet-records/:id

4. 删除饮食记录

DELETE /users/diet-records/:id

5. 获取营养汇总分析

GET /users/nutrition-summary?mealCount=10

响应示例:

{
  "nutritionSummary": {
    "totalCalories": 2150,
    "totalProtein": 85.5,
    "totalCarbohydrates": 180.2,
    "totalFat": 65.8,
    "totalFiber": 28.5,
    "recordCount": 10,
    "dateRange": {
      "start": "2024-01-10T08:00:00.000Z",
      "end": "2024-01-15T19:00:00.000Z"
    }
  },
  "recentRecords": [...],
  "healthAnalysis": "基于您最近的饮食记录,我将为您提供个性化的营养分析和健康建议。",
  "nutritionScore": 78,
  "recommendations": [
    "建议增加膳食纤维摄入,多吃蔬菜、水果和全谷物。",
    "您的饮食结构相对均衡,继续保持良好的饮食习惯!"
  ]
}

AI教练集成

饮食记录指令

用户可以使用以下指令触发饮食记录功能:

  • #记饮食#饮食#记录饮食

AI视觉识别流程

  1. 用户发送 #记饮食 指令并上传食物图片
  2. AI使用视觉模型分析图片提取
    • 食物名称和类型
    • 营养成分估算
    • 份量描述
    • 餐次类型(基于时间自动判断)
  3. 如果识别置信度足够,自动保存到数据库
  4. 结合用户历史饮食记录,提供个性化营养分析

营养分析上下文

AI教练会自动获取用户最近的饮食记录提供

  • 营养摄入趋势分析
  • 个性化健康建议
  • 基于历史记录的改善建议

数据库配置

  1. 运行 SQL 脚本创建表:
mysql -u username -p database_name < docs/diet-records-table-create.sql
  1. 在 UsersModule 中已自动注册 UserDietHistory 模型

注意事项

  1. 营养数据准确性AI估算的营养数据仅供参考实际值可能有差异
  2. 图片质量:为了更好的识别效果,建议上传清晰的食物图片
  3. 隐私保护:用户饮食数据会安全存储,仅用于个性化分析
  4. 性能优化:使用了合适的数据库索引来优化查询性能

扩展功能

未来可以考虑添加:

  • 食物营养数据库集成
  • 更精确的营养成分计算
  • 饮食目标设定和追踪
  • 营养师在线咨询
  • 社交分享功能