3.7 KiB
3.7 KiB
营养健康评估系统
运动员食物摄入记录与营养报告生成系统。前端使用 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. 后端
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. 前端
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) 的每日能量标准
构建
npm run build # 前端生产构建,输出到 dist/
npm run preview # 预览构建结果
常见问题
报告里某些食物没有计入营养?
检查 API 返回的食物名称是否在 food_db.json 中存在对应条目。
手动评价看不到摄入量?
确保后端已启动,/api/preview-intake 可正常访问。
PDF 中文或饼图乱码?
Windows 环境需安装 SimHei 字体(C:/Windows/Fonts/simhei.ttf)。