Page:
Task-66-Sense视频接入与Profile
Pages
Architecture-and-Code-Map
Audience-Document-Template
Business-Rules-and-Glossary
Common-Changes
Delivery-Documentation-Guide
Deployment-Template
Deployment-and-Operations
Development-Workflow
Existing-Project-Adoption-Guide
Home
Local-Development-and-Verification
Multi-Agent-Collaboration
New-Project-Documentation-Setup
Product-Requirements
Product-Roadmap
Project-Profile
Requirements-Migration-Matrix
Task-1-三项目并行建单与协同工单顺序
Task-101-Sense-GoAdmin-应用外壳
Task-104-Sense-30天登录有效期
Task-106-Sense-本机-Supervisor-实例
Task-12-Bell独立登录RBAC与认证审计
Task-17-Bell不可变Event与永久幂等收据
Task-18-Bell开发测试合成事件入口
Task-19-Bell规则匹配与Event-Alert链路
Task-20-Bell-Alert并发处置与审计时间线
Task-21-Sense独立GoAdmin产品骨架
Task-22-Sense独立登录RBAC与审计
Task-23-Sense设备台账与凭据边界
Task-24-ONVIF与RTSP视频接入验证
Task-25-MediaMTX进程与状态对账
Task-26-Sense单路实时监看
Task-27-Sense区域与方向警戒线版本配置
Task-28-三项目当前MVP交互原型
Task-3-GoAdmin默认模块精简与UI组件复用
Task-30-Sense原型对齐GoAdmin与Element-Plus
Task-31-Bell原型对齐GoAdmin与Element-Plus
Task-32-Sense网管与非技术人员原型
Task-33-Bell普通用户预警处理原型
Task-36-Bell-MVP文档与待验收归档
Task-37-Sense-Windows前后端一键打包
Task-40-Sense全模式密码最短6位
Task-42-Sense密码策略仅限制最短6位
Task-44-Sense管理员侧栏模块为空修复
Task-46-Sense-Windows包内配置加载
Task-48-支持ONVIF-Digest认证与安全Media地址归一化
Task-5-冻结Sense与Bell-GoAdmin技术基线
Task-50-ONVIF与RTSP分离凭据并持久化Profile
Task-51-接入成功后自动建立媒体路由并进入实时监看
Task-54-修复实时监看按需拉流循环等待
Task-56-修复设备编辑请求包含新建专用字段
Task-58-建立explore-main-dev分支治理并重置GoAdmin开发基线
Task-61-Sense冻结GoAdmin源码产品骨架
Task-64-Sense登录RBAC与审计
Task-65-Sense设备台账与凭据边界
Task-66-Sense视频接入与Profile
Task-67-Sense视频服务生命周期与状态对账
Task-68-Sense单路实时监看与播放状态反馈
Task-69-Sense多边形区域与方向警戒线配置
Task-70-Sense-Windows配置启动与打包交付
Task-9-Bell独立GoAdmin产品骨架
Task-90-Sense项目根目录Windows启动脚本
Task-92-Sense旧设备能力JSONB兼容迁移
Task-95-Sense旧媒体路由唯一约束兼容迁移
Task-97-Sense免验证码登录与管理员密码重置
Task-99-Sense登录页只读配置接口
Task-Archive-Template
Troubleshooting
Clone
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.
66 Sense视频接入与Profile
- 类型:需求
- 所属 Epic:#7
- 所属 MVP / 版本:#8
- 状态:已完成
- 日期:2026-08-14
- 验收:用户于 2026-08-14 明确验收通过
- 工单:#66
- Pull Request:#84
- 主项目:Sense
背景与目标
在 #65 设备与凭据边界上重建获准网卡 ONVIF 发现、手工接入、认证、RTSP 验证和 Profile 持久化。Brain、Bell 不启动时可独立验收。
最终方案
- WS-Discovery 只绑定 SENSE_ONVIF_DISCOVERY_IP 指定的本机地址;无配置或非本机地址给出明确提示。
- ONVIF、Media XAddr 和 RTSP Stream URI 均受 SENSE_ONVIF_ALLOWED_CIDRS 限制;每次连接重新解析并固定目标 IP,禁用代理和重定向,拒绝 URL 用户信息及敏感查询参数。
- ONVIF 支持 Basic、MD5/SHA-256 Digest auth;不支持的算法或 qop 拒绝。
- 内部读取 #65 的 ONVIF/RTSP 分用途密文,HTTP 不提供凭据读取。
- Profile、主/子码流、无凭据 Stream URI 和逐项验证状态持久化到 PostgreSQL;失败重探保留最后一次已验证 Profile。
- 复用 GoAdmin JWT/Casbin/操作审计、迁移和 go-admin-ui BasicLayout、Element Plus Form/Dialog/Table/Tag、动态菜单与权限按钮。
- implementation_operator、site_admin 可发现和探测,viewer 只读保存结果。
修改文件
- 后端入口与业务:
Sense/server/app/admin/router/sense_admission.go、Sense/server/app/sense/admission/**、Sense/server/app/sense/onvif/**、Sense/server/app/sense/rtsp/**。 - 数据与验证:
Sense/server/cmd/migrate/migration/version/2026081417000_profile.go、Sense/server/tests/admission/postgres_test.go。 - 前端:
Sense/ui/src/api/sense/admission.js、Sense/ui/src/views/sense/admission/**、Sense/ui/src/views/sense/device/index.vue及对应单元测试。 - 完整文件清单以实现提交
2bb1614和 PR #84 的 Git diff 为准。
验收结果
| 标准 | 结果 |
|---|---|
| 未配置获准网卡不扫描 | 单元测试及错误映射通过 |
| Digest/Basic 与 RTSP 验证 | 合成协议服务通过 |
| ONVIF/RTSP 分离凭据且不回显 | 内部端口与严格 DTO 通过 |
| SSRF/重定向/凭据泄漏防护 | CIDR、DNS、URL、重定向测试通过 |
| Profile 重启恢复 | PostgreSQL 17 连接重开测试通过 |
| 认证失败、时间异常、重探 | 状态分类和失败保留 Profile 测试通过 |
测试
- go test ./...:通过。
- go vet ./...:通过。
- go build ./...:通过。
- 前端 lint:0 error,31 条上游继承 warning。
- 前端单测:9 suites、34 tests 通过。
- 前端生产构建:通过,6 条继承 warning。
- PostgreSQL 17:迁移与重复迁移通过;migration=1、tables=2、menus=3、policies=7。
- SENSE_ADMISSION_TEST_DATABASE_URL 隔离测试:写入 Profile、重开连接、读取主子码流通过。
- Wiki 镜像检查:通过。 未验证部分:未连接客户或实验室真实摄像机;真实厂商 Digest/RTSP 兼容、网络 ACL、设备校时和目标浏览器留待授权现场验收,不声称已通过。
回退
回退 PR #84 的实现和文档提交可移除入口;已产生的接入表保留以避免破坏追溯数据。失败探测本身不删除最后一次已验证 Profile。