diff --git a/doc/设计文档/客户端改造方案v1.0.md b/doc/设计文档/客户端改造方案v1.0.md new file mode 100644 index 0000000..2cf4b7b --- /dev/null +++ b/doc/设计文档/客户端改造方案v1.0.md @@ -0,0 +1,251 @@ +# warehouse 客户端改造方案 v1.0 + +> **版本**: 1.0 +> **日期**: 2025-05-17 +> **现状**: warehouse 大屏客户端使用硬编码 Mock 数据,尚未对接网关 +> **目标**: 所有子系统(视频/IoT/告警/地图)通过 IntegrationGateway 获取真实数据 + +--- + +## 1. 仓库客户端现状分析 + +### 1.1 技术栈 + +| 层面 | 选型 | +|------|------| +| 框架 | Vue 3 + TypeScript + Vite | +| UI | Element Plus | +| 图表 | ECharts | +| 实时通信 | SignalR | +| 3D 地图 | VgoMap SDK | +| HTTP | Axios(`api/http.js`) | +| 状态管理 | Pinia + Vuex | +| API 基址 | `window.apiConfig.baseURL`(默认 `http://localhost:9100`) | + +### 1.2 页面清单与数据现状 + +| 页面 | 文件 | 当前数据源 | 需改造 | +|------|------|------|:---:| +| 3D 地图 | `view/Map.vue` | VgoMap SDK,无设备标记 | ✅ | +| 数据大屏 | `view/DataView.vue` | VolPro API(安全提示等)+ Mock | ✅ | +| 实时视频 | `view/video/Live.vue` | **硬编码 5 个 Mock 摄像头** | ✅ | +| 视频墙 | `view/video/VideoWall.vue` | 需查看 | ❓ | +| 录像回放 | `view/video/History.vue` | 需查看 | ❓ | +| 设备详情 | `view/DeviceInfo.vue` | Props 传入 Mock 数据 | ✅ | +| 环境变量 | `view/environment/EnvVarManagement.vue` | 需查看 | ✅ | +| 紧急报警 | `view/emergency-alarm/EmergencyAlarmRecord.vue` | Mock / VolPro API | ✅ | +| 入侵报警 | `view/intrusion-alarm/AlarmRecord.vue` | Mock | ✅ | +| 门禁 | `view/access/AccessRecord.vue` | Mock | ⏭️ Phase 3 | +| 巡更 | `view/patrol/` | Mock | ⏭️ Phase 3 | +| 钥匙 | `view/key/` | Mock | ⏭️ Phase 3 | +| 车辆 | `view/carmanager/` | Mock | ⏭️ Phase 3 | +| 访客 | `view/visitor/` | Mock | ⏭️ Phase 3 | +| 无人机 | `view/drone/` | Mock | ⏭️ Phase 3 | +| 对讲 | `view/intercom/` | Mock | ⏭️ Phase 3 | + +### 1.3 HTTP 层现状 + +`api/http.js` 封装了 Axios,通过 `window.apiConfig.baseURL` 配置后端地址(默认 `http://localhost:9100`),支持 POST/GET 两种方式,自动附带 JWT Token。网关接口(`:5100`)和 Vol.Pro 接口(`:9100`)同域还是跨域取决于部署架构。 + +--- + +## 2. 数据流改造 + +### 2.1 架构决策:直连网关 vs 经 Vol.Pro 中转 + +| 方案 | 路径 | 优点 | 缺点 | +|------|------|------|------| +| A. 直连网关 | warehouse → GW(:5100) | 延迟低,零额外开发 | 需网关暴露 CORS | +| B. 经 Vol.Pro 中转 | warehouse → VP(:9100) → GW(:5100) | 统一鉴权,网关不外露 | 延迟 +1 跳,需写 Controller | + +**推荐方案 A**:warehouse 客户端与大屏同一网络,网关开 CORS 即可。视频流和实时数据对延迟敏感,不宜多一跳。 + +### 2.2 服务路由总览 + +``` +warehouse 客户端 +├── Vol.Pro API (axios baseURL) → http://localhost:9100 (权限/字典/CRUD) +└── 网关 B 接口 (直接 fetch) → http://localhost:5100 (设备/视频/IoT/告警) +``` + +--- + +## 3. 逐页面改造方案 + +### 3.1 实时视频(Live.vue) + +**现状**:硬编码 5 个 Mock 摄像机,无真实流 + +**改造**: +1. 页面加载时调用网关 `GET /api/gateway/devices?adapter=Owl:main&page=1&size=100` +2. 摄像机列表从 `StandardDevice[]` 映射到 `Camera[]` 接口 +3. 选中摄像机后调用 `GET /api/gateway/streams/{adapterCode}/{sourceId}/live` 获取 WS-FLV 地址 +4. 用 `