5.5 KiB
5.5 KiB
笑话大全平台 - 实施计划
推荐执行方式: 使用 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 连接
# 依赖
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- 页脚
验证方式
-
后端验证:
cd api pip install -r requirements.txt python init_db.py uvicorn main:app --reload # 访问 http://localhost:8000/docs 测试 API -
后台管理验证:
cd admin npm install npm run dev # 登录后测试各项管理功能 -
前台验证:
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/