feat: 新增饮食记录和分析功能

- 创建饮食记录相关的数据库模型、DTO和API接口,支持用户手动添加和AI视觉识别记录饮食。
- 实现饮食分析服务,提供营养分析和健康建议,优化AI教练服务以集成饮食分析功能。
- 更新用户控制器,添加饮食记录的增删查改接口,增强用户饮食管理体验。
- 提供详细的API使用指南和数据库创建脚本,确保功能的完整性和可用性。
This commit is contained in:
richarjiang
2025-08-18 16:27:01 +08:00
parent 3d36ee90f0
commit 485ba1f67c
19 changed files with 2031 additions and 52 deletions

View File

@@ -0,0 +1,159 @@
# 饮食记录功能 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. **性能优化**:使用了合适的数据库索引来优化查询性能
## 扩展功能
未来可以考虑添加:
- 食物营养数据库集成
- 更精确的营养成分计算
- 饮食目标设定和追踪
- 营养师在线咨询
- 社交分享功能