[SEN] 实现单路实时监看与播放状态反馈 #26

Closed
opened 2026-08-12 09:54:06 +08:00 by ila · 3 comments
Owner

当前状态:已完成

用户于 2026-08-14 明确验收通过。

基本信息

  • 类型:需求
  • 任务类型:单项目
  • 主项目:Sense
  • 主 agent:Sense agent
  • 所属 Epic:#7
  • 所属 MVP / 版本:#8
  • 阶段:阶段 1(三条独立纵切)

依赖与并行

  • 前置工单:#25
  • 是否允许与前置工单并行:否
  • 原因:实时监看需要 MediaMTX 已能从验证 Profile 稳定提供可访问的媒体输出与状态。

子项目影响

  • 仅影响的子项目 / 交付单元:Sense
  • 是否跨子项目:否
  • 是否修改共享接口或契约:否;唯一事实来源:Sense 项目内部模型、端口和夹具
  • write_paths:
    • Sense/server/app/sense/liveview/
    • Sense/ui/src/api/sense/liveview/
    • Sense/ui/src/views/sense/liveview/
    • Sense/ui/src/components/sense/liveview/
    • Sense/ui/src/router/modules/sense-liveview.js
    • Sense/tests/liveview/
    • Sense/testdata/liveview/
  • 各子项目需要执行的验证:仅 Sense 执行本工单“验证方式”;Brain、Bell 无需启动或验证

协同接口

  • 生产者:不适用
  • 消费者:不适用
  • 契约/共享事实源:不适用;跨端数据只预留 Sense 内部适配器端口,不在本工单冻结共享结构
  • 兼容策略:不适用
  • 被阻塞或需要适配的工单:不适用
  • 集成顺序:不适用

原始需求

  • 来源:用户对话
  • 提出时间:2026-08-12
  • 关键原话或脱敏摘要:先创建三个项目全部独立 MVP 工单,标题带项目英文简称;独立任务不依赖其他项目在线,按 MVP 和真实依赖推进。

要解决什么

Sense 需要让用户从设备列表选择一路视频,切换主/子 Profile 并看到真实加载、空、失败和重连状态;页面不能依赖 Brain 或 Bell。

做什么 / 不做什么

  • 做:
    • 实现设备/Profile 到 MediaMTX 播放会话的 Sense 内部查询与最小访问控制。
    • 实现设备列表和单路实时画面,支持主/子 Profile 选择。
    • 明确加载、无流、认证失败、媒体失败、断线和重连中/成功状态。
    • 优先复用 go-admin-ui 布局、表格、选择器和反馈组件;仅在播放器缺口明确时新增局部组件。
  • 不做:
    • 不实现多画面墙、一次加载全部视频、16 路批量开通、录像回放或 Brain 叠加。
    • 不在 URL/query 参数中传递摄像头凭据或长期访问 token。
    • 不修改底层公共组件全局行为,不创建跨端契约。

已确认方案

  • 后端只发布短生命周期、受权限控制的播放入口/会话信息,不暴露上游摄像头秘密。
  • 前端播放器封装局限于 Sense liveview 目录,视觉和状态反馈沿用现有体系。
  • 设备列表分页;即使未来 128 路也不一次加载全部流。
  • 使用项目内媒体夹具覆盖 UI 状态,实验室真实流单独人工验证。

预计修改文件:

  • Sense/server/app/sense/liveview/
  • Sense/ui/src/api/sense/liveview/
  • Sense/ui/src/views/sense/liveview/
  • Sense/ui/src/components/sense/liveview/
  • Sense/ui/src/router/modules/sense-liveview.js
  • Sense/tests/liveview/
  • Sense/testdata/liveview/

需求变化记录

日期 变化内容 原因 用户确认
2026-08-12 将 Sense 首个纵切按骨架、认证、设备、接入、媒体、监看、区域拆为独立单元工单 支持三个项目并行并按真实内部依赖实施 是

文档影响

  • 不影响长期文档,原因:不适用
  • 更新项目档案或本地开发与验证
  • 更新架构与代码地图
  • 更新业务规则与术语
  • 更新常见修改或故障排查
  • 更新其他 Wiki 页面:实时监看访问路径、播放状态、凭据/token 安全和浏览器兼容边界

交付文档影响

  • 无交付文档影响,原因:不适用
  • 更新已有交付文档,受众与页面:站点管理员/运维人员,单路监看、Profile 切换和故障状态说明
  • 新增交付文档,受众与页面:
  • 需要目标岗位或客户代表验证:是;验证方式:在目标浏览器用实验室流检查加载、主/子码流、断线与重连反馈

验收标准

  • 授权用户可从分页设备列表打开单路实时画面并切换主/子 Profile。
  • 加载、空、失败、断线、重连中和恢复状态清晰,无可见但不可用的失效入口。
  • 页面/API/URL/日志均不暴露摄像头凭据或长期 token,未授权请求被后端拒绝。
  • 复用既有组件;新增播放器组件(若有)风格一致且不改变公共组件全局行为。
  • Brain、Bell 未启动时,使用项目内夹具和实验室流均可独立验收;缺失真机时明确记录。

验证方式

cd Sense\server
go test ./app/sense/liveview/... ./tests/liveview/...
cd ..\ui
pnpm lint
pnpm build

除命令验证外,按验收标准执行 Sense 独立人工检查;Brain、Bell 保持未启动。若所需实验室摄像头或 MediaMTX 二进制不可用,必须明确记录未验证边界,不得用模拟结果冒充真机结果。

风险和回退

风险:浏览器协议兼容、token 泄漏和断线重连资源泄漏。播放访问采用短期授权且禁止 query secret,连接必须可取消。回退:隐藏 liveview 路由/菜单并回退本工单,不影响设备接入和 MediaMTX 管理。

## 当前状态:已完成 用户于 2026-08-14 明确验收通过。 ## 基本信息 - 类型:需求 - 任务类型:单项目 - 主项目:Sense - 主 agent:Sense agent - 所属 Epic:#7 - 所属 MVP / 版本:#8 - 阶段:阶段 1(三条独立纵切) ## 依赖与并行 - 前置工单:#25 - 是否允许与前置工单并行:否 - 原因:实时监看需要 MediaMTX 已能从验证 Profile 稳定提供可访问的媒体输出与状态。 ## 子项目影响 - 仅影响的子项目 / 交付单元:Sense - 是否跨子项目:否 - 是否修改共享接口或契约:否;唯一事实来源:Sense 项目内部模型、端口和夹具 - write_paths: - `Sense/server/app/sense/liveview/` - `Sense/ui/src/api/sense/liveview/` - `Sense/ui/src/views/sense/liveview/` - `Sense/ui/src/components/sense/liveview/` - `Sense/ui/src/router/modules/sense-liveview.js` - `Sense/tests/liveview/` - `Sense/testdata/liveview/` - 各子项目需要执行的验证:仅 Sense 执行本工单“验证方式”;Brain、Bell 无需启动或验证 ## 协同接口 - 生产者:不适用 - 消费者:不适用 - 契约/共享事实源:不适用;跨端数据只预留 Sense 内部适配器端口,不在本工单冻结共享结构 - 兼容策略:不适用 - 被阻塞或需要适配的工单:不适用 - 集成顺序:不适用 ## 原始需求 - 来源:用户对话 - 提出时间:2026-08-12 - 关键原话或脱敏摘要:先创建三个项目全部独立 MVP 工单,标题带项目英文简称;独立任务不依赖其他项目在线,按 MVP 和真实依赖推进。 ## 要解决什么 Sense 需要让用户从设备列表选择一路视频,切换主/子 Profile 并看到真实加载、空、失败和重连状态;页面不能依赖 Brain 或 Bell。 ## 做什么 / 不做什么 - 做: - 实现设备/Profile 到 MediaMTX 播放会话的 Sense 内部查询与最小访问控制。 - 实现设备列表和单路实时画面,支持主/子 Profile 选择。 - 明确加载、无流、认证失败、媒体失败、断线和重连中/成功状态。 - 优先复用 go-admin-ui 布局、表格、选择器和反馈组件;仅在播放器缺口明确时新增局部组件。 - 不做: - 不实现多画面墙、一次加载全部视频、16 路批量开通、录像回放或 Brain 叠加。 - 不在 URL/query 参数中传递摄像头凭据或长期访问 token。 - 不修改底层公共组件全局行为,不创建跨端契约。 ## 已确认方案 - 后端只发布短生命周期、受权限控制的播放入口/会话信息,不暴露上游摄像头秘密。 - 前端播放器封装局限于 Sense liveview 目录,视觉和状态反馈沿用现有体系。 - 设备列表分页;即使未来 128 路也不一次加载全部流。 - 使用项目内媒体夹具覆盖 UI 状态,实验室真实流单独人工验证。 预计修改文件: - `Sense/server/app/sense/liveview/` - `Sense/ui/src/api/sense/liveview/` - `Sense/ui/src/views/sense/liveview/` - `Sense/ui/src/components/sense/liveview/` - `Sense/ui/src/router/modules/sense-liveview.js` - `Sense/tests/liveview/` - `Sense/testdata/liveview/` ## 需求变化记录 | 日期 | 变化内容 | 原因 | 用户确认 | |---|---|---|---| | 2026-08-12 | 将 Sense 首个纵切按骨架、认证、设备、接入、媒体、监看、区域拆为独立单元工单 | 支持三个项目并行并按真实内部依赖实施 | 是 | ## 文档影响 - [ ] 不影响长期文档,原因:不适用 - [x] 更新项目档案或本地开发与验证 - [x] 更新架构与代码地图 - [x] 更新业务规则与术语 - [x] 更新常见修改或故障排查 - [x] 更新其他 Wiki 页面:实时监看访问路径、播放状态、凭据/token 安全和浏览器兼容边界 ## 交付文档影响 - [ ] 无交付文档影响,原因:不适用 - [x] 更新已有交付文档,受众与页面:站点管理员/运维人员,单路监看、Profile 切换和故障状态说明 - [ ] 新增交付文档,受众与页面: - [x] 需要目标岗位或客户代表验证:是;验证方式:在目标浏览器用实验室流检查加载、主/子码流、断线与重连反馈 ## 验收标准 - [ ] 授权用户可从分页设备列表打开单路实时画面并切换主/子 Profile。 - [ ] 加载、空、失败、断线、重连中和恢复状态清晰,无可见但不可用的失效入口。 - [ ] 页面/API/URL/日志均不暴露摄像头凭据或长期 token,未授权请求被后端拒绝。 - [ ] 复用既有组件;新增播放器组件(若有)风格一致且不改变公共组件全局行为。 - [ ] Brain、Bell 未启动时,使用项目内夹具和实验室流均可独立验收;缺失真机时明确记录。 ## 验证方式 ```powershell cd Sense\server go test ./app/sense/liveview/... ./tests/liveview/... cd ..\ui pnpm lint pnpm build ``` 除命令验证外,按验收标准执行 Sense 独立人工检查;Brain、Bell 保持未启动。若所需实验室摄像头或 MediaMTX 二进制不可用,必须明确记录未验证边界,不得用模拟结果冒充真机结果。 ## 风险和回退 风险:浏览器协议兼容、token 泄漏和断线重连资源泄漏。播放访问采用短期授权且禁止 query secret,连接必须可取消。回退:隐藏 liveview 路由/菜单并回退本工单,不影响设备接入和 MediaMTX 管理。
ila added the kind/taskpriority/p0project/sensescope/independent labels 2026-08-12 09:58:30 +08:00
Author
Owner

状态:进行中(2026-08-12)

前置 #25 已完成测试和提交 398534a。新增精确 write_paths:

  • Sense/server/cmd/sense/modules_liveview.go:挂载监看模块。
  • Sense/server/app/sense/media/route_port.go:只投影可播放媒体路径与状态,不暴露源 URI 或摄像机凭据。

播放会话由 Sense 权限控制并短期有效,浏览器只获得 MediaMTX 本地播放路径;不在 query 参数中传摄像机凭据或长期令牌。

## 状态:进行中(2026-08-12) 前置 #25 已完成测试和提交 `398534a`。新增精确 write_paths: - `Sense/server/cmd/sense/modules_liveview.go`:挂载监看模块。 - `Sense/server/app/sense/media/route_port.go`:只投影可播放媒体路径与状态,不暴露源 URI 或摄像机凭据。 播放会话由 Sense 权限控制并短期有效,浏览器只获得 MediaMTX 本地播放路径;不在 query 参数中传摄像机凭据或长期令牌。
ila referenced this issue from a commit 2026-08-12 17:48:54 +08:00
Author
Owner

状态:待验收

  • 实现提交:8509699
  • 汇总文档提交:5177861
  • 最终归档提交:6d90d54(#21 的首次归档提交另为 2c0e37e)
  • 分支:agent/codex/21-sense-mvp
  • Pull Request:#34
  • Wiki 归档:Task-26-Sense单路实时监看
  • Wiki revision:4635d6dbe8be(短哈希)

最终全量验证:Go 1.26.5 vet、全包 race、非缓存测试、build;pnpm 9.15.1 冻结安装、lint、build;Sense 独立 smoke;Harness strict 与 31 项测试;Wiki 镜像一致性;git diff --check,全部通过。前端仅有 vendor bundle 体积建议警告。

未验证部分:未在目标浏览器连接真实 MediaMTX WebRTC 与实验室流。

工单保持 open,等待用户验收;未关闭、未代替用户确认真实环境结果。

## 状态:待验收 - 实现提交:`8509699` - 汇总文档提交:`5177861` - 最终归档提交:`6d90d54`(#21 的首次归档提交另为 `2c0e37e`) - 分支:`agent/codex/21-sense-mvp` - Pull Request:https://git.ilapage.cn/ila/yovision/pulls/34 - Wiki 归档:`Task-26-Sense单路实时监看` - Wiki revision:`4635d6dbe8be`(短哈希) 最终全量验证:Go 1.26.5 vet、全包 race、非缓存测试、build;pnpm 9.15.1 冻结安装、lint、build;Sense 独立 smoke;Harness strict 与 31 项测试;Wiki 镜像一致性;`git diff --check`,全部通过。前端仅有 vendor bundle 体积建议警告。 **未验证部分**:未在目标浏览器连接真实 MediaMTX WebRTC 与实验室流。 工单保持 open,等待用户验收;未关闭、未代替用户确认真实环境结果。
Author
Owner

用户验收通过(2026-08-14)

用户已明确确认当前未验收工单通过验收。本工单的实现、测试与既有证据按记录接受,Wiki 归档状态已更新为“已完成”(revision 95ab4664a1a6)。该交付属于重建前历史实现;Wiki 归档已完成,代码与原归档镜像继续保留在 explore 追溯。

此验收不改变 #58 的架构决定:旧自研基础框架不会恢复为 dev 基线,Sense/Bell 后续仍分别由 #61/#62 从冻结 GoAdmin 源码重建。

## 用户验收通过(2026-08-14) 用户已明确确认当前未验收工单通过验收。本工单的实现、测试与既有证据按记录接受,Wiki 归档状态已更新为“已完成”(revision `95ab4664a1a6`)。该交付属于重建前历史实现;Wiki 归档已完成,代码与原归档镜像继续保留在 `explore` 追溯。 此验收不改变 #58 的架构决定:旧自研基础框架不会恢复为 `dev` 基线,Sense/Bell 后续仍分别由 #61/#62 从冻结 GoAdmin 源码重建。
ila closed this issue 2026-08-14 10:06:46 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ila/yovision#26