Files
school-meal/README.md
T

75 lines
2.6 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.
# 学校订餐菜单生成器
自动生成周一至周五的营养菜单,支持导出 Excel,含后台菜品管理。
- 后端:Django + Django REST Framework + openpyxl
- 前端:React 18 + Vite
## 功能
- **两种生成模式**
- 全部自动生成:荤菜、素菜、汤、主食全部自动分配,一周内尽量不重复
- 自选两个荤菜:每天使用所选 2 个荤菜,素菜等其余自动生成
- 每天固定 2 荤 2 素,一次随机生成营养 A / B 两套菜单,可逐道替换菜品
- 菜品带**菜系**分类(本帮/家常/川/粤/鲁/湘/江浙/西北/面点小吃),替换时按菜系分组选择
- 一键导出带样式的 Excel(左右并排 A/B 两套,各自带配料明细与营养成分分析)
- 后台管理添加/编辑/停用菜品,支持批量导入
## 快速启动
双击 `start.bat`(首次会自动安装依赖并写入示例菜品数据)。
- 前端页面:http://localhost:5173
- 后台管理:http://127.0.0.1:8000/admin (账号 `admin` / 密码 `admin123`)
## 手动启动
```bash
# 后端
python -m venv .venv
.venv\Scripts\pip install -r backend\requirements.txt
.venv\Scripts\python backend\manage.py migrate
.venv\Scripts\python backend\manage.py seed_dishes # 写入示例菜品
.venv\Scripts\python backend\manage.py runserver 0.0.0.0:8000
# 前端(另开终端)
cd frontend
npm install
npm run dev
```
## 目录结构
```
backend/
config/ # Django 项目配置
meals/ # 主应用:菜品模型、生成逻辑、Excel 导出
management/commands/seed_dishes.py # 示例菜品
requirements.txt
frontend/
src/App.jsx # 菜单生成页面
src/index.css # 页面样式
start.bat # 一键启动脚本
```
## API 说明
| 方法 | 路径 | 说明 |
|---|---|---|
| GET/POST/PUT/DELETE | `/api/dishes/` | 菜品增删改查(`?type=meat/veg/soup/staple` 过滤) |
| POST | `/api/dishes/bulk/` | 批量导入菜品(需管理员登录),支持中文类型名与菜系 |
| POST | `/api/menu/generate/` | 生成 A/B 两套周菜单 |
| POST | `/api/menu/export/` | 将生成的菜单导出为 xlsx(A/B 左右并排,含营养成分) |
## 批量导入示例
```bash
# 管理命令,每行:类型|菜名|配料|蛋白质|脂肪|热量|菜系
.venv\Scripts\python backend\manage.py import_dishes dishes.txt
# 或调用 API(需先登录 admin)
curl -u admin:admin123 -H "Content-Type: application/json" \
-d '{"dishes":[{"name":"清蒸鲈鱼","dish_type":"荤菜","cuisine":"粤菜","protein":16,"fat":5,"calorie":140}]}' \
http://127.0.0.1:8000/api/dishes/bulk/
```