safesight-control/docs/project_info.md

163 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 工业安全生产视觉监测平台——项目信息
## 摘要
本平台由**管理后台**和**边缘计算节点**两部分组成。管理后台基于 **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.3HTTP 路由) |
| 前端框架 | 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 buildAgent |
| 交叉编译 | Ubuntu 22.04 ARM64 工具链aarch64-linux-gnu-g++ |
| IDE/编辑器 | VS Code |
| 版本控制 | Git |
| 开发/运行平台 | Orange Pi 5 PlusRK3588、Ubuntu 22.04 |
### 2. 软件运行支撑环境/支持软件
| 类别 | 详情 |
|------|------|
| 操作系统 | Ubuntu 22.04ARM64 |
| 硬件平台 | 瑞芯微 RK35888 核 CPU + 6 TOPS NPU + VPU + RGA |
| AI 推理框架 | RKNN Toolkit 2Rockchip 官方 NPU 推理框架) |
| 硬件加速 | MPPMedia Process Platform硬编解码、RGA图像缩放/颜色转换) |
| 视频协议 | RTSP 输入、RTSP/HLS 输出 |
| 流媒体 | FFmpeg软件编解码备选 |
| 存储 | MinIO对象存储抓拍与录像片段 |
| 编译依赖 | CMake、GCC/G++ARM64 交叉编译或本地编译) |
| 进程管理 | systemdmedia-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 |