Files
nxxmdata/arch.md

372 lines
13 KiB
Markdown
Raw Normal View History

# 项目架构文档
## 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*
*分析基于实际代码结构*