From bec241be15629aabf80f7d7e58592f25b242408d Mon Sep 17 00:00:00 2001 From: g82tt Date: Sun, 17 May 2026 15:28:43 +0800 Subject: [PATCH] =?UTF-8?q?warehouse=E5=AE=A2=E6=88=B7=E7=AB=AF=E6=94=B9?= =?UTF-8?q?=E9=80=A0=E4=BB=BB=E5=8A=A1=E6=B8=85=E5=8D=95=20W0-W7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/设计文档/客户端改造方案_任务清单.md | 218 ++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 doc/设计文档/客户端改造方案_任务清单.md diff --git a/doc/设计文档/客户端改造方案_任务清单.md b/doc/设计文档/客户端改造方案_任务清单.md new file mode 100644 index 0000000..b0131e9 --- /dev/null +++ b/doc/设计文档/客户端改造方案_任务清单.md @@ -0,0 +1,218 @@ +# warehouse 客户端改造 — 任务清单 + +> **基准文档**: 客户端改造方案 v1.0 +> **分支**: gateway-dev +> **原则**: 改动仅在 warehouse/ 目录下,不影响 VolPro 管理端 + +--- + +## Phase W0: 基础设施(预计 0.5h) + +### W0.1 网关 API 封装 +- [ ] 创建 `warehouse/src/api/gateway.ts` + - 实现 `gwGet(url)` — GET 请求网关 + - 实现 `gwPost(url, body)` — POST 请求网关 + - 网关基址常量 `GW_BASE = 'http://localhost:5100'` + +### W0.2 设备数据模型 +- [ ] 在 `warehouse/src/api/gateway.ts` 中定义 TypeScript 接口: + - `Camera { id, name, location, status, adapterCode, streamUrl, hasPtz }` + - `StandardDevice { deviceId, adapterCode, sourceId, deviceName, deviceCategory, deviceGroup, isOnline, ... }` + - `StreamUrls { wsFlv, httpFlv, hls, ... }` + +### W0.3 网关 CORS 确认 +- [ ] 确认网关 `Program.cs` 中已启用 CORS(`AllowAnyOrigin` 或 `AllowCredentials`) +- [ ] 如未启用,在网关 `Program.cs` 中加 `builder.Services.AddCors()` + `app.UseCors()` + +### W0.4 构建验证 +- [ ] `npm run dev` 启动 warehouse,确认无编译错误 + +> **W0 提交点**: `PhaseW0_infra — gateway.ts + 数据模型 + CORS 就绪` + +--- + +## Phase W1: 实时视频页改造(预计 2h) + +### W1.1 获取真实摄像机列表 +- [ ] 编辑 `warehouse/src/view/video/Live.vue` +- [ ] `onMounted` 中调用 `gwGet('/api/gateway/devices?adapter=Owl:main&page=1&size=100')` +- [ ] 将 `StandardDevice[]` 映射到 `Camera[]` +- [ ] 替换硬编码的 5 台 Mock 摄像机 +- [ ] 保留在线/离线统计计算逻辑 + +### W1.2 视频流播放 +- [ ] 选中摄像机时调用 `gwGet('/api/gateway/streams/{adapterCode}/{sourceId}/live')` +- [ ] 获取 WS-FLV 地址后赋值给 `