372 lines
13 KiB
Markdown
372 lines
13 KiB
Markdown
|
|
# 项目架构文档
|
|||
|
|
|
|||
|
|
## 1. 项目概述
|
|||
|
|
本项目是**宁夏智慧养殖监管平台**,一个现代化的农场管理系统,包含以下核心功能:
|
|||
|
|
- **农场设备监控**: 实时监控农场设备状态和运行数据
|
|||
|
|
- **动物健康管理**: 跟踪和管理动物健康状况
|
|||
|
|
- **地图可视化**: 基于百度地图的农场地理信息展示
|
|||
|
|
- **数据分析与可视化**: 提供丰富的图表和统计分析
|
|||
|
|
- **用户权限管理**: 基于角色的用户认证和授权系统
|
|||
|
|
- **订单管理**: 产品销售和订单处理功能
|
|||
|
|
- **预警管理**: 实时告警监控和预警处理
|
|||
|
|
- **性能监控**: 实时系统性能监控和分析
|
|||
|
|
|
|||
|
|
## 2. 目录结构
|
|||
|
|
### 2.1 后端 (`backend/`)
|
|||
|
|
- `config/`: 配置文件
|
|||
|
|
- `database.js`: MySQL数据库连接配置
|
|||
|
|
- `database-pool.js`: 数据库连接池管理
|
|||
|
|
- `performance-config.js`: 性能监控配置
|
|||
|
|
- `swagger.js`: API文档配置
|
|||
|
|
- `controllers/`: 业务逻辑控制器
|
|||
|
|
- `farmController.js`: 农场管理
|
|||
|
|
- `animalController.js`: 动物管理
|
|||
|
|
- `deviceController.js`: 设备管理
|
|||
|
|
- `alertController.js`: 告警管理
|
|||
|
|
- `statsController.js`: 统计分析
|
|||
|
|
- `mapController.js`: 地图服务
|
|||
|
|
- `userController.js`: 用户管理
|
|||
|
|
- `productController.js`: 产品管理
|
|||
|
|
- `orderController.js`: 订单管理
|
|||
|
|
- `models/`: 数据模型定义(Sequelize ORM)
|
|||
|
|
- `Farm.js`: 农场模型
|
|||
|
|
- `Animal.js`: 动物模型
|
|||
|
|
- `Device.js`: 设备模型
|
|||
|
|
- `Alert.js`: 告警模型
|
|||
|
|
- `User.js`: 用户模型
|
|||
|
|
- `Role.js`: 角色模型
|
|||
|
|
- `Product.js`: 产品模型
|
|||
|
|
- `Order.js`: 订单模型
|
|||
|
|
- `OrderItem.js`: 订单项模型
|
|||
|
|
- `UserRole.js`: 用户角色关联模型
|
|||
|
|
- `SensorData.js`: 传感器数据模型
|
|||
|
|
- `BaseModel.js`: 基础模型
|
|||
|
|
- `index.js`: 模型入口文件
|
|||
|
|
- `routes/`: API路由定义
|
|||
|
|
- `auth.js`: 认证路由
|
|||
|
|
- `users.js`: 用户管理路由
|
|||
|
|
- `products.js`: 产品管理路由
|
|||
|
|
- `orders.js`: 订单管理路由
|
|||
|
|
- `farms.js`: 农场管理路由
|
|||
|
|
- `animals.js`: 动物管理路由
|
|||
|
|
- `devices.js`: 设备管理路由
|
|||
|
|
- `alerts.js`: 告警管理路由
|
|||
|
|
- `stats.js`: 统计分析路由
|
|||
|
|
- `map.js`: 地图服务路由
|
|||
|
|
- `performance-routes.js`: 性能监控路由
|
|||
|
|
- `middleware/`: 中间件
|
|||
|
|
- `auth.js`: 认证中间件
|
|||
|
|
- `performance-middleware.js`: 性能监控中间件
|
|||
|
|
- `scripts/`: 数据库管理脚本
|
|||
|
|
- `init-db.js`: 数据库初始化
|
|||
|
|
- `migration-manager.js`: 迁移管理
|
|||
|
|
- `seed-manager.js`: 种子数据管理
|
|||
|
|
- `test-connection.js`: 连接测试
|
|||
|
|
- `test-map-api.js`: 地图API测试
|
|||
|
|
- `utils/`: 工具类
|
|||
|
|
- `logger.js`: 日志工具
|
|||
|
|
- `performance-monitor.js`: 性能监控
|
|||
|
|
- `db-monitor.js`: 数据库监控
|
|||
|
|
- `query-optimizer.js`: 查询优化器
|
|||
|
|
- `migrations/`: 数据库迁移文件
|
|||
|
|
- `seeds/`: 种子数据文件
|
|||
|
|
- `logs/`: 日志文件目录
|
|||
|
|
|
|||
|
|
### 2.2 前端 (`frontend/`)
|
|||
|
|
- `src/components/`: 可复用的UI组件
|
|||
|
|
- `BaiduMap.vue`: 百度地图组件
|
|||
|
|
- `EChart.vue`: 图表组件
|
|||
|
|
- `Menu.vue`: 导航菜单
|
|||
|
|
- `Dashboard.vue`: 仪表盘组件
|
|||
|
|
- `AlertStats.vue`: 告警统计组件
|
|||
|
|
- `AnimalStats.vue`: 动物统计组件
|
|||
|
|
- `DeviceStats.vue`: 设备统计组件
|
|||
|
|
- `FarmDetail.vue`: 农场详情组件
|
|||
|
|
- `MonitorChart.vue`: 监控图表组件
|
|||
|
|
- `ChartPerformanceMonitor.vue`: 性能监控图表
|
|||
|
|
- `VirtualScrollChart.vue`: 虚拟滚动图表
|
|||
|
|
- `src/views/`: 页面级组件
|
|||
|
|
- `Home.vue`: 首页
|
|||
|
|
- `Dashboard.vue`: 系统概览
|
|||
|
|
- `MapView.vue`: 地图监控
|
|||
|
|
- `Analytics.vue`: 数据分析
|
|||
|
|
- `Monitor.vue`: 实时监控
|
|||
|
|
- `Login.vue`: 登录页面
|
|||
|
|
- `Users.vue`: 用户管理
|
|||
|
|
- `Products.vue`: 产品管理
|
|||
|
|
- `Orders.vue`: 订单管理
|
|||
|
|
- `Devices.vue`: 设备管理
|
|||
|
|
- `Animals.vue`: 动物管理
|
|||
|
|
- `Alerts.vue`: 预警管理
|
|||
|
|
- `TestAnalytics.vue`: 测试分析页面
|
|||
|
|
- `MapZoomDemo.vue`: 地图缩放演示
|
|||
|
|
- `NotFound.vue`: 404页面
|
|||
|
|
- `src/stores/`: 状态管理(Pinia)
|
|||
|
|
- `user.js`: 用户状态管理
|
|||
|
|
- `data.js`: 数据状态管理
|
|||
|
|
- `settings.js`: 设置状态管理
|
|||
|
|
- `index.js`: 状态管理入口
|
|||
|
|
- `src/router/`: 路由配置
|
|||
|
|
- `index.js`: 路由实例和守卫
|
|||
|
|
- `routes.js`: 路由定义
|
|||
|
|
- `src/utils/`: 工具类(API调用、图表服务等)
|
|||
|
|
- `api.js`: API请求封装
|
|||
|
|
- `src/config/`: 配置文件
|
|||
|
|
- `public/`: 静态资源和测试页面
|
|||
|
|
- `debug-devices.html`: 设备调试页面
|
|||
|
|
- `debug-users.html`: 用户调试页面
|
|||
|
|
- `map-test.html`: 地图测试页面
|
|||
|
|
- `test-auto-login.html`: 自动登录测试
|
|||
|
|
- `test-users-display.html`: 用户显示测试
|
|||
|
|
|
|||
|
|
### 2.3 其他
|
|||
|
|
- `docs/`: 项目文档
|
|||
|
|
- `baidu-map-license.md`: 百度地图许可文档
|
|||
|
|
- `performance-monitoring.md`: 性能监控文档
|
|||
|
|
- `tests/`: 测试脚本
|
|||
|
|
- `performance-monitor-test.js`: 性能监控测试
|
|||
|
|
- `examples/`: 示例代码
|
|||
|
|
- `performance-monitor-integration.js`: 性能监控集成示例
|
|||
|
|
- `create_tables.sql`: 数据库表创建脚本
|
|||
|
|
- `schema.sql`: 数据库架构脚本
|
|||
|
|
- `design.md`: 详细设计文档
|
|||
|
|
- `dev-plan.md`: 开发计划文档
|
|||
|
|
- `task.md`: 任务列表文档
|
|||
|
|
|
|||
|
|
## 3. 模块划分
|
|||
|
|
### 3.1 后端模块
|
|||
|
|
- **农场管理模块**: 农场信息管理、地理位置管理
|
|||
|
|
- **设备管理模块**: 监控农场设备状态、设备数据采集
|
|||
|
|
- **动物管理模块**: 跟踪动物健康数据、动物档案管理
|
|||
|
|
- **告警管理模块**: 系统告警处理、告警规则配置
|
|||
|
|
- **用户管理模块**: 用户认证、角色权限管理
|
|||
|
|
- **订单管理模块**: 产品销售、订单处理流程
|
|||
|
|
- **统计分析模块**: 数据统计、报表生成
|
|||
|
|
- **地图服务模块**: 地理信息服务、位置数据处理
|
|||
|
|
- **性能监控模块**: 系统性能监控、API性能分析
|
|||
|
|
|
|||
|
|
### 3.2 前端模块
|
|||
|
|
- **首页模块**: 系统入口、快速导航
|
|||
|
|
- **仪表盘模块**: 关键指标展示、数据概览
|
|||
|
|
- **地图模块**: 基于百度地图的可视化展示、地图缩放演示
|
|||
|
|
- **数据分析模块**: 图表展示、数据分析工具、测试分析功能
|
|||
|
|
- **实时监控模块**: 实时数据监控、告警展示、性能监控图表
|
|||
|
|
- **用户管理模块**: 用户信息管理、权限配置
|
|||
|
|
- **产品管理模块**: 产品信息维护、库存管理
|
|||
|
|
- **订单管理模块**: 订单处理、订单状态跟踪
|
|||
|
|
- **设备管理模块**: 设备状态监控、设备信息管理
|
|||
|
|
- **动物管理模块**: 动物健康档案、动物信息管理
|
|||
|
|
- **预警管理模块**: 告警规则配置、预警信息处理
|
|||
|
|
- **认证模块**: 用户登录、权限验证、自动登录
|
|||
|
|
|
|||
|
|
## 4. 核心架构
|
|||
|
|
### 4.1 技术栈
|
|||
|
|
**后端技术栈:**
|
|||
|
|
- **运行环境**: Node.js
|
|||
|
|
- **Web框架**: Express.js 4.18+
|
|||
|
|
- **ORM框架**: Sequelize 6.30+
|
|||
|
|
- **数据库**: MySQL (mysql2 3.0+)
|
|||
|
|
- **认证**: JWT (jsonwebtoken 9.0+)
|
|||
|
|
- **密码加密**: bcrypt 5.1+
|
|||
|
|
- **API文档**: Swagger (swagger-jsdoc + swagger-ui-express)
|
|||
|
|
- **日志管理**: Winston 3.17+
|
|||
|
|
- **开发工具**: nodemon 3.0+
|
|||
|
|
- **跨域处理**: CORS 2.8+
|
|||
|
|
- **数据验证**: express-validator 7.2+
|
|||
|
|
- **环境变量**: dotenv 16.0+
|
|||
|
|
- **HTTP客户端**: Axios 1.4+
|
|||
|
|
- **服务器端口**: 5350
|
|||
|
|
|
|||
|
|
**前端技术栈:**
|
|||
|
|
- **框架**: Vue.js 3.4+
|
|||
|
|
- **构建工具**: Vite 5.0+
|
|||
|
|
- **路由管理**: Vue Router 4.0+
|
|||
|
|
- **状态管理**: Pinia 2.0+
|
|||
|
|
- **UI组件库**: Ant Design Vue 4.0+
|
|||
|
|
- **图表库**: ECharts 5.4+
|
|||
|
|
- **地图服务**: 百度地图API
|
|||
|
|
- **HTTP客户端**: Axios 1.11+
|
|||
|
|
- **开发服务器**: Vite Dev Server (端口: 5300)
|
|||
|
|
- **代理配置**: API代理到后端服务器
|
|||
|
|
|
|||
|
|
**数据库设计:**
|
|||
|
|
- **主数据库**: MySQL (生产环境)
|
|||
|
|
- **连接池**: 数据库连接池管理
|
|||
|
|
- **字符集**: UTF8MB4
|
|||
|
|
- **时区**: +08:00 (北京时间)
|
|||
|
|
|
|||
|
|
### 4.2 数据流架构
|
|||
|
|
1. **前端请求流程**:
|
|||
|
|
- 用户操作 → Vue组件 → Pinia状态管理 → API调用
|
|||
|
|
2. **后端处理流程**:
|
|||
|
|
- API路由 → 中间件验证 → 控制器处理 → 模型操作 → 数据库
|
|||
|
|
3. **响应返回流程**:
|
|||
|
|
- 数据库结果 → 模型封装 → 控制器响应 → 前端状态更新 → UI渲染
|
|||
|
|
4. **实时数据流**:
|
|||
|
|
- 设备数据采集 → 后端处理 → 数据库存储 → 前端轮询/推送更新
|
|||
|
|
|
|||
|
|
## 5. 数据模型关系
|
|||
|
|
### 5.1 核心实体关系
|
|||
|
|
- **Farm (农场)** ← 一对多 → **Animal (动物)**
|
|||
|
|
- **Farm (农场)** ← 一对多 → **Device (设备)**
|
|||
|
|
- **Farm (农场)** ← 一对多 → **Alert (告警)**
|
|||
|
|
- **Device (设备)** ← 一对多 → **Alert (告警)**
|
|||
|
|
- **User (用户)** ← 多对多 → **Role (角色)** (通过UserRole中间表)
|
|||
|
|
- **User (用户)** ← 一对多 → **Order (订单)**
|
|||
|
|
- **Order (订单)** ← 一对多 → **OrderItem (订单项)**
|
|||
|
|
- **Product (产品)** ← 一对多 → **OrderItem (订单项)**
|
|||
|
|
|
|||
|
|
### 5.2 数据库约束
|
|||
|
|
- **外键约束**: 确保数据完整性
|
|||
|
|
- **级联删除**: Farm删除时级联删除相关Animal、Device、Alert
|
|||
|
|
- **级联更新**: 主键更新时自动更新外键
|
|||
|
|
- **限制删除**: Product被OrderItem引用时限制删除
|
|||
|
|
|
|||
|
|
## 6. API设计规范
|
|||
|
|
### 6.1 RESTful API结构
|
|||
|
|
```
|
|||
|
|
/api/farms - 农场管理
|
|||
|
|
/api/animals - 动物管理
|
|||
|
|
/api/devices - 设备管理
|
|||
|
|
/api/alerts - 告警管理
|
|||
|
|
/api/users - 用户管理
|
|||
|
|
/api/products - 产品管理
|
|||
|
|
/api/orders - 订单管理
|
|||
|
|
/api/stats - 统计数据
|
|||
|
|
/api/map - 地图服务
|
|||
|
|
/api/auth - 认证服务
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6.2 响应格式标准
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"data": {},
|
|||
|
|
"message": "操作成功",
|
|||
|
|
"timestamp": "2025-01-18T10:30:00Z"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 7. 安全架构
|
|||
|
|
### 7.1 认证与授权
|
|||
|
|
- **JWT Token**: 无状态身份验证
|
|||
|
|
- **角色权限**: 基于RBAC的权限控制
|
|||
|
|
- **路由守卫**: 前端路由级别的权限验证
|
|||
|
|
- **API中间件**: 后端接口级别的权限验证
|
|||
|
|
|
|||
|
|
### 7.2 数据安全
|
|||
|
|
- **密码加密**: bcrypt哈希加密
|
|||
|
|
- **SQL注入防护**: Sequelize ORM参数化查询
|
|||
|
|
- **XSS防护**: 前端输入验证和转义
|
|||
|
|
- **CORS配置**: 跨域请求安全控制
|
|||
|
|
|
|||
|
|
## 8. 性能优化
|
|||
|
|
### 8.1 后端性能
|
|||
|
|
- **数据库连接池**: 优化数据库连接管理
|
|||
|
|
- **查询优化**: 数据库查询性能监控
|
|||
|
|
- **API性能监控**: 接口响应时间监控
|
|||
|
|
- **内存监控**: 系统资源使用监控
|
|||
|
|
|
|||
|
|
### 8.2 前端性能
|
|||
|
|
- **组件懒加载**: 路由级别的代码分割
|
|||
|
|
- **图表优化**: ECharts按需加载
|
|||
|
|
- **状态管理**: Pinia轻量级状态管理
|
|||
|
|
- **构建优化**: Vite快速构建和热更新
|
|||
|
|
|
|||
|
|
## 9. 部署架构
|
|||
|
|
### 9.1 开发环境
|
|||
|
|
- **前端**: Vite开发服务器 (http://localhost:5300)
|
|||
|
|
- **后端**: Node.js开发服务器 (http://localhost:5350)
|
|||
|
|
- **数据库**: MySQL本地实例
|
|||
|
|
|
|||
|
|
### 9.2 生产环境建议
|
|||
|
|
- **前端**: 静态文件部署 (Nginx)
|
|||
|
|
- **后端**: PM2进程管理
|
|||
|
|
- **数据库**: MySQL主从复制
|
|||
|
|
- **负载均衡**: Nginx反向代理
|
|||
|
|
- **容器化**: Docker部署支持
|
|||
|
|
|
|||
|
|
## 10. 依赖关系
|
|||
|
|
### 10.1 后端主要依赖
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"express": "^4.18.0",
|
|||
|
|
"sequelize": "^6.30.0",
|
|||
|
|
"mysql2": "^3.0.0",
|
|||
|
|
"jsonwebtoken": "^9.0.0",
|
|||
|
|
"bcrypt": "^5.1.0",
|
|||
|
|
"swagger-ui-express": "^5.0.0",
|
|||
|
|
"swagger-jsdoc": "^6.2.8",
|
|||
|
|
"winston": "^3.17.0",
|
|||
|
|
"cors": "^2.8.5",
|
|||
|
|
"express-validator": "^7.2.1",
|
|||
|
|
"dotenv": "^16.0.0",
|
|||
|
|
"axios": "^1.4.0",
|
|||
|
|
"nodemon": "^3.0.0"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 10.2 前端主要依赖
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"vue": "^3.4.0",
|
|||
|
|
"vue-router": "^4.0.0",
|
|||
|
|
"pinia": "^2.0.0",
|
|||
|
|
"ant-design-vue": "^4.0.0",
|
|||
|
|
"echarts": "^5.4.0",
|
|||
|
|
"axios": "^1.11.0",
|
|||
|
|
"@vitejs/plugin-vue": "^5.0.0",
|
|||
|
|
"vite": "^5.0.0"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 10.3 外部服务
|
|||
|
|
- **百度地图API**: 地理信息可视化服务
|
|||
|
|
- **MySQL数据库**: 数据持久化存储
|
|||
|
|
|
|||
|
|
## 11. 扩展性设计
|
|||
|
|
### 11.1 模块化架构
|
|||
|
|
- **前端组件化**: 可复用的Vue组件
|
|||
|
|
- **后端模块化**: 控制器、模型、路由分离
|
|||
|
|
- **配置外部化**: 环境变量配置管理
|
|||
|
|
|
|||
|
|
### 11.2 未来扩展方向
|
|||
|
|
- **微服务架构**: 服务拆分和独立部署
|
|||
|
|
- **消息队列**: 异步任务处理
|
|||
|
|
- **缓存系统**: Redis缓存优化
|
|||
|
|
- **实时通信**: WebSocket实时数据推送
|
|||
|
|
- **移动端支持**: 响应式设计和PWA
|
|||
|
|
|
|||
|
|
## 12. 项目特色功能
|
|||
|
|
|
|||
|
|
### 12.1 性能监控系统
|
|||
|
|
- **实时性能监控**: 监控API响应时间、系统资源使用情况
|
|||
|
|
- **性能分析图表**: 基于ECharts的性能数据可视化
|
|||
|
|
- **虚拟滚动优化**: 大数据量图表的性能优化
|
|||
|
|
- **数据库查询优化**: 查询性能监控和优化建议
|
|||
|
|
|
|||
|
|
### 12.2 地图可视化系统
|
|||
|
|
- **百度地图集成**: 农场地理位置可视化展示
|
|||
|
|
- **地图缩放演示**: 多级缩放功能演示
|
|||
|
|
- **地理信息服务**: 位置数据处理和展示
|
|||
|
|
|
|||
|
|
### 12.3 数据分析系统
|
|||
|
|
- **多维度统计**: 设备、动物、告警等多维度数据统计
|
|||
|
|
- **实时图表**: 基于ECharts的实时数据图表
|
|||
|
|
- **测试分析功能**: 专门的测试分析页面
|
|||
|
|
|
|||
|
|
### 12.4 认证与权限系统
|
|||
|
|
- **JWT无状态认证**: 基于Token的身份验证
|
|||
|
|
- **自动登录功能**: 智能的自动登录和Token验证
|
|||
|
|
- **路由权限守卫**: 前端路由级别的权限控制
|
|||
|
|
- **角色权限管理**: 基于RBAC的权限控制
|
|||
|
|
|
|||
|
|
### 12.5 开发与调试工具
|
|||
|
|
- **API调试页面**: 专门的API测试和调试页面
|
|||
|
|
- **性能测试工具**: 内置的性能测试和监控工具
|
|||
|
|
- **数据库管理脚本**: 完整的数据库管理和维护脚本
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
*最后更新: 2025-01-18*
|
|||
|
|
*版本: v2.1*
|
|||
|
|
*分析基于实际代码结构*
|