feat(api): add database models
This commit is contained in:
@@ -0,0 +1,230 @@
|
||||
# 笑话大全平台 - 实施计划
|
||||
|
||||
> **推荐执行方式:** 使用 subagent-driven-development,按任务逐步实现
|
||||
|
||||
**目标:** 完成笑话大全平台一期建设(前台网站 + 后台管理 + 后端 API)
|
||||
|
||||
**技术栈:**
|
||||
- 后端: Python FastAPI + SQLite + SQLAlchemy
|
||||
- 前端: Vue3 + Vite + Element Plus + Axios
|
||||
- 状态管理: Pinia
|
||||
- 路由: Vue Router
|
||||
|
||||
---
|
||||
|
||||
## 阶段一:后端 API (api/)
|
||||
|
||||
### Task 1: 项目初始化
|
||||
- 创建: `api/requirements.txt`
|
||||
- 创建: `api/main.py` - FastAPI 入口
|
||||
- 创建: `api/app/config.py` - 配置管理
|
||||
- 创建: `api/app/database.py` - SQLite 连接
|
||||
|
||||
```bash
|
||||
# 依赖
|
||||
fastapi==0.109.0
|
||||
uvicorn[standard]==0.27.0
|
||||
sqlalchemy==2.0.25
|
||||
pydantic==2.5.3
|
||||
python-jose[cryptography]==3.3.0
|
||||
passlib[bcrypt]==1.7.4
|
||||
python-multipart==0.0.6
|
||||
```
|
||||
|
||||
### Task 2: 数据库模型
|
||||
- 创建: `api/app/models/__init__.py`
|
||||
- 创建: `api/app/models/joke.py` - Joke 模型
|
||||
- 创建: `api/app/models/category.py` - Type/Crowd 模型
|
||||
- 创建: `api/app/models/user.py` - AdminUser 模型
|
||||
|
||||
### Task 3: Pydantic Schemas
|
||||
- 创建: `api/app/schemas/__init__.py`
|
||||
- 创建: `api/app/schemas/joke.py` - Joke 请求/响应模型
|
||||
- 创建: `api/app/schemas/category.py` - Category 模型
|
||||
- 创建: `api/app/schemas/auth.py` - 登录/Token 模型
|
||||
|
||||
### Task 4: 路由实现
|
||||
- 创建: `api/app/routers/__init__.py`
|
||||
- 创建: `api/app/routers/jokes.py` - 笑话 CRUD 路由
|
||||
- 创建: `api/app/routers/categories.py` - 分类路由
|
||||
- 创建: `api/app/routers/auth.py` - 认证路由
|
||||
- 创建: `api/app/routers/admin.py` - 管理后台路由
|
||||
|
||||
### Task 5: 数据库初始化与种子数据
|
||||
- 创建: `api/init_db.py` - 初始化表和示例数据
|
||||
|
||||
---
|
||||
|
||||
## 阶段二:后台管理前端 (admin/)
|
||||
|
||||
### Task 6: 项目初始化
|
||||
- 创建: `admin/package.json`
|
||||
- 创建: `admin/vite.config.js`
|
||||
- 创建: `admin/index.html`
|
||||
- 创建: `admin/src/main.js`
|
||||
- 创建: `admin/src/App.vue`
|
||||
|
||||
### Task 7: 路由和状态管理
|
||||
- 创建: `admin/src/router/index.js` - 路由配置
|
||||
- 创建: `admin/src/stores/auth.js` - 认证状态
|
||||
- 创建: `admin/src/stores/joke.js` - 笑话状态
|
||||
|
||||
### Task 8: API 封装
|
||||
- 创建: `admin/src/api/request.js` - Axios 封装
|
||||
- 创建: `admin/src/api/joke.js` - 笑话 API
|
||||
- 创建: `admin/src/api/category.js` - 分类 API
|
||||
- 创建: `admin/src/api/auth.js` - 认证 API
|
||||
|
||||
### Task 9: 登录页
|
||||
- 创建: `admin/src/views/login/index.vue`
|
||||
|
||||
### Task 10: 布局和导航
|
||||
- 创建: `admin/src/layout/index.vue`
|
||||
- 创建: `admin/src/layout/components/Sidebar.vue`
|
||||
|
||||
### Task 11: 仪表盘
|
||||
- 创建: `admin/src/views/dashboard/index.vue`
|
||||
|
||||
### Task 12: 笑话管理 - 列表
|
||||
- 创建: `admin/src/views/joke/List.vue` - 列表 + 分页 + 筛选
|
||||
|
||||
### Task 13: 笑话管理 - 编辑
|
||||
- 创建: `admin/src/views/joke/Edit.vue` - 添加/编辑表单
|
||||
|
||||
### Task 14: 分类管理
|
||||
- 创建: `admin/src/views/category/Type.vue` - 类型管理
|
||||
- 创建: `admin/src/views/category/Crowd.vue` - 人群管理
|
||||
|
||||
---
|
||||
|
||||
## 阶段三:前台展示前端 (web/)
|
||||
|
||||
### Task 15: 项目初始化
|
||||
- 创建: `web/package.json`
|
||||
- 创建: `web/vite.config.js`
|
||||
- 创建: `web/index.html`
|
||||
- 创建: `web/src/main.js`
|
||||
- 创建: `web/src/App.vue`
|
||||
|
||||
### Task 16: 路由和状态管理
|
||||
- 创建: `web/src/router/index.js`
|
||||
- 创建: `web/src/stores/joke.js`
|
||||
|
||||
### Task 17: API 封装
|
||||
- 创建: `web/src/api/request.js`
|
||||
- 创建: `web/src/api/joke.js`
|
||||
- 创建: `web/src/api/category.js`
|
||||
|
||||
### Task 18: 首页
|
||||
- 创建: `web/src/views/home/index.vue` - 笑话列表
|
||||
- 创建: `web/src/views/home/components/JokeCard.vue` - 卡片组件
|
||||
|
||||
### Task 19: 分类筛选页
|
||||
- 创建: `web/src/views/category/index.vue`
|
||||
|
||||
### Task 20: 笑话详情页
|
||||
- 创建: `web/src/views/detail/index.vue`
|
||||
|
||||
### Task 21: 搜索页
|
||||
- 创建: `web/src/views/search/index.vue`
|
||||
|
||||
### Task 22: 通用组件
|
||||
- 创建: `web/src/components/Header.vue` - 页头
|
||||
- 创建: `web/src/components/Footer.vue` - 页脚
|
||||
|
||||
---
|
||||
|
||||
## 验证方式
|
||||
|
||||
1. **后端验证:**
|
||||
```bash
|
||||
cd api
|
||||
pip install -r requirements.txt
|
||||
python init_db.py
|
||||
uvicorn main:app --reload
|
||||
# 访问 http://localhost:8000/docs 测试 API
|
||||
```
|
||||
|
||||
2. **后台管理验证:**
|
||||
```bash
|
||||
cd admin
|
||||
npm install
|
||||
npm run dev
|
||||
# 登录后测试各项管理功能
|
||||
```
|
||||
|
||||
3. **前台验证:**
|
||||
```bash
|
||||
cd web
|
||||
npm install
|
||||
npm run dev
|
||||
# 浏览笑话列表、分类筛选、搜索等功能
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 文件清单汇总
|
||||
|
||||
**后端 API (api/):**
|
||||
```
|
||||
api/
|
||||
├── requirements.txt
|
||||
├── main.py
|
||||
├── init_db.py
|
||||
└── app/
|
||||
├── __init__.py
|
||||
├── config.py
|
||||
├── database.py
|
||||
├── models/
|
||||
│ ├── __init__.py
|
||||
│ ├── joke.py
|
||||
│ ├── category.py
|
||||
│ └── user.py
|
||||
├── schemas/
|
||||
│ ├── __init__.py
|
||||
│ ├── joke.py
|
||||
│ ├── category.py
|
||||
│ └── auth.py
|
||||
└── routers/
|
||||
├── __init__.py
|
||||
├── jokes.py
|
||||
├── categories.py
|
||||
├── auth.py
|
||||
└── admin.py
|
||||
```
|
||||
|
||||
**后台管理 (admin/):**
|
||||
```
|
||||
admin/
|
||||
├── package.json
|
||||
├── vite.config.js
|
||||
├── index.html
|
||||
└── src/
|
||||
├── main.js
|
||||
├── App.vue
|
||||
├── api/
|
||||
├── stores/
|
||||
├── router/
|
||||
├── layout/
|
||||
└── views/
|
||||
```
|
||||
|
||||
**前台展示 (web/):**
|
||||
```
|
||||
web/
|
||||
├── package.json
|
||||
├── vite.config.js
|
||||
├── index.html
|
||||
└── src/
|
||||
├── main.js
|
||||
├── App.vue
|
||||
├── api/
|
||||
├── stores/
|
||||
├── router/
|
||||
├── components/
|
||||
└── views/
|
||||
├── home/
|
||||
├── category/
|
||||
├── detail/
|
||||
└── search/
|
||||
```
|
||||
Reference in New Issue
Block a user