- 创建饮食记录相关的数据库模型、DTO和API接口,支持用户手动添加和AI视觉识别记录饮食。 - 实现饮食分析服务,提供营养分析和健康建议,优化AI教练服务以集成饮食分析功能。 - 更新用户控制器,添加饮食记录的增删查改接口,增强用户饮食管理体验。 - 提供详细的API使用指南和数据库创建脚本,确保功能的完整性和可用性。
3.8 KiB
3.8 KiB
饮食记录功能 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视觉识别流程
- 用户发送
#记饮食指令并上传食物图片 - AI使用视觉模型分析图片,提取:
- 食物名称和类型
- 营养成分估算
- 份量描述
- 餐次类型(基于时间自动判断)
- 如果识别置信度足够,自动保存到数据库
- 结合用户历史饮食记录,提供个性化营养分析
营养分析上下文
AI教练会自动获取用户最近的饮食记录,提供:
- 营养摄入趋势分析
- 个性化健康建议
- 基于历史记录的改善建议
数据库配置
- 运行 SQL 脚本创建表:
mysql -u username -p database_name < docs/diet-records-table-create.sql
- 在 UsersModule 中已自动注册 UserDietHistory 模型
注意事项
- 营养数据准确性:AI估算的营养数据仅供参考,实际值可能有差异
- 图片质量:为了更好的识别效果,建议上传清晰的食物图片
- 隐私保护:用户饮食数据会安全存储,仅用于个性化分析
- 性能优化:使用了合适的数据库索引来优化查询性能
扩展功能
未来可以考虑添加:
- 食物营养数据库集成
- 更精确的营养成分计算
- 饮食目标设定和追踪
- 营养师在线咨询
- 社交分享功能