# 学校订餐菜单生成器 自动生成周一至周五的营养菜单,支持导出 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/ ```