# 饮食记录功能 API 使用指南 ## 功能概述 饮食记录功能允许用户通过多种方式记录和管理饮食信息,包括: - 手动添加饮食记录 - AI视觉识别自动记录(通过拍照) - 获取饮食历史记录 - 营养分析和健康建议 ## 数据库模型 ### 饮食记录表 (t_user_diet_history) 包含以下关键字段: - 基础信息:食物名称、餐次类型、用餐时间 - 营养成分:热量、蛋白质、碳水化合物、脂肪、膳食纤维等 - 记录来源:手动输入、AI视觉识别、其他 - AI分析结果:完整的识别数据(JSON格式) ## API 端点 ### 1. 添加饮食记录 ``` POST /users/diet-records ``` **请求体示例:** ```json { "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 ``` **响应示例:** ```json { "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 ``` **响应示例:** ```json { "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 脚本创建表: ```bash mysql -u username -p database_name < docs/diet-records-table-create.sql ``` 2. 在 UsersModule 中已自动注册 UserDietHistory 模型 ## 注意事项 1. **营养数据准确性**:AI估算的营养数据仅供参考,实际值可能有差异 2. **图片质量**:为了更好的识别效果,建议上传清晰的食物图片 3. **隐私保护**:用户饮食数据会安全存储,仅用于个性化分析 4. **性能优化**:使用了合适的数据库索引来优化查询性能 ## 扩展功能 未来可以考虑添加: - 食物营养数据库集成 - 更精确的营养成分计算 - 饮食目标设定和追踪 - 营养师在线咨询 - 社交分享功能