Files
SecMPS/doc/整合方案/SecMPS_整合项目实施手册_v3.0.md

211 lines
6.5 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.
# SecMPS 整合项目实施手册
> **版本**: v3.0
> **日期**: 2026-05-16
> **基于**: SecMPS_最终整合方案_v3.0.md
> **工期**: 18-20 个工作日
> **开发模式**: 单人 + AgentSquash Merge 主线策略
---
## 网关代码兼容性评估
> 基于 v3.0 方案对 Phase 0 已生成的 gateway/ 代码进行评估
| 组件 | 状态 | 说明 |
|------|:---:|------|
| Core/Abstractions (7接口) | ✅ 可用 | 与 v3.0 完全兼容 |
| Core/Models (10模型) | ✅ 可用 | 与 v3.0 完全兼容 |
| Core/Infrastructure (AdapterRegistry/TokenManager/RateLimiter) | ✅ 可用 | 无变更 |
| Host/Program.cs | ⚠️ 需微调 | 增加 HttpClient 注册 |
| Host/HealthController | ✅ 可用 | B1 接口无变更 |
| Host/DevicesController | ✅ 可用 | B2 接口无变更 |
| Host/PointsController | ✅ 可用 | B4/B5 接口无变更 |
| Host/AlarmsController | ✅ 可用 | B8/B9 接口无变更 |
| Host/SyncController | ✅ 可用 | B3 接口无变更 |
| Host/StreamsController | ⚠️ 需增加 | 缺少 B6b playback 端点 |
| Host/RegisterController | ❌ 缺失 | 需新建 A1/A2 接口 |
| appsettings.json | ❌ 需重写 | 需改为 v3.0 格式 |
| IGatewayClient (调用Vol.Pro) | ❌ 缺失 | 需新建 |
### 结论
**现有代码 70% 可用**,需 5 处改动:
1. 重写 `appsettings.json`(删除适配器硬编码,改为 VolProUrl/NodeCode/NodeToken
2. 新增 `RegisterController.cs`A1 注册 + A2 心跳)
3. `StreamsController.cs` 增加 B6b playback 端点
4. `Program.cs` 增加 `HttpClient` 注册 + 网关启动时调 Vol.Pro 注册
5. 新增 `GatewayClient.cs`(网关调用 Vol.Pro API 的 HTTP 封装)
预计改动量:约 200 行新增代码,不改动现有接口和模型。
---
## 分支管理策略
```
master ──────────────────────────────────────────────→ v3.0.0
│ ┌─ squash ─┐ ┌─ squash ─┐ ┌─ squash ─┐
├── phase/0 ├── phase/1 ├── phase/2 ├── ...
└── infrastructure └── owl-video └── mc4-iot └──
```
### 每个 Phase 标准流程
```bash
git checkout master
git checkout -b phase/{n}-{name}
# 开发 + 提交
git checkout master && git merge --squash phase/{n}-{name}
git commit -m "Phase {n}: {标题}" && git push && git tag phase-{n}-done
```
---
## 前置检查清单Day 0
| # | 检查项 | 验证方式 | 阻塞 |
|---|--------|----------|------|
| 1 | Owl+ZLM 部署运行 | 浏览器 http://owl_ip:15123 | Phase 1 |
| 2 | 至少1台 GB28181 设备注册到 Owl | Owl /devices 有数据 | Phase 1 |
| 3 | MC4.0 网关可访问 | curl :3000 /api/central/auth/conf/get | Phase 2 |
| 4 | MC4.0 有设备接入 | 对象树有 type=2 节点 | Phase 2 |
| 5 | 代码生成器可用 | 新建测试表→生成→确认 | Phase 0 |
| 6 | MySQL 建表权限 | 执行 CREATE TABLE | Phase 0 |
| 7 | Node.js >= 20.19 | node -v | Phase 3 |
---
## Phase 0基础设施Day 1-2
### Day 1 — 网关代码修正 + 数据库
**任务 1.1**: 修正 gateway/ 代码5 处改动,约 200 行)
1. 重写 `appsettings.json`:
```json
{
"VolProBaseUrl": "http://localhost:9100",
"NodeCode": "gw-31ku",
"NodeToken": "xxxxxxxxxx",
"Urls": "http://*:5100"
}
```
2. 新增 `RegisterController.cs`:
- `POST /api/gateway/register` — 网关启动注册Upsert 数据库)
- `POST /api/gateway/heartbeat` — 网关每 15s 心跳
3. `StreamsController.cs` 增加:
- `GET {adapter}/{channelId}/playback?start=&end=` — 回放取流
4. `Program.cs` 增加:
```csharp
builder.Services.AddHttpClient("VolPro", c => {
c.BaseAddress = new Uri(builder.Configuration["VolProBaseUrl"]);
});
// 启动后自动注册
var registry = app.Services.GetRequiredService<AdapterRegistry>();
var http = app.Services.GetRequiredService<IHttpClientFactory>();
await RegisterWithVolPro(registry, http, app.Configuration);
```
5. 新增 `GatewayClient.cs`:
网关调用 Vol.Pro API 的封装类(注册/心跳/同步设备/同步告警)
验证: `dotnet build` 零错误 + Gateway `/health` 200
**任务 1.2**: 执行 db_init.sql6张表。验证: 唯一索引存在。
**任务 1.3**: Vol.Pro 侧 GatewayClient 实现 + `GatewayNodeController.cs`A1/A2/A3/A4 服务端)。验证: 可成功注册并心跳。
### Day 2 — 代码生成 + 字典初始化
**任务 2.1**: 代码生成器跑 6 张表。
**任务 2.2**: `DeviceManagerController.cs` (Partial/)。
**任务 2.3**: 字典初始化8个
**任务 2.4**: `SyncDevicesJob` + 心跳超时检测 Job。
### 合并
```bash
git add -A && git commit -m "Phase 0 完成"
git checkout master && git merge --squash phase/0-infrastructure
git commit -m "Phase 0: 网关修正 + 6张表 + 代码生成 + 字典"
git push && git tag phase-0-done
```
---
## Phase 1Owl 适配器 + 视频设备页Day 3-6
Owl 端口: **15123**(非 80。PTZ 仅方向键continuous+stop不支持预设位。
### Day 3 — OwlAdapter
创建 Adapters.Owl实现 IHasFlatDevices+IHasStreams+IAcceptsMetadataPush。Token: GET /login/key → RSA → POST /login。
### Day 4 — 管理端设备页面框架
DeviceManager/index.vue + RegionTree.vue + DeviceTable.vue。
### Day 5 — 视频操作 + Jessibuca
VideoDeviceActions.vue + 播放弹窗 + 方向键云台面板。
### Day 6 — 联调 + [可选]AI事件接入
---
## Phase 2MC4.0 + IoTDay 7-11
同上 v2.1 手册,增加 MC4.0 skip/limit 分页转换。
---
## Phase 3warehouse 联调Day 12-17
## Phase 4验证发布Day 18-20
同上 v2.1 手册,发布标签 v3.0.0。
---
## 附录 A每日检查清单
```
□ 新增 C# 服务实现 IDependency
□ Controller 在 Partial/ 目录
□ 前端在 extension/ 目录
□ 未修改自动生成文件
□ 网关同步走字段分治
□ parentSourceId 已映射
□ 实时数据未写 IoT_DeviceData
□ dotnet build 零错误
```
## 附录 B端口分配
| 服务 | 端口 |
|------|------|
| IntegrationGateway | 5100 |
| VolPro.WebApi | 9100 |
| web.vite | 9000 |
| warehouse | 9200 |
| Owl 管理端 | **15123** |
| MC4.0 | 3000 |
## 附录 C里程碑
| 标签 | 指向 |
|------|------|
| `phase-0-done` | 网关修正 + 6张表 + 字典 |
| `phase-1-done` | OwlAdapter + 视频页 |
| `phase-2-done` | Mc4Adapter + IoT + SignalR |
| `phase-3-done` | warehouse + 联调 |
| `phase-4-done` | 验证 + 文档 |
| `v3.0.0` | 正式发布 |
---
> 取代: SecMPS_整合项目实施手册_v2.1.md