- 创建饮食记录相关的数据库模型、DTO和API接口,支持用户手动添加和AI视觉识别记录饮食。 - 实现饮食分析服务,提供营养分析和健康建议,优化AI教练服务以集成饮食分析功能。 - 更新用户控制器,添加饮食记录的增删查改接口,增强用户饮食管理体验。 - 提供详细的API使用指南和数据库创建脚本,确保功能的完整性和可用性。
5.4 KiB
5.4 KiB
饮食记录功能实现总结
功能概述
根据您的需求,我已经参照现有体重记录的实现,完整地实现了饮食记录功能。该功能包括:
- 数据库模型 - 完整的饮食记录数据结构
- API接口 - RESTful API支持增删查改操作
- AI视觉识别 - 优化的图片分析和自动记录
- 营养分析 - 基于最近饮食记录的健康建议
- AI教练集成 - 智能对话中的饮食指导
实现的文件清单
数据库模型
src/users/models/user-diet-history.model.ts- 饮食记录数据模型
DTO 结构
src/users/dto/diet-record.dto.ts- 完整的请求/响应数据传输对象
服务层
src/users/users.service.ts- 新增饮食记录相关方法:addDietRecord()- 添加饮食记录addDietRecordByVision()- 通过AI视觉识别添加记录getDietHistory()- 获取饮食历史记录updateDietRecord()- 更新饮食记录deleteDietRecord()- 删除饮食记录getRecentNutritionSummary()- 获取营养汇总
控制器层
src/users/users.controller.ts- 新增API端点:POST /users/diet-records- 添加饮食记录GET /users/diet-records- 获取饮食记录列表PUT /users/diet-records/:id- 更新饮食记录DELETE /users/diet-records/:id- 删除饮食记录GET /users/nutrition-summary- 获取营养分析
AI教练服务增强
src/ai-coach/ai-coach.service.ts- 新增功能:analyzeDietImageEnhanced()- 增强版饮食图片分析buildUserNutritionContext()- 构建用户营养上下文buildEnhancedDietAnalysisPrompt()- 增强版分析提示- 支持
#记饮食指令和自动记录
配置文件
src/users/users.module.ts- 注册新的数据模型
文档
docs/diet-records-table-create.sql- 数据库表创建脚本docs/diet-records-api-guide.md- API使用指南
核心功能特性
1. 智能视觉识别
- 结构化数据返回 - AI分析结果以JSON格式返回,包含完整营养信息
- 自动餐次判断 - 根据当前时间智能推断餐次类型
- 置信度评估 - 只有置信度足够高才自动记录到数据库
- 营养成分估算 - 自动计算热量、蛋白质、碳水、脂肪等
2. 个性化营养分析
- 历史记录整合 - 结合用户最近10顿饮食记录
- 趋势分析 - 分析热量摄入、营养均衡等趋势
- 智能建议 - 基于个人饮食习惯提供针对性建议
- 营养评分 - 0-100分的综合营养评价
3. 完整的数据结构
参照健康管理应用的最佳实践,包含:
- 基础信息:食物名称、餐次、份量、时间
- 营养成分:热量、三大营养素、膳食纤维、钠含量等
- 扩展字段:图片URL、AI分析结果、用户备注
- 数据来源:手动输入、AI识别、其他
4. AI教练智能对话
- 指令识别 - 支持
#记饮食、#饮食等指令 - 上下文感知 - 自动提供用户饮食历史上下文
- 个性化回复 - 基于用户饮食记录给出专业建议
- 健康指导 - 综合最近饮食情况提供改善建议
技术实现亮点
1. 数据安全与性能
- 使用数据库事务确保数据一致性
- 合理的索引设计优化查询性能
- 软删除机制保护用户数据
- 活动日志记录用户操作
2. 错误处理与验证
- 完整的数据验证规则
- 合理的错误提示信息
- 容错机制和降级处理
- 详细的日志记录
3. API设计规范
- RESTful API设计原则
- 完整的Swagger文档注解
- 统一的响应格式
- 分页查询支持
4. AI集成优化
- 结构化的AI输出格式
- 智能的数据验证和清洗
- 用户体验优化(自动记录)
- 个性化的营养分析
使用示例
1. 手动添加饮食记录
curl -X POST /users/diet-records \
-H "Authorization: Bearer <token>" \
-d '{
"mealType": "lunch",
"foodName": "鸡胸肉沙拉",
"estimatedCalories": 280,
"proteinGrams": 35.0
}'
2. AI拍照记录饮食
用户发送:#记饮食 + 食物图片
系统自动:分析图片 → 提取数据 → 保存记录 → 提供建议
3. 获取营养分析
curl -X GET /users/nutrition-summary?mealCount=10 \
-H "Authorization: Bearer <token>"
部署说明
- 数据库表创建
mysql -u username -p database_name < docs/diet-records-table-create.sql
- 环境变量配置 确保AI模型相关的环境变量已正确配置:
DASHSCOPE_API_KEYDASHSCOPE_BASE_URLDASHSCOPE_VISION_MODEL
- 应用重启
npm run build
npm run start:prod
扩展建议
基于当前实现,未来可以考虑以下扩展:
- 营养数据库集成 - 接入专业的食物营养数据库
- 饮食目标设定 - 允许用户设定个性化的营养目标
- 社交分享功能 - 用户可以分享饮食记录和成就
- 更精确的AI识别 - 使用更专业的食物识别模型
- 营养师咨询 - 集成专业营养师在线咨询服务
测试建议
- 功能测试 - 测试所有API端点的正常功能
- AI识别测试 - 使用各种食物图片测试识别准确性
- 性能测试 - 测试大量数据情况下的查询性能
- 集成测试 - 测试与AI教练对话的完整流程
该实现完全按照您的要求,参照体重记录的实现模式,提供了完整、智能、用户友好的饮食记录功能。