Initial_commit_SecMPS_v2

This commit is contained in:
2026-05-15 23:22:48 +08:00
commit 23ea4fe05f
13830 changed files with 298675 additions and 0 deletions

View File

@@ -0,0 +1,314 @@
# Vol.Pro 整合项目实施方案
> **版本**: v1.0
> **日期**: 2026-04-29
> **编制**: 浮浮酱
> **状态**: 待实施
---
## 一、项目概述
本项目包含两个子方案:
1. **视频监控方案**: Vol.Pro + Owl + ZLMediaKit浏览器实时监控、回放、云台控制
2. **采集网关方案**: Vol.Pro + MC4.0(设备管理、实时数据、反向控制、告警)
两个方案共用 **`Base_Device` 统一设备主表**,实现所有设备的集中管理和三维地图标记。
---
## 二、实施前提条件
### 2.1 环境准备(实施前必须完成)
| # | 检查项 | 通过标准 |
|---|--------|----------|
| 1 | Owl + ZLMediaKit 部署 | Docker运行正常Web管理端可访问 |
| 2 | MC4.0 采集网关接入 | 设备已接入MC4.0API可调用 |
| 3 | Vol.Pro 开发环境 | api_sqlsugar/web.vite/warehouse 均可编译运行 |
| 4 | 数据库权限 | 可执行建表SQL代码生成器可用 |
| 5 | 三维地图模型 | VgoMap中已为设备位置放置模型并记录MapModelId |
### 2.2 必须确认的技术点实施Day 1前完成
| # | 确认项 | 确认方式 | 影响 |
|---|--------|----------|------|
| 1 | Owl API完整路径 | 访问Owl Swagger文档 | 所有Owl对接接口 |
| 2 | ZLM播放地址格式 | 调用Owl play接口查看返回URL | 前端播放器配置 |
| 3 | MC4.0 Token机制 | 实测登录接口确认Header和有效期 | MC4.0所有接口 |
| 4 | MC4.0接口频率限制 | 高频调用测试是否限流 | 轮询任务设计 |
---
## 三、实施策略
### 3.1 分阶段实施
```
Phase 1: 视频监控方案15个工作日
├─ 优先实施,技术成熟度更高
├─ 不依赖MC4.0方案
└─ 验证Vol.Pro扩展机制的可行性
Phase 2: 采集网关方案16个工作日
├─ 在视频监控方案完成后实施
├─ 可复用Phase 1积累的Vol.Pro扩展经验
└─ 共用Base_Device主表Phase 1已创建
```
### 3.2 实施顺序
| 顺序 | 方案 | 工期 | 前置依赖 |
|------|------|------|----------|
| 1 | 视频监控方案 | 15天 | 无 |
| 2 | 采集网关方案 | 16天 | 视频监控方案完成复用Base_Device表 |
| **合计** | | **31天** | |
> **可并行优化**:如果人手充足,采集网关方案可在视频监控方案的阶段四/五时并行启动,总工期可缩短至 **20-22天**。
---
## 四、视频监控方案实施计划15天
### Week 1: 基础搭建Day 1-5
#### Day 1: 数据库与代码生成
- [ ] 执行建表SQL创建4张表`Base_Device``Device_Video_Ext``Video_Channel``Video_Record`
- [ ] 使用Vol.Pro代码生成器生成4个模块的CRUD代码
- [ ] 验证生成后的增删改查功能正常
- [ ] **验收点**: 管理端可正常增删改查设备/通道/录像
#### Day 2: Owl对接服务搭建
- [ ] 创建 `Warehouse/Services/Owl/IOwlApiService.cs`
- [ ] 创建 `Warehouse/Services/Owl/OwlApiService.cs`
- [ ] 实现JWT Token获取与缓存内存/Redis
- [ ] **验收点**: 可成功获取Owl Token并缓存
#### Day 3: Owl设备同步
- [ ] 实现设备同步逻辑调用Owl `/devices`
- [ ] 实现通道同步逻辑调用Owl `/channels`
- [ ] 实现数据写入Base_Device + Device_Video_Ext + Video_Channel
- [ ] **验收点**: 执行同步后Vol.Pro数据库中有Owl设备数据
#### Day 4: 取流与回放接口
- [ ] 实现 `GetLiveUrl` 接口调用Owl play
- [ ] 实现 `GetPlaybackUrl` 接口调用Owl recordings
- [ ] 实现 `StopPlay` 接口
- [ ] **验收点**: Postman可调用获取流地址
#### Day 5: 云台与快照接口
- [ ] 实现 `PtzControl` 接口
- [ ] 实现 `GetSnapshot` 接口
- [ ] 创建 `VideoStreamController.cs`
- [ ] **验收点**: Postman可调用云台控制和获取快照
### Week 2: 前端与管理端Day 6-10
#### Day 6: 管理端设备列表扩展
- [ ] 创建 `extension/warehouse/Base_Device.jsx`
- [ ] 添加"同步设备"按钮
- [ ] 添加DeviceCategory=1筛选默认显示视频监控设备
- [ ] 添加"查看通道"操作列
- [ ] **验收点**: 管理端设备列表有同步按钮和通道查看
#### Day 7: 管理端通道列表扩展
- [ ] 创建 `extension/warehouse/Video_Channel.jsx`
- [ ] 添加"实时预览"按钮(弹窗播放)
- [ ] 添加"云台控制"按钮
- [ ] 添加"回放"按钮
- [ ] **验收点**: 管理端通道列表可播放视频
#### Day 8: 播放器集成
- [ ] 引入Jessibuca/mpegts.js播放器组件
- [ ] 创建 `VideoPlayer.vue`(实时播放弹窗)
- [ ] 创建 `VideoPlayback.vue`(回放查询页面)
- [ ] **验收点**: 浏览器可播放实时视频和回放
#### Day 9: warehouse用户端改造 - Live.vue
- [ ] 替换硬编码数据为真实API调用
- [ ] 集成Jessibuca播放器
- [ ] 摄像头列表从Video_Channel API获取
- [ ] **验收点**: warehouse Live.vue可播放实时视频
#### Day 10: warehouse用户端改造 - History.vue + VideoWall.vue
- [ ] 改造History.vue实现回放查询和HLS播放
- [ ] 改造VideoWall.vue图片→真实播放器
- [ ] 对接云台控制API
- [ ] **验收点**: 回放和视频墙功能正常
### Week 3: 联调与优化Day 11-15
#### Day 11-12: 联调测试
- [ ] 设备注册到Owl后同步到Vol.Pro
- [ ] 实时播放测试WebRTC/FLV
- [ ] 回放功能测试
- [ ] 云台控制测试
- [ ] 多路视频墙测试
- [ ] **验收点**: 所有功能端到端可用
#### Day 13: 框架升级测试
- [ ] 重新运行代码生成器
- [ ] 验证所有自定义代码Partial/extension未被覆盖
- [ ] **验收点**: 代码生成器不覆盖自定义代码
#### Day 14-15: 缓冲优化
- [ ] 性能优化(视频墙路数限制、流释放)
- [ ] 安全加固(播放地址代理、权限校验)
- [ ] 文档补充
---
## 五、采集网关方案实施计划16天
### Week 1: 基础搭建Day 1-5
#### Day 1: 数据库与代码生成
- [ ] 执行建表SQL`Device_IoT_Ext``IoT_DevicePoint``IoT_DeviceData``IoT_Alarm`
- [ ] 使用Vol.Pro代码生成器生成CRUD代码
- [ ] **注意**: Base_Device表已在视频监控方案中创建无需重复创建
- [ ] **验收点**: 管理端可正常增删改查
#### Day 2: MC4.0对接服务搭建
- [ ] 创建 `IMc4ApiService.cs` / `Mc4ApiService.cs`
- [ ] 实现Token管理登录/缓存/刷新)
- [ ] 实现请求频率控制SemaphoreSlim每秒最多2次
- [ ] **验收点**: 可成功获取MC4.0 Token
#### Day 3: 对象树与点表同步
- [ ] 实现对象树同步(`/object/tree`
- [ ] 实现点表同步(`/device/point/get`
- [ ] 数据写入Base_Device + Device_IoT_Ext + IoT_DevicePoint
- [ ] **验收点**: 执行同步后Vol.Pro中有MC4.0设备数据
#### Day 4: 实时数据与控制接口
- [ ] 实现 `GetRealtime` 接口调用MC4.0读数据)
- [ ] 实现 `Control` 接口(反向控制)
- [ ] **验收点**: Postman可读取实时数据和控制设备
#### Day 5: 告警接口
- [ ] 实现 `GetAlarms` 接口
- [ ] 实现 `ConfirmAlarm` / `EndAlarm` 接口
- [ ] 创建 `IoTStreamController.cs`
- [ ] **验收点**: Postman可查询和确认告警
### Week 2: 实时推送与管理端Day 6-10
#### Day 6: SignalR Hub搭建
- [ ] 创建 `IoTDataHub.cs`
- [ ] 实现设备分组订阅SubscribeDevice/UnsubscribeDevice
- [ ] 实现告警管理员组订阅SubscribeAlarmAdmin
- [ ] **验收点**: 前端可连接SignalR并订阅设备
#### Day 7: 实时数据轮询Job
- [ ] 创建 `RealtimeDataPollJob.cs`
- [ ] 每5秒轮询MC4.0实时数据
- [ ] **不入库直接SignalR推送给前端**
- [ ] **验收点**: 前端实时收到数据更新
#### Day 8: 告警轮询Job
- [ ] 创建 `AlarmPollJob.cs`
- [ ] 每10秒轮询MC4.0告警
- [ ] 新告警写入IoT_Alarm表
- [ ] 按设备分组SignalR推送
- [ ] **验收点**: 新告警实时推送到前端
#### Day 9: 管理端设备列表扩展
- [ ] 扩展 `Base_Device.jsx`(添加采集设备相关按钮)
- [ ] 添加"同步对象树"按钮仅DeviceCategory=2显示
- [ ] 添加"同步点表"操作列
- [ ] 添加"查看实时数据"按钮
- [ ] **验收点**: 管理端可同步和查看采集设备
#### Day 10: 管理端告警列表扩展
- [ ] 扩展告警列表页
- [ ] 添加"确认"和"结束"操作按钮
- [ ] 告警等级颜色标识(紧急=红色,重要=橙色)
- [ ] **验收点**: 管理端可处理告警
### Week 3: warehouse用户端与联调Day 11-16
#### Day 11-12: warehouse用户端开发
- [ ] 开发实时数据看板(设备列表+实时数值+SignalR接收
- [ ] 开发设备控制面板(开关/滑块/输入框)
- [ ] 开发告警信息面板(实时告警+历史查询)
- [ ] **验收点**: warehouse可查看实时数据和控制设备
#### Day 13-14: 联调测试
- [ ] MC4.0设备接入测试
- [ ] 实时数据读取测试验证SignalR推送不入库
- [ ] 反向控制测试
- [ ] 告警轮询与推送测试10秒轮询+分组推送)
- [ ] 请求频率控制测试每秒不超过2次
- [ ] 多设备并发测试
- [ ] **验收点**: 所有功能端到端可用
#### Day 15: 框架升级测试
- [ ] 重新运行代码生成器
- [ ] 验证自定义代码未被覆盖
- [ ] **验收点**: 代码独立性验证通过
#### Day 16: 缓冲优化
- [ ] 性能优化
- [ ] 文档补充
- [ ] 问题修复
---
## 六、关键里程碑与验收标准
| 里程碑 | 时间 | 验收标准 |
|--------|------|----------|
| M1: 视频监控后端完成 | Day 5 | Owl对接服务所有接口Postman测试通过 |
| M2: 视频监控前端完成 | Day 10 | warehouse Live/History/VideoWall功能可用 |
| M3: 视频监控联调完成 | Day 15 | 所有功能端到端可用,框架升级测试通过 |
| M4: 采集网关后端完成 | Day 5 | MC4.0对接服务所有接口Postman测试通过 |
| M5: 采集网关前端完成 | Day 12 | warehouse实时数据/控制/告警功能可用 |
| M6: 采集网关联调完成 | Day 16 | 所有功能端到端可用,框架升级测试通过 |
---
## 七、风险控制
| 风险 | 影响 | 应对措施 |
|------|------|----------|
| Owl API路径不准确 | 所有取流/云台接口404 | Day 1实测Swagger确认路径 |
| MC4.0 Token快速过期 | 频繁重新登录 | Day 1实测Token有效期设计自动刷新 |
| ZLM WebRTC配置失败 | 无法使用WebRTC | 默认使用WS-FLVWebRTC作为可选优化 |
| MC4.0接口限流 | 轮询任务失败 | SemaphoreSlim频率控制失败时告警 |
| 数据量爆炸 | SQL Server性能下降 | 实时数据不入库仅SignalR推送 |
| 前端播放器兼容性 | 部分浏览器无法播放 | 提供FLV/HLS多协议降级 |
---
## 八、实施检查清单
### 每日检查项
- [ ] 今日代码是否写在独立文件(不修改框架代码)
- [ ] 新服务是否实现IDependency接口
- [ ] Controller是否使用partial或全新文件
- [ ] 前端扩展是否写在extension目录
### 阶段验收检查项
- [ ] 重新运行代码生成器,确认自定义代码未被覆盖
- [ ] 所有API接口Postman测试通过
- [ ] 前端功能在Chrome/Firefox/Edge测试通过
- [ ] 性能测试视频墙最大路数、MC4.0轮询频率)
---
## 九、相关文档索引
| 文档 | 路径 | 说明 |
|------|------|------|
| 视频监控整合方案 | `doc/整合方案/Vol.Pro_Owl_ZLMediaKit_整合方案_v1.0.md` | 详细技术方案 |
| 采集网关整合方案 | `doc/整合方案/Vol.Pro_MC4.0_整合方案_v1.0.md` | 详细技术方案 |
| MC4.0 API文档 | `doc/对接文档/MC4.0对外API.md` | MC4.0接口定义 |
| 联网部署手册 | `owl_zlmediakit/联网部署手册.md` | Owl+ZLM部署指南 |
| 超时排查手册 | `owl_zlmediakit/排查手册-访问超时.md` | 网络问题排查 |
---
> **文档结束**
> **版本**: v1.0
> **最后更新**: 2026-04-29
> **状态**: 待主人确认后实施