264 lines
4.7 KiB
Markdown
264 lines
4.7 KiB
Markdown
|
|
# 🏗️ 系统架构文档
|
||
|
|
|
||
|
|
## 📋 项目概述
|
||
|
|
杰邦科项目是一个综合性的管理系统,包含后台管理、微信小程序和官网三个主要模块。
|
||
|
|
|
||
|
|
## 🎯 技术栈
|
||
|
|
|
||
|
|
### 后端技术栈
|
||
|
|
- **运行时**: Node.js + Express.js
|
||
|
|
- **数据库**: MySQL 8.0
|
||
|
|
- **ORM**: Sequelize
|
||
|
|
- **认证**: JWT + bcrypt
|
||
|
|
- **缓存**: Redis (可选)
|
||
|
|
- **消息队列**: RabbitMQ (可选)
|
||
|
|
|
||
|
|
### 前端技术栈
|
||
|
|
- **后台管理系统**: Vue 3 + Element Plus
|
||
|
|
- **微信小程序**: 原生小程序 + Vant Weapp
|
||
|
|
- **官方网站**: Vue 3 + Vue Router
|
||
|
|
|
||
|
|
### 开发工具
|
||
|
|
- **包管理**: npm
|
||
|
|
- **容器化**: Docker + Docker Compose
|
||
|
|
- **代码质量**: ESLint + Prettier
|
||
|
|
- **测试**: Jest + Supertest
|
||
|
|
|
||
|
|
## 🏢 系统架构
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
graph TB
|
||
|
|
subgraph "前端应用"
|
||
|
|
A[后台管理系统]
|
||
|
|
B[微信小程序]
|
||
|
|
C[官方网站]
|
||
|
|
end
|
||
|
|
|
||
|
|
subgraph "后端服务"
|
||
|
|
D[API Gateway]
|
||
|
|
E[用户服务]
|
||
|
|
F[业务服务]
|
||
|
|
G[文件服务]
|
||
|
|
end
|
||
|
|
|
||
|
|
subgraph "数据层"
|
||
|
|
H[MySQL]
|
||
|
|
I[Redis]
|
||
|
|
J[MinIO]
|
||
|
|
end
|
||
|
|
|
||
|
|
A --> D
|
||
|
|
B --> D
|
||
|
|
C --> D
|
||
|
|
D --> E
|
||
|
|
D --> F
|
||
|
|
D --> G
|
||
|
|
E --> H
|
||
|
|
F --> H
|
||
|
|
G --> J
|
||
|
|
E --> I
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🗄️ 数据库设计
|
||
|
|
|
||
|
|
### 核心表结构
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
erDiagram
|
||
|
|
users ||--o{ orders : places
|
||
|
|
users ||--o{ addresses : has
|
||
|
|
users {
|
||
|
|
bigint id PK
|
||
|
|
varchar username
|
||
|
|
varchar password_hash
|
||
|
|
varchar email
|
||
|
|
varchar phone
|
||
|
|
datetime created_at
|
||
|
|
datetime updated_at
|
||
|
|
}
|
||
|
|
|
||
|
|
orders ||--o{ order_items : contains
|
||
|
|
orders {
|
||
|
|
bigint id PK
|
||
|
|
bigint user_id FK
|
||
|
|
decimal total_amount
|
||
|
|
varchar status
|
||
|
|
datetime created_at
|
||
|
|
}
|
||
|
|
|
||
|
|
products ||--o{ order_items : included_in
|
||
|
|
products {
|
||
|
|
bigint id PK
|
||
|
|
varchar name
|
||
|
|
decimal price
|
||
|
|
text description
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🌐 环境配置
|
||
|
|
|
||
|
|
### 开发环境 (Development)
|
||
|
|
```env
|
||
|
|
DB_HOST=localhost
|
||
|
|
DB_PORT=3306
|
||
|
|
DB_USER=root
|
||
|
|
DB_PASSWORD=rootpassword
|
||
|
|
DB_DATABASE=jiebanke_dev
|
||
|
|
NODE_ENV=development
|
||
|
|
```
|
||
|
|
|
||
|
|
### 测试环境 (Test)
|
||
|
|
```env
|
||
|
|
DB_HOST=192.168.0.240
|
||
|
|
DB_PORT=3306
|
||
|
|
DB_USER=root
|
||
|
|
DB_PASSWORD=aiotAiot123!
|
||
|
|
DB_DATABASE=jiebandata_test
|
||
|
|
NODE_ENV=test
|
||
|
|
```
|
||
|
|
|
||
|
|
### 生产环境 (Production)
|
||
|
|
```env
|
||
|
|
DB_HOST=129.211.213.226
|
||
|
|
DB_PORT=9527
|
||
|
|
DB_USER=root
|
||
|
|
DB_PASSWORD=Aiot123
|
||
|
|
DB_DATABASE=jiebandata
|
||
|
|
NODE_ENV=production
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🔌 API 设计
|
||
|
|
|
||
|
|
### 用户模块 API
|
||
|
|
|
||
|
|
| 方法 | 路径 | 描述 | 认证 |
|
||
|
|
|------|------|------|------|
|
||
|
|
| POST | `/api/v1/users/register` | 用户注册 | 否 |
|
||
|
|
| POST | `/api/v1/users/login` | 用户登录 | 否 |
|
||
|
|
| GET | `/api/v1/users/profile` | 获取用户信息 | JWT |
|
||
|
|
| PUT | `/api/v1/users/profile` | 更新用户信息 | JWT |
|
||
|
|
|
||
|
|
### 示例请求
|
||
|
|
```javascript
|
||
|
|
// 用户登录
|
||
|
|
POST /api/v1/users/login
|
||
|
|
Content-Type: application/json
|
||
|
|
|
||
|
|
{
|
||
|
|
"username": "testuser",
|
||
|
|
"password": "password123"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🚀 部署架构
|
||
|
|
|
||
|
|
### 开发部署
|
||
|
|
```mermaid
|
||
|
|
graph LR
|
||
|
|
A[本地开发机] --> B[Docker Compose]
|
||
|
|
B --> C[MySQL容器]
|
||
|
|
B --> D[Node.js应用]
|
||
|
|
B --> E[Redis容器]
|
||
|
|
```
|
||
|
|
|
||
|
|
### 生产部署
|
||
|
|
```mermaid
|
||
|
|
graph TB
|
||
|
|
subgraph "云服务器"
|
||
|
|
A[Nginx]
|
||
|
|
B[Node.js集群]
|
||
|
|
C[MySQL主从]
|
||
|
|
D[Redis哨兵]
|
||
|
|
end
|
||
|
|
|
||
|
|
A --> B
|
||
|
|
B --> C
|
||
|
|
B --> D
|
||
|
|
```
|
||
|
|
|
||
|
|
## 📊 监控与日志
|
||
|
|
|
||
|
|
- **应用监控**: PM2 + Keymetrics
|
||
|
|
- **日志管理**: Winston + ELK Stack
|
||
|
|
- **性能监控**: New Relic / Datadog
|
||
|
|
- **错误追踪**: Sentry
|
||
|
|
|
||
|
|
## 🔒 安全架构
|
||
|
|
|
||
|
|
### 认证授权
|
||
|
|
- JWT Token 认证
|
||
|
|
- RBAC (基于角色的访问控制)
|
||
|
|
- API 速率限制
|
||
|
|
|
||
|
|
### 数据安全
|
||
|
|
- HTTPS 加密传输
|
||
|
|
- 密码加盐哈希存储
|
||
|
|
- SQL 注入防护
|
||
|
|
- XSS 攻击防护
|
||
|
|
|
||
|
|
### 网络安全
|
||
|
|
- 防火墙规则
|
||
|
|
- IP 白名单
|
||
|
|
- DDoS 防护
|
||
|
|
|
||
|
|
## 📈 性能优化
|
||
|
|
|
||
|
|
### 数据库优化
|
||
|
|
- 索引优化
|
||
|
|
- 查询缓存
|
||
|
|
- 读写分离
|
||
|
|
|
||
|
|
### 应用优化
|
||
|
|
- 响应压缩
|
||
|
|
- 静态资源CDN
|
||
|
|
- 内存缓存
|
||
|
|
|
||
|
|
### 前端优化
|
||
|
|
- 代码分割
|
||
|
|
- 懒加载
|
||
|
|
- 图片优化
|
||
|
|
|
||
|
|
## 🛠️ 开发规范
|
||
|
|
|
||
|
|
### 代码规范
|
||
|
|
- ESLint + Prettier 统一代码风格
|
||
|
|
- Git Commit 消息规范
|
||
|
|
- 代码审查流程
|
||
|
|
|
||
|
|
### 分支策略
|
||
|
|
- Git Flow 工作流
|
||
|
|
- 功能分支开发
|
||
|
|
- 发布分支管理
|
||
|
|
|
||
|
|
### 测试策略
|
||
|
|
- 单元测试覆盖核心逻辑
|
||
|
|
- 集成测试API接口
|
||
|
|
- E2E测试用户流程
|
||
|
|
|
||
|
|
## 📝 文档体系
|
||
|
|
|
||
|
|
1. **ARCHITECTURE.md** - 系统架构文档 (当前文件)
|
||
|
|
2. **README.md** - 项目说明文档
|
||
|
|
3. **API_DOCS.md** - API接口文档
|
||
|
|
4. **DEPLOYMENT.md** - 部署指南
|
||
|
|
5. **DEVELOPMENT.md** - 开发指南
|
||
|
|
|
||
|
|
## 🎯 后续规划
|
||
|
|
|
||
|
|
### 短期目标
|
||
|
|
- [ ] 完善用户管理系统
|
||
|
|
- [ ] 实现订单业务流程
|
||
|
|
- [ ] 部署测试环境
|
||
|
|
|
||
|
|
### 中期目标
|
||
|
|
- [ ] 微服务架构改造
|
||
|
|
- [ ] 容器化部署
|
||
|
|
- [ ] 自动化测试覆盖
|
||
|
|
|
||
|
|
### 长期目标
|
||
|
|
- [ ] 大数据分析平台
|
||
|
|
- [ ] AI智能推荐
|
||
|
|
- [ ] 多语言国际化
|
||
|
|
|
||
|
|
---
|
||
|
|
*最后更新: 2024年* 📅
|