v3 增加并优化了人工评价逻辑,增加了运动量(PAL)判断
This commit is contained in:
1 parent
86567eece5
commit
2e69000c5b
22 files changed
+2250
-332
No files matched your search
@@ -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`)。
|
||||
Reference in new issue
Block a user