Files
--/README.md
jaystar 6d72acc4ea feat: 优化食物识别功能,添加份量调整和按比例计算
优化内容:
- API 返回每 100g 的标准营养数据
- 新增 weightHint 字段,AI 估算图片中食物的大致份量
- 前端添加份量输入框,用户可手动调整实际重量
- 实现营养数据按份量比例自动计算逻辑
- 优化营养分析结果展示界面,显示每 100g 标准值和用户调整后的实际值
- 添加保存到健康档案功能按钮
- 更新文档说明
2026-01-22 09:54:36 +08:00

202 lines
4.5 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.
# 智能健康管家
基于 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 帮助您管理健康生活 🏥💪