docs: create task #51 archive

ila
2026-08-13 12:39:34 +08:00
parent caa6704ed8
commit f8e1d4741d
@@ -0,0 +1,60 @@
# 51 接入成功后自动建立媒体路由并进入实时监看
- 类型:功能
- 所属 Epic:#7
- 所属 MVP / 版本:#8
- 状态:待验收
- 日期:2026-08-13
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/51
- Wiki 页面:Task-51-接入成功后自动建立媒体路由并进入实时监看
- Wiki revision:见本地镜像头
## 背景与目标
摄像机已经能够完成 ONVIF/RTSP 接入并持久化 Profile,但用户仍需手工到视频服务创建路径,实时监看显示的也是内部 ID。目标是接入成功后自动建立路径,并用设备名称、位置和码流用途供非技术用户选择。
## 最终方案
- Admission 在至少一个 Profile 验证成功后调用窄媒体端口,对每个 ready Profile 按 Device/Profile 幂等配置并立即对账。
- 自动媒体结果持久化到接入记录。MediaMTX 不可用时不回滚设备接入,返回需要处理的业务提示。
- Media 使用独立 RTSP 凭据;进程或控制接口错误只向界面返回安全业务说明,不暴露底层路径和错误。
- 实时监看 API 投影设备名称、位置、Profile 名称和主/子码流用途,内部 ID 仅用于关联。
- 接入页显示媒体自动配置结果;实时监看空状态引导用户先完成视频接入,再到视频服务排错。
## 修改文件
- `Sense/server/app/sense/admission/**`:媒体结果、回调端口、持久化和迁移。
- `Sense/server/app/sense/media/**`:批量幂等配置、自动对账与安全降级。
- `Sense/server/app/sense/device/credential_port.go`:只读业务展示投影。
- `Sense/server/app/sense/liveview/**`:业务标签投影。
- `Sense/ui/src/views/sense/{admission,liveview}/`:自动配置结果与业务化选择。
- Wiki 架构、业务规则和排错页面。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| ready Profile 自动建立媒体路径 | 通过,真实设备 2 个 ready Profile 自动生成 2 条路径 |
| 重复接入不产生重复路径 | 通过,单元测试验证按 Device/Profile 幂等 |
| MediaMTX 不可用不回滚接入 | 通过,接入为 ready,媒体状态为 needs_attention |
| 实时监看使用业务标签 | 通过,真实 API 返回设备名称且所有路径有 Profile 用途 |
| 不泄露凭据、源 URI 或底层进程错误 | 通过 |
## 测试
- `go test ./...`:通过。
- `corepack pnpm lint`:0 error,806 个既有格式 warning。
- `corepack pnpm build`:通过,存在既有 webpack 体积 warning。
- Go 1.26.5 Windows 打包:通过。
- 真实设备脱敏验证:`admission_status=ready`、`ready_profiles=2`、`media_status=needs_attention`、`media_route_count=2`;所有路径使用业务设备名并包含码流用途。
- 未验证:当前环境没有可用 MediaMTX 二进制,因此未验证真实 WebRTC 画面;配置 MediaMTX 后可在视频服务重新对账。
## 遗留问题
- MediaMTX 是独立运行依赖,当前 Windows 包不包含该二进制。
- 严格 Harness 仍受既有 #44 归档缺少“最终方案”章节影响。
## 相关提交
- `b9f92dd` 自动媒体路径和业务化实时监看。
- `0f459f0` 更新长期 Wiki 镜像。