279 lines
6.5 KiB
Markdown
279 lines
6.5 KiB
Markdown
|
|
# 城市手册 - 系统架构文档
|
|||
|
|
|
|||
|
|
## 1. 系统概述
|
|||
|
|
|
|||
|
|
城市手册是一个地方志兼本地生活服务平台,采用前后端分离架构。
|
|||
|
|
|
|||
|
|
## 2. 技术架构
|
|||
|
|
|
|||
|
|
### 2.1 整体架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
|
|||
|
|
│ 用户浏览器 │ ──→ │ Nginx │ ──→ │ React │
|
|||
|
|
│ │ ←── │ 反向代理 │ ←── │ 前端应用 │
|
|||
|
|
└─────────────┘ └──────────────┘ └─────────────┘
|
|||
|
|
│
|
|||
|
|
│
|
|||
|
|
↓
|
|||
|
|
┌──────────────┐
|
|||
|
|
│ Django │
|
|||
|
|
│ 后端 API │
|
|||
|
|
└──────────────┘
|
|||
|
|
│
|
|||
|
|
↓
|
|||
|
|
┌──────────────┐
|
|||
|
|
│ PostgreSQL │
|
|||
|
|
│ 数据库 │
|
|||
|
|
└──────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.2 技术栈
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
- React 18
|
|||
|
|
- MobX(状态管理)
|
|||
|
|
- styled-components(CSS-in-JS)
|
|||
|
|
- React Router(路由)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
- Django 4.2
|
|||
|
|
- Django REST Framework
|
|||
|
|
- JWT 认证
|
|||
|
|
- GraphQL (Graphene)
|
|||
|
|
- PostgreSQL
|
|||
|
|
|
|||
|
|
**部署:**
|
|||
|
|
- Docker & Docker Compose
|
|||
|
|
- Nginx(反向代理)
|
|||
|
|
- Gunicorn(WSGI 服务器)
|
|||
|
|
|
|||
|
|
## 3. 目录结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
city-manual/
|
|||
|
|
├── frontend/ # React 前端
|
|||
|
|
│ ├── src/
|
|||
|
|
│ │ ├── components/ # React 组件
|
|||
|
|
│ │ ├── stores/ # MobX 状态管理
|
|||
|
|
│ │ ├── services/ # API 服务
|
|||
|
|
│ │ ├── styles/ # 全局样式
|
|||
|
|
│ │ └── utils/ # 工具函数
|
|||
|
|
│ └── public/
|
|||
|
|
├── backend/ # Django 后端
|
|||
|
|
│ ├── config/ # 项目配置
|
|||
|
|
│ ├── apps/
|
|||
|
|
│ │ ├── users/ # 用户管理
|
|||
|
|
│ │ ├── regions/ # 版块管理
|
|||
|
|
│ │ ├── articles/ # 内容管理
|
|||
|
|
│ │ ├── services/ # 特色服务
|
|||
|
|
│ │ └── interactions/ # 互动功能
|
|||
|
|
│ └── static/ # 静态文件
|
|||
|
|
├── docs/ # 项目文档
|
|||
|
|
├── skills/ # AgentSkills
|
|||
|
|
└── scripts/ # 部署脚本
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 4. 核心模块
|
|||
|
|
|
|||
|
|
### 4.1 用户模块 (users)
|
|||
|
|
|
|||
|
|
**功能:**
|
|||
|
|
- 用户注册/登录
|
|||
|
|
- JWT 认证
|
|||
|
|
- 个人中心
|
|||
|
|
- 角色管理(普通用户/版主/管理员)
|
|||
|
|
|
|||
|
|
**数据表:**
|
|||
|
|
- `users_user` - 用户表
|
|||
|
|
|
|||
|
|
### 4.2 版块模块 (regions)
|
|||
|
|
|
|||
|
|
**功能:**
|
|||
|
|
- 省→市→县→乡镇→村 五级层级管理
|
|||
|
|
- 版块 CRUD
|
|||
|
|
- 版主申请
|
|||
|
|
|
|||
|
|
**数据表:**
|
|||
|
|
- `regions_region` - 版块表
|
|||
|
|
- `regions_moderatorapplication` - 版主申请表
|
|||
|
|
- `regions_moderatorpermission` - 版主权限表
|
|||
|
|
|
|||
|
|
### 4.3 内容模块 (articles)
|
|||
|
|
|
|||
|
|
**功能:**
|
|||
|
|
- 文章管理
|
|||
|
|
- 内容审核(版主初审 + AI 审核)
|
|||
|
|
- 发布流程
|
|||
|
|
|
|||
|
|
**数据表:**
|
|||
|
|
- `articles_article` - 文章表
|
|||
|
|
|
|||
|
|
### 4.4 特色服务模块 (services)
|
|||
|
|
|
|||
|
|
**功能:**
|
|||
|
|
- 特色服务管理(衣食住行娱乐旅游文化)
|
|||
|
|
- 服务审核
|
|||
|
|
- 服务展示
|
|||
|
|
|
|||
|
|
**数据表:**
|
|||
|
|
- `services_featuredservice` - 特色服务表
|
|||
|
|
|
|||
|
|
### 4.5 互动模块 (interactions)
|
|||
|
|
|
|||
|
|
**功能:**
|
|||
|
|
- 评论
|
|||
|
|
- 评分
|
|||
|
|
- 点赞
|
|||
|
|
- 收藏
|
|||
|
|
|
|||
|
|
**数据表:**
|
|||
|
|
- `interactions_comment` - 评论表
|
|||
|
|
- `interactions_rating` - 评分表
|
|||
|
|
- `interactions_like` - 点赞表
|
|||
|
|
- `interactions_favorite` - 收藏表
|
|||
|
|
|
|||
|
|
## 5. API 设计
|
|||
|
|
|
|||
|
|
### 5.1 REST API
|
|||
|
|
|
|||
|
|
| 端点 | 方法 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `/api/users/` | GET, POST | 用户管理 |
|
|||
|
|
| `/api/users/me/` | GET, PUT, PATCH | 当前用户 |
|
|||
|
|
| `/api/auth/token/` | POST | 登录 |
|
|||
|
|
| `/api/auth/token/refresh/` | POST | 刷新令牌 |
|
|||
|
|
| `/api/regions/` | GET, POST | 版块管理 |
|
|||
|
|
| `/api/articles/` | GET, POST | 文章管理 |
|
|||
|
|
| `/api/services/` | GET, POST | 特色服务 |
|
|||
|
|
| `/api/comments/` | GET, POST | 评论 |
|
|||
|
|
| `/api/ratings/` | GET, POST | 评分 |
|
|||
|
|
| `/api/likes/` | GET, POST | 点赞 |
|
|||
|
|
| `/api/favorites/` | GET, POST | 收藏 |
|
|||
|
|
|
|||
|
|
### 5.2 GraphQL API
|
|||
|
|
|
|||
|
|
端点:`/graphql/`
|
|||
|
|
|
|||
|
|
**Query 类型:**
|
|||
|
|
- `user(id: ID!)` - 获取用户
|
|||
|
|
- `region(id: ID!)` - 获取版块
|
|||
|
|
- `article(id: ID!)` - 获取文章
|
|||
|
|
- `featuredService(id: ID!)` - 获取特色服务
|
|||
|
|
|
|||
|
|
**Mutation 类型:**
|
|||
|
|
- `createArticle(input: ArticleInput!)` - 创建文章
|
|||
|
|
- `updateArticle(id: ID!, input: ArticleInput!)` - 更新文章
|
|||
|
|
- `deleteArticle(id: ID!)` - 删除文章
|
|||
|
|
|
|||
|
|
## 6. 审核流程
|
|||
|
|
|
|||
|
|
### 6.1 内容审核
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
用户提交 → 版主初审 → AI 审核 → 发布
|
|||
|
|
↓ ↓
|
|||
|
|
拒绝 拒绝
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6.2 版主申请
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
用户申请 → 征集支持 → 管理员审核 → 授予权限
|
|||
|
|
↓
|
|||
|
|
支持不足(自动取消)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 7. 权限控制
|
|||
|
|
|
|||
|
|
### 7.1 角色权限
|
|||
|
|
|
|||
|
|
| 角色 | 权限 |
|
|||
|
|
|------|------|
|
|||
|
|
| 普通用户 | 浏览、评论、评分、点赞、收藏、申请版主 |
|
|||
|
|
| 版主 | 管辖范围内内容初审、申请创建版块 |
|
|||
|
|
| 管理员 | 全局管理、版主审核、权限管理 |
|
|||
|
|
|
|||
|
|
### 7.2 版主审核权限
|
|||
|
|
|
|||
|
|
版主只能审核其管辖范围内的内容:
|
|||
|
|
- 省级版主 → 全省内容
|
|||
|
|
- 市级版主 → 全市内容
|
|||
|
|
- 县级版主 → 全县内容
|
|||
|
|
- 以此类推
|
|||
|
|
|
|||
|
|
## 8. 部署架构
|
|||
|
|
|
|||
|
|
### 8.1 生产环境
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
用户 → Nginx (80/443) → Gunicorn (8000) → Django
|
|||
|
|
↓
|
|||
|
|
PostgreSQL (5432)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 8.2 Docker 服务
|
|||
|
|
|
|||
|
|
- `web` - Django 后端
|
|||
|
|
- `frontend` - React 前端(Nginx)
|
|||
|
|
- `db` - PostgreSQL
|
|||
|
|
- `redis` - 缓存(可选)
|
|||
|
|
|
|||
|
|
## 9. 安全考虑
|
|||
|
|
|
|||
|
|
### 9.1 认证安全
|
|||
|
|
- JWT 令牌认证
|
|||
|
|
- 令牌有效期控制
|
|||
|
|
- 刷新令牌机制
|
|||
|
|
|
|||
|
|
### 9.2 数据安全
|
|||
|
|
- 密码加密存储(PBKDF2)
|
|||
|
|
- SQL 注入防护(Django ORM)
|
|||
|
|
- XSS 防护
|
|||
|
|
|
|||
|
|
### 9.3 访问控制
|
|||
|
|
- CORS 配置
|
|||
|
|
- 权限验证
|
|||
|
|
- 速率限制
|
|||
|
|
|
|||
|
|
## 10. 性能优化
|
|||
|
|
|
|||
|
|
### 10.1 数据库优化
|
|||
|
|
- 索引设计
|
|||
|
|
- 查询优化
|
|||
|
|
- 连接池
|
|||
|
|
|
|||
|
|
### 10.2 缓存策略
|
|||
|
|
- Redis 缓存
|
|||
|
|
- 页面缓存
|
|||
|
|
- API 响应缓存
|
|||
|
|
|
|||
|
|
### 10.3 前端优化
|
|||
|
|
- 代码分割
|
|||
|
|
- 懒加载
|
|||
|
|
- 资源压缩
|
|||
|
|
|
|||
|
|
## 11. 监控和日志
|
|||
|
|
|
|||
|
|
### 11.1 应用监控
|
|||
|
|
- 错误追踪
|
|||
|
|
- 性能监控
|
|||
|
|
- 用户行为分析
|
|||
|
|
|
|||
|
|
### 11.2 日志管理
|
|||
|
|
- Django 日志
|
|||
|
|
- Nginx 日志
|
|||
|
|
- 系统日志
|
|||
|
|
|
|||
|
|
## 12. 扩展性设计
|
|||
|
|
|
|||
|
|
### 12.1 水平扩展
|
|||
|
|
- 无状态服务设计
|
|||
|
|
- 数据库读写分离
|
|||
|
|
- 负载均衡
|
|||
|
|
|
|||
|
|
### 12.2 功能扩展
|
|||
|
|
- 插件化设计
|
|||
|
|
- API 版本控制
|
|||
|
|
- 微服务拆分预留
|