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

160 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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