291 lines
8.5 KiB
Markdown
291 lines
8.5 KiB
Markdown
# 实现路线图
|
||
|
||
## 开发原则
|
||
|
||
> **"做完一个模块,测试一个模块,保证每一步的实现都能使用。"**
|
||
|
||
---
|
||
|
||
## 第一阶段:基础架构搭建(第 1 步)
|
||
|
||
### 目标
|
||
搭建前后端基础架构,确保开发环境可用,前后端能正常通信。
|
||
|
||
### 任务清单
|
||
|
||
#### 1.1 后端基础架构
|
||
- [ ] 创建项目目录结构
|
||
- [ ] 初始化 Python 虚拟环境
|
||
- [ ] 安装依赖:FastAPI, SQLAlchemy, Pydantic, python-jose, passlib, bcrypt, uvicorn
|
||
- [ ] 创建 `app/main.py` - FastAPI 入口
|
||
- [ ] 创建 `app/database.py` - SQLite 连接配置
|
||
- [ ] 创建 `app/config.py` - 环境配置
|
||
- [ ] 配置 CORS 允许前端访问
|
||
- [ ] 配置自动 Swagger 文档
|
||
- [ ] 测试:启动后端,访问 `/docs` 确认文档页面正常
|
||
|
||
#### 1.2 前端基础架构
|
||
- [ ] 使用 Vite 创建 React 项目
|
||
- [ ] 安装依赖:tailwindcss, react-router, axios, swiper, lucide-react
|
||
- [ ] 配置 TailwindCSS 4
|
||
- [ ] 创建基础目录结构
|
||
- [ ] 配置 API 请求基础路径
|
||
- [ ] 测试:启动前端,确认页面正常显示
|
||
|
||
### 验收标准
|
||
```bash
|
||
# 后端启动成功
|
||
cd backend && uvicorn app.main:app --reload --port 10003
|
||
# 访问 http://localhost:10003/docs 能看到 Swagger 文档
|
||
|
||
# 前端启动成功
|
||
cd frontend && npm run dev
|
||
# 访问 http://localhost:10002 能看到默认 React 页面
|
||
```
|
||
|
||
---
|
||
|
||
## 第二阶段:数据模型与认证(第 2 步)
|
||
|
||
### 目标
|
||
建立数据库模型,实现管理员认证功能。
|
||
|
||
### 任务清单
|
||
|
||
#### 2.1 数据库模型
|
||
- [ ] 创建 `app/models/admin.py` - 管理员模型
|
||
- [ ] 创建 `app/models/home_module.py` - 首页模块模型
|
||
- [ ] 创建 `app/models/nav_menu.py` - 导航菜单模型
|
||
- [ ] 创建 `app/models/setting.py` - 系统设置模型
|
||
- [ ] 创建数据库初始化脚本
|
||
- [ ] 创建默认管理员账号 (admin/admin123)
|
||
- [ ] 测试:确认数据库表创建成功
|
||
|
||
#### 2.2 认证模块
|
||
- [ ] 创建 `app/auth.py` - JWT 认证工具
|
||
- [ ] 创建 `app/routers/auth.py` - 登录/获取信息/修改密码接口
|
||
- [ ] 创建登录依赖 `get_current_admin`
|
||
- [ ] 测试:使用 Swagger 测试登录接口
|
||
|
||
#### 2.3 后台登录页面
|
||
- [ ] 创建 `views/admin/Login.jsx`
|
||
- [ ] 实现登录表单
|
||
- [ ] 调用登录 API
|
||
- [ ] Token 本地存储
|
||
- [ ] 登录成功跳转
|
||
- [ ] 测试:能正常登录并跳转到后台
|
||
|
||
### 验收标准
|
||
```bash
|
||
# 1. 数据库初始化成功
|
||
sqlite3 backend/cms.db ".tables"
|
||
# 应显示: admins, home_modules, nav_menus, settings
|
||
|
||
# 2. 登录接口正常
|
||
curl -X POST http://localhost:10003/api/auth/login \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"username":"admin","password":"admin123"}'
|
||
# 返回包含 token 的 JSON
|
||
|
||
# 3. 前端登录页面正常
|
||
# 访问 http://localhost:10002/admin/login 能看到登录表单
|
||
# 输入 admin/admin123 登录成功
|
||
```
|
||
|
||
---
|
||
|
||
## 第三阶段:首页模块管理(第 3 步)⭐ 核心
|
||
|
||
### 目标
|
||
实现首页模块化功能,支持后台配置,前台展示。
|
||
|
||
### 任务清单
|
||
|
||
#### 3.1 首页模块后端 API
|
||
- [ ] 创建 `app/routers/home_modules.py`
|
||
- [ ] GET `/api/home/modules` - 前台获取启用的模块
|
||
- [ ] GET `/api/admin/home/modules` - 后台获取所有模块
|
||
- [ ] GET `/api/admin/home/modules/:id` - 获取单个模块详情
|
||
- [ ] PUT `/api/admin/home/modules/:id` - 更新模块
|
||
- [ ] PUT `/api/admin/home/modules/sort` - 批量更新排序
|
||
- [ ] PUT `/api/admin/home/modules/:id/toggle` - 切换启用状态
|
||
- [ ] 测试:所有接口在 Swagger 中测试通过
|
||
|
||
#### 3.2 首页模块后台管理页面
|
||
- [ ] 创建 `views/admin/Dashboard.jsx` - 后台首页仪表盘
|
||
- [ ] 创建 `views/admin/HomeModules.jsx` - 模块列表页
|
||
- [ ] 显示所有模块(名称、类型、排序、启用状态)
|
||
- [ ] 拖拽排序功能
|
||
- [ ] 启用/禁用开关
|
||
- [ ] 编辑按钮跳转
|
||
- [ ] 创建 `views/admin/HomeModuleEdit.jsx` - 模块编辑页
|
||
- [ ] 基础信息编辑(标题、副标题)
|
||
- [ ] 内容编辑(根据模块类型不同表单)
|
||
- [ ] 样式配置(背景色、内边距)
|
||
- [ ] 保存功能
|
||
- [ ] 创建 `components/layout/AdminLayout.jsx` - 后台布局
|
||
- [ ] 测试:能在后台增删改查模块
|
||
|
||
#### 3.3 首页模块前台展示组件
|
||
- [ ] 创建 `components/modules/BannerModule.jsx` - 轮播图
|
||
- [ ] 创建 `components/modules/FeaturesModule.jsx` - 产品优势
|
||
- [ ] 创建 `components/modules/NewsModule.jsx` - 新闻动态
|
||
- [ ] 创建 `components/modules/PartnersModule.jsx` - 合作伙伴
|
||
- [ ] 创建 `components/modules/DownloadsModule.jsx` - APP下载
|
||
- [ ] 创建 `components/modules/ContactModule.jsx` - 联系方式
|
||
- [ ] 创建 `components/modules/HtmlModule.jsx` - 自定义HTML
|
||
|
||
#### 3.4 首页页面
|
||
- [ ] 创建 `views/home/Index.jsx`
|
||
- [ ] 调用 `/api/home/modules` 获取模块数据
|
||
- [ ] 根据模块类型渲染对应组件
|
||
- [ ] 按 sort_order 排序
|
||
- [ ] 过滤未启用的模块
|
||
- [ ] 测试:首页能正确展示所有启用的模块
|
||
|
||
### 验收标准
|
||
```bash
|
||
# 1. 后台能管理模块
|
||
# 访问 http://localhost:10002/admin
|
||
# 能看到模块列表,可以拖拽排序、启用/禁用、编辑内容
|
||
|
||
# 2. 前台能展示模块
|
||
# 访问 http://localhost:10002/
|
||
# 能看到按顺序排列的各个模块
|
||
|
||
# 3. 修改实时生效
|
||
# 在后台修改模块内容或顺序
|
||
# 刷新前台页面立即看到变化
|
||
```
|
||
|
||
---
|
||
|
||
## 第四阶段:导航与布局(第 4 步)
|
||
|
||
### 目标
|
||
实现导航栏和页脚,支持后台配置导航菜单。
|
||
|
||
### 任务清单
|
||
|
||
#### 4.1 导航菜单后端 API
|
||
- [ ] 创建 `app/routers/nav_menus.py`
|
||
- [ ] GET `/api/nav` - 前台获取启用菜单
|
||
- [ ] GET `/api/admin/nav` - 后台获取所有菜单
|
||
- [ ] POST `/api/admin/nav` - 创建菜单
|
||
- [ ] PUT `/api/admin/nav/:id` - 更新菜单
|
||
- [ ] DELETE `/api/admin/nav/:id` - 删除菜单
|
||
|
||
#### 4.2 导航菜单后台管理
|
||
- [ ] 创建 `views/admin/NavMenus.jsx`
|
||
- [ ] 菜单列表展示
|
||
- [ ] 新增菜单表单
|
||
- [ ] 编辑菜单
|
||
- [ ] 删除菜单确认
|
||
- [ ] 排序调整
|
||
|
||
#### 4.3 前台导航和页脚
|
||
- [ ] 创建 `components/layout/Navbar.jsx`
|
||
- [ ] 动态渲染导航菜单
|
||
- [ ] 移动端汉堡菜单
|
||
- [ ] 创建 `components/layout/Footer.jsx`
|
||
- [ ] 从 settings 读取公司信息
|
||
- [ ] 应用到所有页面
|
||
|
||
### 验收标准
|
||
```bash
|
||
# 1. 后台能管理导航
|
||
# 访问 http://localhost:10002/admin/nav
|
||
# 能增删改查导航菜单
|
||
|
||
# 2. 前台显示正确
|
||
# 访问 http://localhost:10002/
|
||
# 导航栏显示配置的菜单,点击能跳转
|
||
# 页脚显示公司信息
|
||
```
|
||
|
||
---
|
||
|
||
## 第五阶段:系统设置(第 5 步)
|
||
|
||
### 目标
|
||
实现系统设置功能,支持配置网站基本信息。
|
||
|
||
### 任务清单
|
||
|
||
#### 5.1 设置后端 API
|
||
- [ ] 创建 `app/routers/settings.py`
|
||
- [ ] GET `/api/settings` - 前台获取公开设置
|
||
- [ ] GET `/api/admin/settings` - 后台获取所有设置
|
||
- [ ] PUT `/api/admin/settings` - 批量更新设置
|
||
|
||
#### 5.2 设置后台管理
|
||
- [ ] 创建 `views/admin/Settings.jsx`
|
||
- [ ] 网站信息设置(名称、Logo、Favicon)
|
||
- [ ] 公司信息设置(地址、电话、邮箱)
|
||
- [ ] SEO 设置(标题、描述、关键词)
|
||
- [ ] 备案信息设置
|
||
|
||
#### 5.3 文件上传
|
||
- [ ] 创建 `app/routers/upload.py`
|
||
- [ ] POST `/api/upload/image` - 图片上传
|
||
- [ ] 限制文件类型和大小
|
||
- [ ] 生成唯一文件名
|
||
- [ ] 存储到 public/uploads
|
||
|
||
### 验收标准
|
||
```bash
|
||
# 1. 后台能修改设置
|
||
# 访问 http://localhost:10002/admin/settings
|
||
# 能修改网站名称、上传 Logo
|
||
|
||
# 2. 设置生效
|
||
# 修改后前台导航栏显示新 Logo
|
||
# 页脚显示新公司信息
|
||
```
|
||
|
||
---
|
||
|
||
## 第六阶段:数据迁移与优化(后续)
|
||
|
||
### 目标
|
||
导入原有网站的内容数据,优化性能和体验。
|
||
|
||
### 任务清单(暂不实现)
|
||
- [ ] 分析原网站数据结构
|
||
- [ ] 编写数据迁移脚本
|
||
- [ ] 导入新闻数据
|
||
- [ ] 导入产品数据
|
||
- [ ] 导入图片资源
|
||
- [ ] 图片懒加载优化
|
||
- [ ] SEO 优化
|
||
|
||
---
|
||
|
||
## 开发检查清单
|
||
|
||
每个步骤完成后,确认以下事项:
|
||
|
||
- [ ] 代码已提交到 Git
|
||
- [ ] 功能在本地测试通过
|
||
- [ ] API 文档已更新
|
||
- [ ] 无明显 Bug
|
||
- [ ] 代码有适当注释
|
||
|
||
---
|
||
|
||
## 端口分配
|
||
|
||
| 服务 | 端口 | 说明 |
|
||
|------|------|------|
|
||
| 前端开发 | 5173 | Vite 默认 |
|
||
| 前端生产 | 10002 | serve 部署 |
|
||
| 后端 API | 10003 | uvicorn |
|
||
|
||
---
|
||
|
||
## 下一步行动
|
||
|
||
**当前准备开始:第一阶段 - 基础架构搭建**
|
||
|
||
等待用户确认后,开始编写代码。
|