Files
school-meal/README.md
T

2.6 KiB
Raw Blame History

学校订餐菜单生成器

自动生成周一至周五的营养菜单,支持导出 Excel,含后台菜品管理。

  • 后端:Django + Django REST Framework + openpyxl
  • 前端:React 18 + Vite

功能

  • 两种生成模式
    • 全部自动生成:荤菜、素菜、汤、主食全部自动分配,一周内尽量不重复
    • 自选两个荤菜:每天使用所选 2 个荤菜,素菜等其余自动生成
  • 每天固定 2 荤 2 素,一次随机生成营养 A / B 两套菜单,可逐道替换菜品
  • 菜品带菜系分类(本帮/家常/川/粤/鲁/湘/江浙/西北/面点小吃),替换时按菜系分组选择
  • 一键导出带样式的 Excel(左右并排 A/B 两套,各自带配料明细与营养成分分析)
  • 后台管理添加/编辑/停用菜品,支持批量导入

快速启动

双击 start.bat(首次会自动安装依赖并写入示例菜品数据)。

手动启动

# 后端
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 左右并排,含营养成分)

批量导入示例

# 管理命令,每行:类型|菜名|配料|蛋白质|脂肪|热量|菜系
.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/