3588AdminBackend/docs/产品化评估与规划.md

258 lines
12 KiB
Markdown
Raw Permalink 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.

# 产品化评估与后续规划
> 评估日期2026-05-06
> 范围视觉识别服务OrangePi3588Media+ 管理后台3588AdminBackend
---
## 零、第一性原理:这个产品到底该做什么
### 核心定义
**边缘视频分析平台**——RK3588 盒子接摄像头,本地 AI 识别(人脸、安全帽、工鞋、行为),通过网络输出结果。
### 目标用户
- **运维人员**:管盒子、配摄像头、看告警、维护人脸库
- **管理者**:看统计、看趋势、做决策
### 核心价值链条
```
摄像头画面 → AI 识别 → 结果呈现 → 异常告警 → 人员处置
```
用户真正要做的事就五件:**看画面 → 收告警 → 查记录 → 管人员 → 配设备**
### 管理界面五模块
| 模块 | 用户任务 | 当前状态 |
|------|---------|--------|
| **视频监控** | 实时看画面、回放告警片段 | ❌ 完全没有 |
| **告警中心** | 查看告警、处理告警、统计趋势 | ❌ 完全没有 |
| **人脸库** | 增删改人员、上传照片、导入导出 | ❌ 只能整文件替换 |
| **设备管理** | 设备列表、配置下发、模型/资源同步 | ✅ 基本完成 |
| **系统设置** | 备份恢复、服务状态 | ✅ 基本完成 |
### 设计哲学:从"工程师界面"到"管理员界面"
当前后台是**技术视角**——直接暴露了模板、Profile、识别单元、设备分配等底层概念强迫用户理解系统内部构造才能使用。
但管理员根本不需要知道这些。他只需要回答三个问题:
> 1. **系统在正常运行吗?**——看画面、看设备状态
> 2. **检测到什么了吗?**——看告警、看统计
> 3. **告警对不对?**——验证告警结果
所以产品应该是三层结构:
| 层级 | 面向 | 内容 |
|------|------|------|
| **监控层**(首页) | 所有人 | 实时画面、告警信息流、设备状态——看一眼就知道系统正常不正常 |
| **配置层**(场景化) | 运维人员 | ☑ 抽烟检测 ☑ 安全帽检测 → 选设备 → 一键启用——不暴露技术细节 |
| **专家层**(高级设置) | 高级用户 | 模板编辑、Profile参数、模型选择——现有功能保留但折叠隐藏 |
管理员的典型工作流:
```
新盒子到货 → 上电自动发现 → 在后台勾选检测场景 → 自动渲染配置下发 → 告警开始推送
↑ ↓
└──────── 如果告警不对,打开专家设置微调 ──────────┘
```
技术细节(模板/Profile/Overlay/模型绑定)全部在后台自动完成,管理员只关心结果。
### 核心问题
**系统能"配"不能"看"**——配置下发做得很扎实,但管理人员看不到画面、看不到告警、看不到识别结果。就像一个监控室只有控制台没有显示器。
最紧迫的不是优化流程、加权限、做向导,而是先把"看"的能力补上。
---
## 一、整体架构评价
两个项目的架构基础扎实:
- **media-server**:插件化 DAG 流水线JSON 配置驱动,热更新/回滚,硬件解耦抽象清晰
- **managerd**分层架构API→Service→StorageRESTfulHTML/template 服务端渲染,无框架依赖
从产品化角度看,两边都有显著缺口,下面按优先级列出。
---
## 二、视觉识别服务media-server
### ✅ 优势
| 方面 | 现状 |
|------|------|
| 架构设计 | 插件+DAG 流水线热更新、回滚、ABI 校验都有 |
| 性能目标 | 8路1080p实时分析、延迟<500ms文档明确 |
| 算法能力 | YOLO检测人脸检测/识别PPE工鞋行为事件覆盖主流场景 |
| 输出能力 | RTSP/HLS推流MinIO存储HTTP回调报警外部API对接 |
| 硬件适配 | NPU推理+MPP编解码+RGA图像处理充分利用RK3588 |
### ❌ 需要补的
| 缺口 | 严重程度 | 说明 |
|------|---------|------|
| Agent 和管理后端协议不统一 | | `/v1/info`、`/v1/models/status`、`/v1/resources/status`、`/v1/face-gallery` 等端点是逐步增加的没有完整 API 文档或版本号协商机制 |
| Agent 配置需要手动填写 | | `deploy.sh` 模板文件名容易出错如缺少 std_ 前缀回退到交互式选择旧配置文件 |
| 人脸库上传靠文件拷贝 | | `/v1/face-gallery` 整体 PUT没有单个人物增删改没有人物照片上传接口 |
| 告警无统一管理 | | 告警配置嵌在 config JSON 规则修改需手动编辑 JSON |
| 日志无结构化 | | spdlog 纯文本无结构化字段检索困难 |
| 监控指标无持久化 | | agent 提供 `/v1/metrics` 但后端无收集和图表展示 |
| 配置变更无历史 | | `last_good.json` 回滚无变更历史记录 |
---
## 三、管理后台managerd
### ✅ 优势
| 方面 | 现状 |
|------|------|
| 设备管理 | UDP 发现 + DB持久化 + 定时刷新 + 离线设备显示 |
| 配置管理 | 模板+Profile+Overlay 三层配置渲染支持预览和下发 |
| 模型/资源管理 | 标准目录 设备状态矩阵比对SHA256一致性校验 |
| 任务系统 | 批量执行 + SSE 实时推送 + 审计记录 |
### ❌ 需要补的
| 缺口 | 严重程度 | 说明 |
|------|---------|------|
| **仪表盘是摆设** | **极高** | 只汇总设备数量/在线/任务统计无实时告警 NPU 使用率无识别结果概览作为产品首页太空了 |
| **场景配置太复杂** | **高** | 模板Profile识别单元设备分配 四层概念无向导式配置流程用户学习成本高 |
| **告警管理缺失** | **高** | 后台看不到设备告警记录告警截图告警趋势 |
| **实时预览缺失** | **高** | 不能从管理后台直接查看摄像头画面 |
| **人脸库管理不完整** | **高** | 只能整文件上传 .db不能增删改单个人物查看人物列表上传单张人脸照片 |
| **日志检索薄弱** | | 只提供设备日志入口无关键词搜索时间范围过滤导出 |
| **批量操作不完善** | | 无批量升级 agent 二进制批量重启 media-server |
| **用户权限缺失** | | 无登录无多用户无操作权限控制 |
| **配置导出/导入** | | 无设备配置导出批量导入 |
| **国际化** | | 全部硬编码中文出海需 i18n |
---
## 四、两个项目之间的协同问题
| 问题 | 说明 |
|------|------|
| 配置下发后无验证 | 后端推送配置 HTTP 200 但无法确认 media-server 热更新是否实际成功 |
| 设备重连后状态不一致 | 设备重启后 agent 不主动同步状态需等后台 30 秒定时发现 |
| 人脸库版本漫游 | 设备上 cam1~cam5 各有一份 face_gallery.db版本对齐全靠人工 |
| 模型版本管理弱 | 只比对 SHA256不知道模型精度/性能差异无效果评估 |
---
## 五、优先级规划
### P0必须做——把"看"的能力补上)
1. **视频监控**
- 从管理后台直接查看摄像头实时画面RTSP/HLS 转发
- 告警片段回放关联告警记录 + 录像片段
2. **告警中心**
- 实时告警推送设备 agent 后端 页面 SSE
- 告警记录列表时间设备规则截图视频片段链接
- 告警统计趋势按天/按规则/按设备数量变化
3. **人脸库管理**
- 人物列表查看姓名照片注册时间
- 新增/编辑/删除人物
- 上传单张人脸照片 + 自动提取特征向量
- 增量同步到设备而不是整文件替换
4. **Dashboard 实时化**
- 把视频监控 + 告警信息流 + 设备状态整合到首页
### P1提升易用性
4. **场景配置向导**
- 逐步引导选模板 填参数 选视频源 选设备 预览 下发
- 取代当前四层概念模板/Profile/识别单元/设备分配
5. **Agent 主动注册**
- agent 启动时向管理后端发心跳
- 设备上电即可被纳管无需等待 UDP 发现
6. **配置模板渲染自动化**
- deploy.sh 默认使用模板渲染不交互选择
- 模板文件名修正`std_` 前缀
### P2提升健壮性
7. **用户认证和权限** 登录 + 角色 + 操作日志
8. **告警规则 UI 管理** 在后台页面上创建/编辑告警规则
9. **日志结构化 + 检索** agent 输出 JSON 格式日志后端提供全文检索
---
## 五.五、检测场景扩展规划
### 当前已有检测能力
| 场景 | 实现方式 | 状态 |
|------|---------|------|
| 安全帽/工鞋/工服 | YOLOv8 PPE 检测 | 已部署 |
| 人脸检测 + 识别 | SCRFD + ArcFace | 已部署 |
| 通用目标检测 | YOLOv8n COCO | 已部署 |
| 区域入侵 | region_event 行为节点 | 已实现 |
| 摔倒/打架 | action_recog 行为节点 | 已实现 |
### 需要新增的检测场景
| 场景 | 实现思路 | AI 依赖 | 管理界面需求 | 优先级 |
|------|---------|---------|-------------|--------|
| **抽烟检测** | 训练抽烟行为分类模型 YOLO 检测烟头+手部 | 需新模型 | 告警规则灵敏度时间段区域 | P0 |
| **睡岗检测** | 姿态估计 + 静止时长判断或检测人体趴卧姿势 | 需新模型或复用 pose | 告警规则静止时长阈值豁免区域 | P0 |
| **打电话检测** | 检测手部靠近耳侧 + 手机目标 | 需新模型 | 同抽烟检测 | P1 |
| **明火/烟雾检测** | YOLO 火灾检测模型 | 需新模型 | 告警规则灵敏度 | P1 |
| **离岗检测** | 检测区域无人 + 超时告警 | 复用现有检测 | 告警规则岗位区域超时时长 | P1 |
| **通道堵塞** | 检测通道区域内目标数量和停留时间 | 复用现有检测 | 告警规则通道区域堵塞阈值 | P2 |
| **反光衣检测** | 高可见度服装分类模型 | 需新模型 | PPE 检测 | P2 |
| **车辆违停** | 车辆检测 + 停留超时 | 需车辆检测模型 | 告警规则禁停区域停留时长 | P2 |
### 实现架构
所有新场景统一走现有插件架构不增加新的系统复杂度
```
摄像头 → 预处理 → AI检测节点 → 结果后处理 → 行为判定节点 → 告警
OSD叠加 → 推流/录像
```
- **新增 AI 模型**编译为 `.rknn`通过模型管理页面上传到设备
- **新增插件**如果现有 `ai_yolo` / `ai_face_det` 无法覆盖实现新插入 `ai_smoking`
- **管理界面**在告警中心增加新规则类型在识别场景配置中增加场景选择
### 管理界面的场景化演进
当前配置是"技术视角"模板Profile实例设备分配最终演进为"业务视角"
```
场景选择:☑ 安全帽检测 ☑ 抽烟检测 ☐ 睡岗检测 ☑ 人脸识别
区域设定标定摄像头监控区域ROI
规则配置:灵敏度 / 时间段 / 告警动作
一键下发:选择设备 → 渲染配置 → 下发
```
---
## 六、技术债务清单(后续清理)
| 项目 | 说明 |
|------|------|
| `cmd/managerd` 目录名歧义 | 既是源码目录又被 gitignore 匹配为二进制 |
| 模板函数分散 | `modelTypeLabel`、`resourceTypeLabel` 等散落在 NewUI 应集中管理 |
| agent 配置示例过时 | `agent.config.example.json` 路径与生产环境不一致 |
| deploy.sh 交互选择 | 应支持完全无交互部署CI/CD 友好 |
| 测试覆盖率不均匀 | web 包测试 193KB但主要是模板渲染测试缺少 service 层集成测试 |