# 工业安全生产视觉监测平台——项目信息

## 摘要

本平台由**管理后台**和**边缘计算节点**两部分组成。管理后台基于 **Go 1.23** 开发，部署于 Windows 环境，采用 SQLite 嵌入式数据库，前端使用 Tabler CSS 框架及服务端模板渲染。边缘节点运行于 **RK3588 ARM Linux**，核心分析引擎用 **C++17** 实现，通过 NPU/VPU/RGA 硬件加速进行实时视频 AI 推理；设备管理代理用 **Go 1.21** 开发，负责与管理后台通信。平台总代码量 **109,924 行**，覆盖设备管理、AI 模型部署、人脸识别、劳保用品合规检测、告警联动等完整功能链路。

---

## 一、管理后台（managerd）

### 1. 软件开发环境/开发工具

| 类别 | 详情 |
|------|------|
| 编程语言 | Go 1.23.3 |
| IDE/编辑器 | VS Code / Cursor |
| 构建工具 | Go build + PowerShell 脚本（scripts/managerd.ps1） |
| 版本控制 | Git |
| 开发操作系统 | Windows 11 |

### 2. 软件运行支撑环境/支持软件

| 类别 | 详情 |
|------|------|
| 运行时 | Go 编译为单一可执行文件（managerd.exe），无需额外运行时 |
| 操作系统 | Windows（服务端） |
| 数据库 | SQLite（嵌入式数据库，modernc.org/sqlite 纯 Go 驱动） |
| Web 框架 | go-chi/chi v5.2.3（HTTP 路由） |
| 前端框架 | Tabler CSS + 原生 JavaScript（服务端模板渲染） |
| 浏览器 | Chrome / Edge / Firefox 等现代浏览器 |
| 依赖库 | chi（路由）、cors（跨域）、uuid（标识生成） |

### 3. 编程语言

**Go**（版本 1.23.3）

### 4. 代码行数

| 类型 | 文件数 | 总行数 |
|------|--------|--------|
| Go 源码 | 59 个 | 23,500 行 |
| 前端模板（HTML/CSS） | 62 个 | 6,675 行 |
| JSON 配置文件 | 19 个 | — |
| 核心文件 `internal/web/ui.go` | 1 个 | 4,861 行 |

### 5. 软件架构

```
cmd/managerd/main.go     —— 组装入口，手动依赖注入
internal/api/            —— HTTP API 处理器（chi router）
internal/web/            —— Web UI 处理器 + 嵌入式前端模板
internal/service/        —— 业务逻辑层
internal/storage/        —— SQLite 数据持久层
internal/config/         —— JSON 配置文件加载
internal/models/         —— 核心领域模型
templates/               —— 本地 JSON 模板文件
```

### 6. 主要模块

| 模块 | 说明 |
|------|------|
| 仪表盘 | 设备统计、在线率、告警概览、异常设备、最近任务 |
| 管控台 | 设备能力矩阵、视频源分配、通道管理 |
| 设备管理 | 局域网设备发现、注册、在线监控、批量操作 |
| 设备控制 | 配置预览、应用下发、服务控制、模型上传 |
| 告警中心 | 告警采集、分页查询、规则中文翻译 |
| 人脸库 | 人员注册、照片管理、人脸库构建与下发 |
| 视频监控 | 多路视频推流代理（HLS/RTSP） |
| 任务中心 | 批量任务创建、执行、状态追踪 |
| 配置中心 | 模板/场景/视频源/第三方服务/调试参数管理 |
| 模型管理 | AI 模型概览与设备同步 |
| 场景管理 | 场景配置编辑、视频通道、通道部署 |
| 系统设置 | 数据备份恢复、服务状态、日志审计 |

---

## 二、边缘计算节点（RK3588）

### 1. 软件开发环境/开发工具

| 类别 | 详情 |
|------|------|
| 编程语言 | C++17（媒体分析引擎）、Go 1.21（设备代理） |
| 构建系统 | CMake 3.20+（C++）、Go build（Agent） |
| 交叉编译 | Ubuntu 22.04 ARM64 工具链，aarch64-linux-gnu-g++ |
| IDE/编辑器 | VS Code |
| 版本控制 | Git |
| 开发/运行平台 | Orange Pi 5 Plus（RK3588）、Ubuntu 22.04 |

### 2. 软件运行支撑环境/支持软件

| 类别 | 详情 |
|------|------|
| 操作系统 | Ubuntu 22.04（ARM64） |
| 硬件平台 | 瑞芯微 RK3588（8 核 CPU + 6 TOPS NPU + VPU + RGA） |
| AI 推理框架 | RKNN Toolkit 2（Rockchip 官方 NPU 推理框架） |
| 硬件加速 | MPP（Media Process Platform，硬编解码）、RGA（图像缩放/颜色转换） |
| 视频协议 | RTSP 输入、RTSP/HLS 输出 |
| 流媒体 | FFmpeg（软件编解码备选） |
| 存储 | MinIO（对象存储，抓拍与录像片段） |
| 编译依赖 | CMake、GCC/G++（ARM64 交叉编译或本地编译） |
| 进程管理 | systemd（media-server.service、rk3588-agent.service） |

### 3. 编程语言

- **C++17**（媒体分析引擎，核心 AI 推理管线）
- **Go 1.21**（设备管理代理 rk3588-agent）
- **Python**（模型训练、数据预处理、模型转换工具）

### 4. 代码行数

| 组件 | 语言 | 文件数 | 行数 |
|------|------|--------|------|
| 媒体分析引擎 | C++17 | 200+ | 61,531 行 |
| 设备管理代理 | Go 1.21 | 41 个 | 7,251 行 |
| 工具脚本 | Python | 51 个 | 10,967 行 |
| **合计** | | **300+** | **79,749 行** |

### 5. 软件架构

```
agent/                   —— Go 设备代理：HTTP API、进程管理、度量采集
  internal/
    httpapi/             —— REST API 服务（端口 9100）
    mediaserver/         —— 媒体服务管理（启动/停止/状态）
    metrics/             —— CPU/NPU/内存/磁盘指标采集
    modelstore/          —— AI 模型文件管理
    procctl/             —— 进程控制
    tasks/               —— 任务执行
src/                     —— C++ 媒体分析引擎
plugins/                 —— AI 分析插件（人脸检测/识别、人员检测/跟踪、工鞋检测等）
  ai_scrfd_sliding/      —— 滑窗人脸检测
  ai_face_recog/         —— 人脸识别
  ai_yolo/               —— YOLO 目标检测
  ai_shoe_det/           —— 劳保鞋检测
  tracker/               —— ByteTrack 多目标跟踪
  logic_gate/            —— 业务规则（人鞋关联、颜色判定）
  alarm/                 —— 告警上报
  osd/                   —— 画面叠加
  publish/               —— 视频推流
```

### 6. AI 分析管线

| 管线 | 说明 |
|------|------|
| 人脸识别 | RTSP 输入 → 预处理 → SCRFD 滑窗人脸检测 → MobileFaceNet 人脸识别 → OSD → HLS/RTSP 输出 |
| 劳保鞋检测 | RTSP 输入 → YOLO 人员检测 → ByteTrack 跟踪 → 动态 ROI 鞋检测 → 人鞋关联 → 颜色判定 → 告警 |
| 全功能车间 | 人脸检测 + 人脸识别 + 人员检测 + 跟踪 + 劳保鞋合规 + OSD + 视频发布 + 告警上报 + 抓拍存证 |

---

## 三、系统总览

| 项目 | 管理后台 | 边缘节点 | 合计 |
|------|----------|----------|------|
| 语言 | Go | C++17 + Go + Python | 3 种 |
| 代码行数 | 30,175 行 | 79,749 行 | **109,924 行** |
| 文件数 | 140 个 | 300+ 个 | **440+ 个** |
| 运行平台 | Windows | Ubuntu ARM64 | — |
| 数据库 | SQLite | — | SQLite |
