AICooker 是一款由 AI 驱动的智能烹饪助手,为用户提供从灵感获取到饮食管理的完整体验。 它不仅能根据你的食材、偏好和健康目标自动生成高质量菜谱,还支持周计划、智能购物单、体重与营养管理、用餐提醒等全流程功能。
系统采用 React + FastAPI 的前后端分离架构,整合 MySQL、Redis、向量知识库(RAG) 等基础设施,具备智能推荐、快速响应与可扩展能力,轻松支持本地开发与云端部署。
- 前端:React 18 + TypeScript,通过统一的
apiClient调用后端 REST API。 - 后端:FastAPI + SQLModel,位于
backend/,提供菜谱生成、周计划、收藏、通知、体重等业务接口。 - 数据库:MySQL 8(
backend/db/schema.sql提供建表和种子数据)。 - 缓存 & 限流:Redis 实现分布式滑动窗口限流;可选用向量知识库加速回答。
- 测试体系:前端使用 Jest,后端使用 pytest;已补充核心业务的单元测试。
https://aicooker.southeastasia.cloudapp.azure.com
| 变量 | 说明 |
|---|---|
DATABASE_URL |
MySQL 连接串 |
REDIS_URL |
Redis 地址(限流、共享缓存) |
RATE_LIMIT_* |
滑动窗口策略配置(是否启用、单位时间、额度等) |
CORS_ORIGINS |
允许访问的前端域名列表,默认含本地 & Azure 站点 |
KNOWLEDGE_BASE_PATH / KNOWLEDGE_VECTOR_STORE_PATH |
知识库文档及向量索引路径 |
AZURE_OPENAI_* |
Azure OpenAI / LangChain 相关配置 |
更多变量见 backend/.env.example。
- Python 3.10+
- Node.js 18+
- MySQL 8.x
- Redis 6.x(启用限流必需)
cp backend/.env.example .env
# 根据实际情况修改数据库、Redis、OpenAI 等配置mysql -u <user> -p <database> < backend/db/schema.sqlcd backend
pip install -r requirements.txt
uvicorn app.main:app --reloadcd recipe-generator
npm install
npm start前端默认联向 http://localhost:8000/v1,若需对接远程后端,可在 .env 中配置 REACT_APP_API_BASE_URL。
- 后端:
cd backend python -m pytest - 前端:
cd recipe-generator npm test
cooker/
├── backend/
│ ├── app/
│ │ ├── api/ # FastAPI 路由
│ │ ├── core/ # 配置、Redis、限流等核心组件
│ │ ├── models/ # SQLModel 实体
│ │ ├── schemas/ # Pydantic 响应/请求模型
│ │ └── services/ # 业务逻辑
a│ ├── db/schema.sql # MySQL 建表脚本
│ └── tests/ # pytest 单元测试
├── recipe-generator/
│ ├── src/
│ │ ├── services/ # 调用后端的 API 封装
│ │ ├── context/ # 全局状态管理
│ │ └── components/ # UI 组件
└── README.md # 项目说明
如需更多帮助或想法交流,欢迎继续提问。祝开发顺利!
