# movie **Repository Path**: gitc_1_0/movie ## Basic Information - **Project Name**: movie - **Description**: 电影推荐系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-15 - **Last Updated**: 2026-03-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 电影推荐系统 ## 目录结构 - `src/`:前端(Vue 3 + TypeScript + Element Plus) - `backend/`:后端(FastAPI + SQLAlchemy) ## 环境要求 - Node.js(v18+) - Python(v3.10+) - MySQL(v8.0+) ## 启动步骤 ### 1)启动 MySQL 方式一:本机已安装 MySQL,创建数据库: ```sql CREATE DATABASE movie_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 方式二:使用 Docker Compose: ```bash docker compose up -d ``` ### 2)配置后端环境变量 在 `backend/` 目录下创建 `.env`(可参考 [backend/.env.example](file:///D:/movie-recommendation-system/backend/.env.example)): ```bash DATABASE_URL=mysql+pymysql://root:password@localhost:3306/movie_db?charset=utf8mb4 SECRET_KEY=please-change-me ``` 如果密码里包含特殊字符(例如 `@`、`:`、`/`),需要做 URL 编码再写入连接串。例如密码 `Hwz12345@` 应写成: ```bash DATABASE_URL=mysql+pymysql://root:Hwz12345%40@localhost:3306/movie_db?charset=utf8mb4 ``` ### 3)启动后端 先在 `backend/.env` 配置数据库连接(注意密码中的 `@` 需要写成 `%40`): ```bash DATABASE_URL=mysql+pymysql://root:你的密码%40@localhost:3306/movie_db?charset=utf8mb4 SECRET_KEY=please-change-me ``` ```bash cd backend python -m venv venv venv\Scripts\python.exe -m pip install -r requirements.txt venv\Scripts\python.exe -m scripts.init_demo_data --reset venv\Scripts\python.exe -m uvicorn main:app --reload --host 0.0.0.0 --port 8000 ``` 演示账号:demo / demo123 管理员账号:admin / admin123 运营账号:operator / operator123 审核账号:moderator / moderator123 ### 电影开源数据入库(可选) 项目内置了一个 MovieLens(GroupLens)开源数据集的入库脚本,用于快速填充电影与评分数据。 若要抓取真实电影海报并本地缓存,请先在 `backend/.env` 配置: ```bash POSTER_PROVIDER=tmdb TMDB_API_KEY=你的TMDB_API_KEY TMDB_POSTER_SIZE=w500 BACKEND_PUBLIC_BASE_URL=http://localhost:8000 ``` 抓取到的海报会缓存到 `backend/static/posters`,并通过 `http://localhost:8000/static/posters/...` 访问。 也可以在前端控制台(运营/管理员)使用“开源数据导入”页面触发导入。 ```bash cd backend venv\Scripts\python.exe -m scripts.ingest_movielens --dataset latest-small ``` 只对已入库电影补全真实海报可用: ```bash cd backend venv\Scripts\python.exe -m scripts.ingest_movielens --backfill-posters-only --poster-provider tmdb ``` 如果你的数据库里已经有 `movies` 数据,脚本会拒绝重复导入。想覆盖导入可用: ```bash cd backend venv\Scripts\python.exe -m scripts.ingest_movielens --dataset latest-small --reset ``` ### 接口冒烟测试(可选) 用于快速验证“注册/登录、用户、电影、推荐、社交、收藏、管理”等接口是否全部打通: ```bash cd backend venv\Scripts\python.exe -m scripts.smoke_test ``` 接口地址: - `http://localhost:8000` - Swagger 文档:`http://localhost:8000/docs` ### 4)启动前端 ```bash cd .. npm install npm run dev ``` 前端地址:`http://localhost:5173` ## 已实现功能 - 用户注册/登录(JWT) - 电影列表/筛选/搜索 - 电影详情、相似推荐 - 评分与评论 - 好友与私信(基础版) ## 技术栈 - 前端:Vue 3、Vite、TypeScript、Element Plus、Pinia、Axios - 后端:FastAPI、SQLAlchemy、Pydantic - 数据库:MySQL 8.0