跳到主要内容

Monitoring-Platform 项目文档

📋 项目概述

项目名称: 可视化智能巡检系统 (Monitoring Platform)
项目类型: Web前端应用
开发框架: React 17 + Arco Design
构建工具: React App Rewired
版本: v1.0.0
平台标识: zn

项目简介

可视化智能巡检系统是一个基于React和Arco Design Pro构建的现代化监控平台。系统集成了实时视频监控、地图可视化、数据分析、设备管理等功能,为智能巡检提供全方位的解决方案。项目采用Arco Design Pro作为基础框架,结合Cesium 3D地球、ECharts数据可视化、WebRTC实时通信等技术,打造了一个功能强大、界面美观的监控管理平台。


🎯 核心功能

1. 实时视频监控

  • WebRTC实时流 - 低延迟视频传输
  • 多路视频播放 - 同时监控多个设备
  • 视频录制 - 本地和云端录制
  • 视频回放 - 历史视频查看
  • LiveKit集成 - 专业级实时通信

2. 地图可视化

  • 3D地球展示 - 基于Cesium和Globe.gl
  • 2D地图 - 高德地图集成
  • 设备定位 - 实时设备位置显示
  • 轨迹回放 - 历史轨迹查看
  • 地理围栏 - 区域监控和告警
  • 天地图支持 - 多种地图底图切换

3. 数据可视化

  • ECharts图表 - 丰富的图表类型
  • 实时数据展示 - 动态数据更新
  • 数据统计分析 - 多维度数据分析
  • 自定义仪表盘 - 可配置的数据面板
  • DataView组件 - 大屏数据展示

4. 设备管理

  • 设备列表 - 设备信息管理
  • 设备状态监控 - 实时状态显示
  • 设备控制 - 远程设备操作
  • 设备分组 - 设备分类管理

5. MQTT通信

  • 实时消息 - MQTT协议通信
  • 设备指令 - 远程指令下发
  • 状态同步 - 设备状态实时同步
  • 消息队列 - 可靠消息传输

6. 音频处理

  • AMR录音 - 音频录制和播放
  • 音频编解码 - 多种音频格式支持
  • 实时对讲 - 双向音频通信

7. 数据导出

  • Excel导出 - 数据表格导出
  • 报表生成 - 自动化报表
  • 数据备份 - 数据导出备份

🏗️ 技术架构

核心技术栈

前端框架

  • React 17.0.2 - 用户界面库
  • TypeScript 4.5.2 - 类型安全的JavaScript
  • React Redux 7.2.6 - 状态管理
  • React Router 5.2.0 - 路由管理

UI组件库

  • Arco Design 2.32.2 - 字节跳动企业级UI组件库
  • @arco-themes/react-arco-pro - Arco Pro主题
  • @arco-design/color - 颜色系统
  • Arwes React - 科幻风格UI组件

地图和3D可视化

  • Cesium 1.107.0 - 3D地球和地图引擎
  • Resium 1.16.1 - Cesium的React封装
  • Globe.gl 2.26.2 - 3D地球可视化
  • React Globe.gl 2.22.1 - Globe.gl的React版本
  • React AMap 1.2.8 - 高德地图React组件
  • Turf.js 6.5.0 - 地理空间分析
  • Gcoord 1.0.5 - 坐标转换

数据可视化

  • ECharts 5.4.3 - 数据图表库
  • BizCharts 4.1.11 - 阿里数据可视化
  • @jiaminghi/data-view-react - 大屏数据展示

实时通信

  • LiveKit Client 1.3.2 - WebRTC客户端
  • @livekit/react-components - LiveKit React组件
  • @besovideo/webrtc-player - WebRTC播放器
  • MQTT 5.9.1 - MQTT协议客户端

工具库

  • Axios 0.24.0 - HTTP客户端
  • Lodash 4.17.21 - JavaScript工具库
  • Day.js - 日期处理
  • Classnames 2.3.1 - CSS类名管理
  • Copy-to-clipboard 3.3.1 - 剪贴板操作
  • NProgress 0.2.0 - 进度条
  • Query-string 6.13.8 - URL查询字符串解析

数据处理

  • ExcelJS 4.4.0 - Excel文件处理
  • XLSX 0.18.5 - Excel读写
  • MockJS 1.1.0 - Mock数据生成

其他功能库

  • Fabric 5.3.0 - Canvas图形库
  • React Color 2.18.1 - 颜色选择器
  • Benz AMR Recorder 1.1.5 - AMR音频录制
  • Sonner 1.5.0 - Toast通知
  • Motion 10.16.2 - 动画库
  • JSONP 0.2.1 - JSONP请求

📁 项目结构

monitoring-platform/
├── build/ # 构建输出目录
├── public/ # 静态资源
│ ├── cesium/ # Cesium资源文件
│ └── index.html # HTML模板
├── src/ # 源代码
│ ├── api/ # API接口
│ ├── assets/ # 资源文件
│ ├── components/ # 公共组件
│ ├── locale/ # 国际化文件
│ ├── mock/ # Mock数据
│ ├── model/ # 数据模型
│ ├── pages/ # 页面组件
│ ├── redux/ # Redux状态管理
│ ├── style/ # 样式文件
│ ├── utils/ # 工具函数
│ ├── context.tsx # React Context
│ ├── index.tsx # 入口文件
│ ├── layout.tsx # 布局组件
│ ├── routes.ts # 路由配置
│ ├── settings.json # 配置文件
│ └── setupProxy.js # 代理配置
├── .env.development # 开发环境变量
├── .env.production # 生产环境变量
├── .eslintrc # ESLint配置
├── .prettierrc # Prettier配置
├── .stylelintrc # Stylelint配置
├── config-overrides.js # Webpack配置覆盖
├── nginx.conf # Nginx配置
├── package.json # 项目依赖
├── tsconfig.json # TypeScript配置
├── web_server.Dockerfile # Docker配置
└── README.md # 项目说明

🔧 开发环境配置

必需工具

  • Node.js: 建议使用v14或v16
  • 包管理器: npm (推荐使用--legacy-peer-deps)

环境变量配置

开发环境 (.env.development)

# 应用标题
REACT_APP_TITLE = 可视化智能巡检系统

# 平台标识
REACT_APP_PLATFORM = zn

# 高德地图Token
REACT_APP_AMAP_TOKEN = fe91955804fdc14a802b240e025c8e2c

# WebRTC服务地址
REACT_APP_WEBRTC_URL = wss://webrtc.znhaas.net

# 地图初始中心点 (深圳)
REACT_APP_INIT_MAP_CENTER = {"latitude": "22.609875", "longitude": "114.0295" }

# Google地图瓦片URL
REACT_APP_MAP_TILE_URL = https://mt{0,1,2,3}.google.com/vt/lyrs=m@207000000&hl=en-US&gl=US&src=app&x=[x]&y=[y]&z=[z]&s=Galile

# 天地图影像WMTS服务
REACT_APP_MAP_TIANDI_IMG_WMTS_URL = http://t0.tianditu.gov.cn/vec_w/wmts

# 天地图注记WMTS服务
REACT_APP_MAP_TIANDI_CVA_WMTS_URL = http://t0.tianditu.gov.cn/cva_w/wmts

# 天地图密钥
REACT_APP_MAP_TIANDI_WMTS_KEY = 7d631d4eac7ac8a9056d47782cb96100

生产环境 (.env.production)

# 不生成Source Map
GENERATE_SOURCEMAP = false

# 其他配置与开发环境相同
REACT_APP_TITLE = 可视化智能巡检系统
REACT_APP_PLATFORM = zn
# ... (其他配置同上)

🚀 快速开始

1. 安装依赖

# 使用npm安装 (推荐使用legacy-peer-deps)
npm install --legacy-peer-deps

2. 启动开发服务器

# 开发模式
npm run dev

# 或使用start命令
npm start

开发服务器将在 http://localhost:3000 启动

3. 构建生产版本

# 生产环境构建
npm run build

# 带分析器的构建
npm run build:analyzer

4. 代码检查和格式化

# ESLint检查
npm run eslint

# Stylelint检查
npm run stylelint

# 提交前检查
npm run pre-commit

🎨 主题配置

系统设置 (settings.json)

{
"colorWeek": false, // 色弱模式
"navbar": true, // 显示导航栏
"menu": true, // 显示菜单
"footer": false, // 显示页脚
"themeColor": "#165DFF", // 主题颜色 (Arco Blue)
"menuWidth": "14rem" // 菜单宽度
}

Arco Design主题

项目使用Arco Design Pro主题,支持自定义主题颜色:

// config-overrides.js
new ArcoWebpackPlugin({
theme: '@arco-themes/react-arco-pro',
modifyVars: {
'arcoblue-6': setting.themeColor,
},
})

🗺️ 地图配置

Cesium配置

项目集成了Cesium 3D地球引擎:

// Webpack配置
new webpack.DefinePlugin({
CESIUM_BASE_URL: JSON.stringify("./cesium")
})

// 复制Cesium资源
new CopyPlugin({
patterns: [
{ from: "node_modules/cesium/Build/Cesium/Workers", to: "cesium/Workers" },
{ from: "node_modules/cesium/Build/Cesium/ThirdParty", to: "cesium/ThirdParty" },
{ from: "node_modules/cesium/Build/Cesium/Assets", to: "cesium/Assets" },
{ from: "node_modules/cesium/Build/Cesium/Widgets", to: "cesium/Widgets" },
],
})

地图服务配置

支持多种地图服务:

  • Google Maps - 全球地图服务
  • 天地图 - 国家地理信息公共服务平台
  • 高德地图 - 国内地图服务

📡 WebRTC配置

LiveKit集成

// WebRTC服务地址
const WEBRTC_URL = process.env.REACT_APP_WEBRTC_URL

// LiveKit客户端配置
import { Room } from 'livekit-client'

const room = new Room({
adaptiveStream: true,
dynacast: true,
})

WebRTC播放器

import { WebRTCPlayer } from '@besovideo/webrtc-player'

// 播放器配置
const player = new WebRTCPlayer({
container: element,
url: streamUrl,
autoplay: true,
})

🔌 MQTT配置

MQTT客户端

import mqtt from 'mqtt'

// MQTT连接配置
const client = mqtt.connect('wss://mqtt.example.com', {
clientId: 'monitoring-platform',
username: 'user',
password: 'pass',
clean: true,
reconnectPeriod: 1000,
})

// 订阅主题
client.subscribe('device/+/status')

// 发布消息
client.publish('device/control', JSON.stringify(command))

🏗️ Webpack配置

自定义配置 (config-overrides.js)

项目使用react-app-rewiredcustomize-cra进行Webpack配置覆盖:

module.exports = {
webpack: override(
// Less加载器
addLessLoader({
lessLoaderOptions: {
lessOptions: {},
},
}),

// 装饰器支持
addDecoratorsLegacy(),

// PostCSS配置 (px转rem)
rewirePostcss(config, {
plugins: () => [
require("postcss-pxtorem")({
rootValue: 16,
unitPrecision: 5,
propList: ["*"],
minPixelValue: 0,
exclude: /node_modules/i
}),
],
}),

// SVG加载器
addWebpackModuleRule({
test: /\.svg$/,
loader: '@svgr/webpack'
}),

// Cesium配置
addWebpackPlugin(
new webpack.DefinePlugin({
CESIUM_BASE_URL: JSON.stringify("./cesium")
})
),

// Arco Design插件
addWebpackPlugin(
new ArcoWebpackPlugin({
theme: '@arco-themes/react-arco-pro',
modifyVars: {
'arcoblue-6': setting.themeColor,
},
})
),

// 生产环境代码压缩
process.env.NODE_ENV === 'production' && addWebpackPlugin(
new UglifyJsPlugin({
cache: true,
parallel: true,
uglifyOptions: {
warnings: false,
compress: {
drop_console: true,
drop_debugger: true
}
}
})
),

// 打包分析
process.env.ANALYZER && addWebpackPlugin(new BundleAnalyzerPlugin())
),
}

🐳 Docker部署

Dockerfile配置

# web_server.Dockerfile
FROM nginx:alpine

# 复制构建产物
COPY build/ /usr/share/nginx/html/

# 复制Nginx配置
COPY nginx.conf /etc/nginx/nginx.conf

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

构建和运行

# 构建Docker镜像
docker build -f web_server.Dockerfile -t monitoring-platform:latest .

# 运行容器
docker run -d -p 80:80 monitoring-platform:latest

构建脚本

# 生产环境构建镜像
./build-image-prod.sh

# M1芯片构建镜像
./build-image-m1.sh

# 保存镜像
./save-image.sh

🔐 安全配置

环境变量安全

  • 敏感信息使用环境变量
  • 不要将密钥提交到版本控制
  • 生产环境使用独立配置

代码安全

  • 生产环境移除console
  • 启用代码混淆和压缩
  • 关闭Source Map生成

网络安全

  • 使用HTTPS协议
  • 配置CORS策略
  • 实施CSP策略

📊 性能优化

构建优化

  1. 代码分割 - 路由级别代码分割
  2. Tree Shaking - 移除未使用代码
  3. 压缩 - UglifyJS代码压缩
  4. 缓存 - 构建缓存加速
  5. 并行构建 - 多线程构建

运行时优化

  1. 懒加载 - 组件和路由懒加载
  2. 虚拟列表 - 大列表优化
  3. 防抖节流 - 高频事件优化
  4. Memo优化 - React.memo和useMemo
  5. 图片优化 - 图片懒加载和压缩

Cesium优化

  1. LOD控制 - 细节层次管理
  2. 瓦片缓存 - 地图瓦片缓存
  3. 实体聚合 - 大量实体聚合显示
  4. 视锥剔除 - 视野外对象剔除

🧪 测试

测试命令

# 运行测试
npm test

# 测试覆盖率
npm run test:coverage

测试框架

  • Jest - 测试框架
  • React Testing Library - React组件测试

📚 相关文档

官方文档

技术博客

  • Arco Design Pro最佳实践
  • Cesium 3D可视化开发指南
  • WebRTC实时通信实践

🛠️ 常见问题

1. 依赖安装失败

# 使用legacy-peer-deps
npm install --legacy-peer-deps

# 清理缓存
npm cache clean --force
rm -rf node_modules package-lock.json
npm install --legacy-peer-deps

2. Cesium资源加载失败

  • 检查Cesium资源是否正确复制到build目录
  • 确认CESIUM_BASE_URL配置正确
  • 检查网络请求是否被拦截

3. WebRTC连接失败

  • 检查WebRTC服务地址配置
  • 确认网络连接正常
  • 查看浏览器控制台错误信息
  • 检查HTTPS证书配置

4. 地图不显示

  • 检查地图Token配置
  • 确认地图服务可访问
  • 查看网络请求状态
  • 检查坐标系统配置

5. 构建失败

# 清理构建缓存
rm -rf build node_modules/.cache

# 重新构建
npm run build

📝 更新日志

v1.0.0

  • 初始版本发布
  • 集成Arco Design Pro
  • 实现WebRTC视频监控
  • 集成Cesium 3D地球
  • 实现MQTT通信
  • 完成基础功能开发

👥 开发团队

项目: 可视化智能巡检系统
平台: zn
技术栈: React + Arco Design + Cesium


📄 许可证

项目许可证信息请查看LICENSE文件


📞 联系方式

如有问题或建议,请联系开发团队。


文档版本: v1.0
最后更新: 2025-01-27
文档状态: 正式版

© 2025 Monitoring Platform. 保留所有权利。