v3 增加并优化了人工评价逻辑,增加了运动量(PAL)判断

This commit is contained in:
赖力诚 committed 2026-06-11 16:14:53 +08:00
1 parent 86567eece5
commit 2e69000c5b
22 files changed
+2250 -332

No files matched your search

+100 -14
View File
@@ -1,29 +1,115 @@
# vue-project
# 营养健康评估系统
This template should help get you started developing with Vue 3 in Vite.
运动员食物摄入记录与营养报告生成系统。前端使用 Vue 3 + Vite,后端使用 Flask,支持 PDF / Excel 报告导出。
## Recommended IDE Setup
## 功能
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
- 运动员信息录入(姓名、性别、年龄、身高、体重、运动量 PAL)
- BMI 自动计算与展示
- 从 API 动态加载食物分类与食物列表
- 食物摄入记录与清单管理
- 自动评价 / 手动评价两种模式
- **自动评价**:根据 `config/nutrition_template.json` 及女性 EER 表自动生成评价
- **手动评价**:后端先计算各类摄入量,用户对照填写评价后生成报告
- PDF / Excel 营养健康评估报告
## Customize configuration
## 技术栈
See [Vite Configuration Reference](https://vitejs.dev/config/).
| 层级 | 技术 |
|------|------|
| 前端 | Vue 3、Vite、xlsx |
| 后端 | Flask、ReportLab、Matplotlib、OpenPyXL |
| 数据 | `food_db.json`、配置文件 JSON |
## Project Setup
## 项目结构
```sh
npm install
```
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/ # 生成的报告输出目录(运行时自动创建)
```
### Compile and Hot-Reload for Development
## 环境要求
```sh
- 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
```
### Compile and Minify for Production
前端默认运行在 `http://localhost:5173`
```sh
npm run build
> 食物列表 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`)。