优化内容: - API 返回每 100g 的标准营养数据 - 新增 weightHint 字段,AI 估算图片中食物的大致份量 - 前端添加份量输入框,用户可手动调整实际重量 - 实现营养数据按份量比例自动计算逻辑 - 优化营养分析结果展示界面,显示每 100g 标准值和用户调整后的实际值 - 添加保存到健康档案功能按钮 - 更新文档说明
202 lines
4.5 KiB
Markdown
202 lines
4.5 KiB
Markdown
# 智能健康管家
|
||
|
||
基于 AI 驱动的健康管理平台,提供智能对话、图片识别、卡路里计算和健康数据管理功能。
|
||
|
||
## 功能特性
|
||
|
||
### 1. AI 智能对话
|
||
- 基于 LLM 大语言模型的智能对话系统
|
||
- 提供专业的健康咨询和建议
|
||
- 支持多轮对话,记住上下文
|
||
- 流式输出,实时响应
|
||
|
||
### 2. 图片识别与营养分析
|
||
- 上传食物图片,AI 智能识别食物
|
||
- 自动分析营养成分:
|
||
- 卡路里
|
||
- 蛋白质
|
||
- 碳水化合物
|
||
- 脂肪
|
||
- 膳食纤维
|
||
- 使用先进的视觉模型,识别准确
|
||
- **份量调整功能**:
|
||
- AI 提供每 100g 的标准营养数据
|
||
- AI 估算图片中食物的大致份量
|
||
- 用户可手动调整实际重量
|
||
- 营养数据按份量比例自动计算
|
||
- 支持一键保存到健康档案
|
||
|
||
### 3. 健康数据管理
|
||
- **饮食记录**:记录每日摄入的食物和营养数据
|
||
- **运动记录**:记录运动项目和消耗的卡路里
|
||
- **数据统计**:
|
||
- 总摄入卡路里
|
||
- 总消耗卡路里
|
||
- 净卡路里计算
|
||
- 营养成分统计
|
||
- 运动时长统计
|
||
- 数据持久化存储(localStorage)
|
||
|
||
### 4. 用户界面
|
||
- 现代化、响应式设计
|
||
- 支持深色模式
|
||
- 直观的操作界面
|
||
- 流畅的交互体验
|
||
|
||
## 技术栈
|
||
|
||
- **框架**:Next.js 16 (App Router)
|
||
- **语言**:TypeScript
|
||
- **UI 组件**:shadcn/ui (Radix UI)
|
||
- **样式**:Tailwind CSS 4
|
||
- **图标**:Lucide React
|
||
- **AI 集成**:coze-coding-dev-sdk
|
||
- 大语言模型:doubao-seed-1-8-251228
|
||
- 视觉模型:doubao-seed-1-6-vision-250815
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
src/
|
||
├── app/
|
||
│ ├── api/
|
||
│ │ ├── chat/ # AI 对话 API
|
||
│ │ └── analyze-food/ # 食物分析 API
|
||
│ ├── chat/ # AI 对话页面
|
||
│ ├── recognition/ # 图片识别页面
|
||
│ ├── health/ # 健康档案页面
|
||
│ ├── layout.tsx # 根布局
|
||
│ └── page.tsx # 首页
|
||
└── components/ui/ # shadcn/ui 组件
|
||
```
|
||
|
||
## 使用说明
|
||
|
||
### 启动开发环境
|
||
|
||
```bash
|
||
# 安装依赖(首次运行)
|
||
pnpm install
|
||
|
||
# 启动开发服务器
|
||
coze dev
|
||
```
|
||
|
||
访问:http://localhost:5000
|
||
|
||
### 功能使用
|
||
|
||
#### 1. AI 健康助手
|
||
- 点击导航栏的 "AI 对话"
|
||
- 输入健康相关问题
|
||
- AI 会提供专业的建议和解答
|
||
|
||
#### 2. 图片识别与营养分析
|
||
- 点击导航栏的 "图片识别"
|
||
- 上传食物图片
|
||
- 点击 "开始分析"
|
||
- AI 会返回每 100g 的标准营养数据
|
||
- 调整实际份量(克),营养数据会自动按比例计算
|
||
- AI 会提供图片中食物的大致份量估算作为参考
|
||
- 可将分析结果保存到健康档案
|
||
|
||
#### 3. 健康档案
|
||
- 点击导航栏的 "健康档案"
|
||
- 在 "饮食记录" 标签页添加饮食数据
|
||
- 在 "运动记录" 标签页添加运动数据
|
||
- 在 "数据统计" 标签页查看统计信息
|
||
|
||
## API 接口
|
||
|
||
### POST /api/chat
|
||
AI 对话接口,支持流式输出
|
||
|
||
**请求体:**
|
||
```json
|
||
{
|
||
"message": "用户消息",
|
||
"history": [
|
||
{
|
||
"role": "user",
|
||
"content": "历史消息"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**响应:** SSE 流式输出
|
||
|
||
### POST /api/analyze-food
|
||
食物图片分析接口
|
||
|
||
**请求体:**
|
||
```json
|
||
{
|
||
"image": "base64 图片数据"
|
||
}
|
||
```
|
||
|
||
**响应:**
|
||
```json
|
||
{
|
||
"foodName": "食物名称",
|
||
"calories": 100,
|
||
"protein": 10,
|
||
"carbs": 20,
|
||
"fat": 5,
|
||
"fiber": 2,
|
||
"standardWeight": 100,
|
||
"weightHint": "图片中约200g",
|
||
"description": "食物描述"
|
||
}
|
||
```
|
||
|
||
**说明:**
|
||
- `standardWeight`: 标准份量,固定为 100g
|
||
- `weightHint`: AI 估算的图片中食物大致份量
|
||
- 其他营养数据均为每 100g 的标准值
|
||
|
||
## 数据存储
|
||
|
||
健康数据使用浏览器的 `localStorage` 进行本地存储:
|
||
- `dietRecords`: 饮食记录
|
||
- `exerciseRecords`: 运动记录
|
||
|
||
## 注意事项
|
||
|
||
1. **图片上传限制**:最大 5MB
|
||
2. **支持格式**:JPG、PNG、WebP
|
||
3. **图片质量**:建议使用清晰、光线充足的图片
|
||
4. **份量估算**:AI 仅供参考,建议结合实际情况调整份量
|
||
5. **营养数据**:基于标准营养数据库,实际含量可能因食材和烹饪方式不同
|
||
6. **数据安全**:所有数据存储在本地浏览器中,不会上传到服务器
|
||
|
||
## 开发
|
||
|
||
### 类型检查
|
||
```bash
|
||
npx tsc --noEmit
|
||
```
|
||
|
||
### 构建生产版本
|
||
```bash
|
||
coze build
|
||
```
|
||
|
||
### 启动生产环境
|
||
```bash
|
||
coze start
|
||
```
|
||
|
||
## License
|
||
|
||
MIT
|
||
|
||
## 贡献
|
||
|
||
欢迎提交 Issue 和 Pull Request!
|
||
|
||
---
|
||
|
||
**智能健康管家** - 让 AI 帮助您管理健康生活 🏥💪
|