# SmartKitchen **Repository Path**: gitc_1_0/smart-kitchen ## Basic Information - **Project Name**: SmartKitchen - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-27 - **Last Updated**: 2026-01-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SmartKitchen (智能厨房) 这是一个基于 **Django + Vue 3** 的全栈智能菜谱推荐系统。它不仅是一个菜谱查询工具,更是一个集成了爬虫数据采集、AI 智能推荐、用户互动(作品分享、评论)的完整美食社区平台。 ## 项目特点 * **全栈架构**:后端采用 Django REST Framework,前端采用 Vue 3 + Pinia + Vite,现代化开发体验。 * **智能推荐**:基于用户行为(浏览、收藏、发布作品)的混合推荐算法,为您精准推送感兴趣的美食。 * **数据闭环**:内置 Python 爬虫,可从外部源采集数据,并通过 MinIO 对象存储管理图片资源。 * **社交互动**:支持用户发布烹饪成品(作品动态),与其他厨友点赞、评论互动。 * **内网穿透友好**:支持纯前端穿透部署模式,后端无需暴露即可在外网访问。 --- ## 🏗️ 系统架构 本项目采用经典的前后端分离架构: * **前端**: Vue 3 + Vite + Vue Router + Pinia + Axios * **后端**: Django 5.x + Django REST Framework (DRF) * **数据库**: MySQL 5.7+ (通过自定义 Backend 兼容新版 Django) * **对象存储**: MinIO (兼容 S3 协议) * **数据采集**: Python Requests + BeautifulSoup4 ### 目录结构 ```text djangoAi/ ├── backend/ # Django 后端项目根目录 │ ├── config/ # 项目配置文件 (settings.py, urls.py) │ ├── recipes/ # 菜谱核心应用 (模型, 爬虫, 接口) │ ├── users/ # 用户认证应用 │ ├── interactions/ # 用户交互应用 (评论, 收藏, 浏览记录) │ ├── recommendation/ # 推荐算法引擎 │ ├── mysql_custom/ # MySQL 兼容性补丁 │ └── manage.py # Django 管理脚本 ├── frontend/ # Vue 前端项目根目录 │ ├── src/ │ │ ├── views/ # 页面组件 (Home, Search, Detail...) │ │ ├── components/ # 通用组件 │ │ ├── stores/ # Pinia 状态管理 │ │ └── api/ # Axios 接口封装 │ └── package.json └── README.md # 项目文档 ``` --- ## 🚀 部署指南 ### 1. 环境准备 确保您的开发环境已安装以下软件: * **Python**: 3.10+ * **Node.js**: 18+ * **MySQL**: 5.7 或 8.0 * **MinIO**: (可选,推荐 Docker 安装) ### 2. 后端部署 (Backend) 1. **进入后端目录**: ```bash cd backend ``` 2. **安装依赖**: ```bash pip install django djangorestframework django-cors-headers pymysql boto3 beautifulsoup4 requests ``` 3. **配置数据库**: 修改 `backend/config/settings.py` 中的 `DATABASES` 配置,填入您的 MySQL 信息。 4. **配置 MinIO (可选)**: 在 `settings.py` 中或通过环境变量配置 MinIO 连接信息: ```python MINIO_ENDPOINT = 'http://localhost:9000' MINIO_ACCESS_KEY = 'minioadmin' MINIO_SECRET_KEY = 'minioadmin' MINIO_BUCKET_NAME = 'recipes' ``` 5. **初始化数据库**: ```bash python manage.py makemigrations python manage.py migrate ``` 6. **创建超级用户**: ```bash python manage.py createsuperuser ``` 7. **启动服务**: ```bash python manage.py runserver ``` ### 3. 前端部署 (Frontend) 1. **进入前端目录**: ```bash cd frontend ``` 2. **安装依赖**: ```bash npm install ``` 3. **启动开发服务器**: ```bash npm run dev ``` 访问 `http://localhost:5173` 即可看到应用界面。 --- ## 🕷️ 数据采集 (爬虫使用) 系统内置了强大的数据采集工具,支持按分类抓取外部数据并自动转存图片到 MinIO。 ### 支持的分类 目前支持 20+ 种美食分类,包括但不限于: * **八大菜系**:`川菜`, `粤菜`, `湘菜`, `鲁菜`, `浙菜`, `苏菜`, `清真菜` * **日常分类**:`家常菜`, `快手菜`, `下饭菜`, `早餐`, `主食`, `汤羹` * **特色风味**:`西餐`, `甜点`, `烘焙`, `小吃`, `饮品` ### 方式一:命令行触发 (推荐) 在 `backend` 目录下运行: ```bash # 抓取 10 道川菜 python manage.py crawl_recipes --category 川菜 --count 10 # 抓取 5 道甜点 python manage.py crawl_recipes --category 甜点 --count 5 # 默认抓取家常菜 python manage.py crawl_recipes --count 5 ``` ### 方式二:API 触发 向 `/api/recipes/crawl/` 发送 POST 请求 (需管理员权限): ```json { "keyword": "粤菜", "limit": 10 } ``` > **注意**:爬虫会自动去重(基于源链接检测),并处理图片防盗链问题,将图片上传至 MinIO 对象存储,确保前端稳定展示。 --- ## 🧠 推荐算法解析 本项目核心亮点在于其**混合推荐引擎** (`recommendation/engine.py`),它结合了基于内容的推荐和基于流行度的推荐策略。 ### 1. 冷启动策略 (Cold Start) 针对未登录用户或无历史行为的新用户,系统采用**流行度推荐**: * 直接返回全站收藏数 (`favorites_count`) 最高的 TOP10 菜谱。 * 保证新用户看到的一定是高质量、高人气的热门内容。 ### 2. 个性化推荐策略 (Personalized) 针对登录用户,系统会基于其实时行为计算偏好: 1. **行为捕获**:读取用户最近 20 条交互记录。 2. **加权计算**: * **发布作品 (Post Work)**: 权重 `+5` (极高兴趣) * **收藏菜谱 (Favorite)**: 权重 `+3` (高兴趣) * **浏览详情 (View)**: 权重 `+1` (普通兴趣) 3. **兴趣建模**:根据上述权重计算用户对不同 `category` (分类) 的兴趣得分。 4. **召回与排序**: * 优先从高分分类中召回热门菜谱。 * 自动过滤用户已经浏览或收藏过的菜谱(去重)。 * 如果个性化推荐数量不足,自动使用全局热门菜谱补全。 ### 3. 数据闭环 * 用户搜索、点击、收藏行为实时回传后端。 * 数据积累越丰富,推荐算法越精准。