# Conflicts: # PRD.md # arch.md # backend/data-sync-fix-report.md # backend/farms-data-import-summary.md # backend/location-data-validation-report.md # design.md # dev-plan.md # docs/PRD.md # docs/README.md # docs/architecture.md # docs/config/PRD.md # docs/config/arch.md # docs/config/data-sync-fix-report.md # docs/config/design.md # docs/config/dev-plan.md # docs/config/farms-data-import-summary.md # docs/config/location-data-validation-report.md # docs/config/task.md # docs/data-sync-fix-report.md # docs/design.md # docs/development-plan.md # docs/farms-data-import-summary.md # docs/location-data-validation-report.md # docs/task-list.md # task.md
15 KiB
15 KiB
项目架构文档
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: 性能监控中间件
utils/: 工具类logger.js: 日志工具performance-monitor.js: 性能监控db-monitor.js: 数据库监控query-optimizer.js: 查询优化器
migrations/: 数据库迁移文件seeds/: 种子数据文件logs/: 日志文件目录
2.2 管理后台 (admin-system/)
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 官网 (website/)
data-screen/: 官网前端项目- 包含官网展示页面和数据大屏功能
2.4 微信小程序 (mini_program/)
farm-monitor-dashboard/: 微信小程序项目- 包含移动端监控仪表盘功能
2.5 脚本目录 (scripts/)
init-db.js: 数据库初始化migration-manager.js: 迁移管理seed-manager.js: 种子数据管理test-connection.js: 连接测试test-map-api.js: 地图API测试
2.6 文档目录 (docs/)
API.md: API 文档DEPLOYMENT.md: 部署指南DEVELOPMENT.md: 开发指南TROUBLESHOOTING.md: 故障排除CHANGELOG.md: 更新日志CONTRIBUTING.md: 贡献指南SECURITY.md: 安全指南PRD.md: 产品需求文档baidu-map-license.md: 百度地图许可文档performance-monitoring.md: 性能监控文档FINAL_STRUCTURE_REPORT.md: 项目结构报告PROJECT_CLEANUP_REPORT.md: 项目清理报告arch.md: 架构文档design.md: 详细设计schema.sql: 数据库架构脚本create_tables.sql: 数据库表创建脚本
2.7 测试目录 (test/)
performance-monitor-test.js: 性能监控测试
2.8 其他文件
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 18.0+
- Web框架: Express.js 4.18+
- API风格: RESTful API
- ORM框架: Sequelize 6.30+
- 数据库: MySQL 8.0+ (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+
- 响应式设计: 支持Chrome、Firefox、Safari最新版本
- 分辨率支持: 1920x1080及以上
4.2 性能要求
- 页面加载时间: <3秒
- API响应时间: <500ms
- 并发用户支持: 1000+用户
- 数据查询性能: 复杂查询<2秒
- 系统可用性: 99.9%
4.3 安全要求
- 数据传输: HTTPS加密
- 身份认证: JWT令牌机制
- 密码存储: bcrypt加密
- SQL注入防护: ORM参数化查询
- XSS防护: 输入验证和转义
- 访问控制: 基于角色的权限管理(RBAC)
- 会话管理: Token过期机制
4.4 可靠性要求
- 数据备份: 每日自动备份
- 故障恢复: 30分钟内恢复
- 监控告警: 关键指标监控
- 日志记录: 完整的操作日志和错误日志
- 开发服务器: Vite Dev Server (端口: 5300)
- 代理配置: API代理到后端服务器
数据库设计:
- 主数据库: MySQL (生产环境)
- 连接池: 数据库连接池管理
- 字符集: UTF8MB4
- 时区: +08:00 (北京时间)
4.2 数据流架构
- 前端请求流程:
- 用户操作 → Vue组件 → Pinia状态管理 → API调用
- 后端处理流程:
- API路由 → 中间件验证 → 控制器处理 → 模型操作 → 数据库
- 响应返回流程:
- 数据库结果 → 模型封装 → 控制器响应 → 前端状态更新 → UI渲染
- 实时数据流:
- 设备数据采集 → 后端处理 → 数据库存储 → 前端轮询/推送更新
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 响应格式标准
{
"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 后端主要依赖
{
"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 前端主要依赖
{
"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 分析基于实际代码结构