Files
food-vue-project/README.md
T

116 lines
3.7 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.
# 营养健康评估系统
运动员食物摄入记录与营养报告生成系统。前端使用 Vue 3 + Vite,后端使用 Flask,支持 PDF / Excel 报告导出。
## 功能
- 运动员信息录入(姓名、性别、年龄、身高、体重、运动量 PAL)
- BMI 自动计算与展示
- 从 API 动态加载食物分类与食物列表
- 食物摄入记录与清单管理
- 自动评价 / 手动评价两种模式
- **自动评价**:根据 `config/nutrition_template.json` 及女性 EER 表自动生成评价
- **手动评价**:后端先计算各类摄入量,用户对照填写评价后生成报告
- PDF / Excel 营养健康评估报告
## 技术栈
| 层级 | 技术 |
|------|------|
| 前端 | Vue 3、Vite、xlsx |
| 后端 | Flask、ReportLab、Matplotlib、OpenPyXL |
| 数据 | `food_db.json`、配置文件 JSON |
## 项目结构
```
vue-project/
├── app.py # Flask 后端入口
├── requirements.txt # Python 依赖
├── food_db.json # 本地食物营养数据库
├── config/
│ ├── nutrition_template.json # 分类评价规则与建议模板
│ └── female_energy_eer.json # 中国女性膳食能量需要量 (EER)
├── services/
│ ├── nutrition_service.py # 营养计算与评价逻辑
│ └── report_service.py # 报告生成调度
├── builder/
│ ├── pdf_builder.py # PDF 报告构建
│ └── excel_builder.py # Excel 报告构建
├── static/images/ # 报告分类图片
├── src/
│ ├── components/ # Vue 组件
│ ├── services/ # API 调用(食物 API、报告 API)
│ └── utils/ # BMI、手动评价等工具
└── output/reports/ # 生成的报告输出目录(运行时自动创建)
```
## 环境要求
- Node.js 16+
- Python 3.9+
## 安装与启动
### 1. 后端
```bash
cd vue-project/vue-project
# 创建虚拟环境(推荐)
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS / Linux
pip install -r requirements.txt
python app.py
```
后端默认运行在 `http://localhost:5000`
### 2. 前端
```bash
cd vue-project/vue-project
npm install
npm run dev
```
前端默认运行在 `http://localhost:5173`
> 食物列表 API 通过 Vite 代理转发到 `https://survey.femalesportshealth.cn`,配置见 `vite.config.js`。
## API 接口
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | `/api/preview-intake` | 预览各类摄入量与营养素合计(手动评价参考) |
| POST | `/api/generate-pdf` | 生成 PDF 报告 |
| POST | `/api/generate-excel` | 生成 Excel 报告 |
请求体为前端组装的 JSON,包含 `user`、`meals`,以及可选的 `autoEvaluation`、`manualEvaluations`。
## 配置说明
- **`food_db.json`**:食物名称 → 营养数据映射,报告计算依赖此文件,API 返回的食物名称需与之匹配
- **`config/nutrition_template.json`**:食物分类摄入量评价区间、建议模板、钙/能量默认评价规则
- **`config/female_energy_eer.json`**:女性按年龄段与运动量 (PAL I/II/III) 的每日能量标准
## 构建
```bash
npm run build # 前端生产构建,输出到 dist/
npm run preview # 预览构建结果
```
## 常见问题
**报告里某些食物没有计入营养?**
检查 API 返回的食物名称是否在 `food_db.json` 中存在对应条目。
**手动评价看不到摄入量?**
确保后端已启动,`/api/preview-intake` 可正常访问。
**PDF 中文或饼图乱码?**
Windows 环境需安装 SimHei 字体(`C:/Windows/Fonts/simhei.ttf`)。