docs: 归档工单 #67 待验收证据

This commit is contained in:
QiuSW
2026-08-14 18:00:44 +08:00
parent 4149cc4426
commit 263a68c98d
2 changed files with 70 additions and 0 deletions
@@ -0,0 +1,66 @@
<!-- gitea-wiki-mirror:start -->
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Task-67-Sense视频服务生命周期与状态对账
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-67-Sense%E8%A7%86%E9%A2%91%E6%9C%8D%E5%8A%A1%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E4%B8%8E%E7%8A%B6%E6%80%81%E5%AF%B9%E8%B4%A6.-
wiki_revision: 8ce039b45a20e680e378932331d9a8da1cae1654
synchronized_at: 2026-08-14T09:58:07Z
<!-- gitea-wiki-mirror:end -->
# 67 Sense视频服务生命周期与状态对账
- 类型:需求
- 所属 Epic:#7
- 所属 MVP / 版本:#8
- 状态:待验收
- 日期:2026-08-14
- 工单:https://git.ilapage.cn/ila/yovision/issues/67
- Pull Request:https://git.ilapage.cn/ila/yovision/pulls/85
- 主项目:Sense
## 背景与目标
在 #66 已验证设备/Profile 上重建 MediaMTX 安全配置、独立进程生命周期、按需路径和持久化状态对账。Brain、Bell 不启动时可独立运行和验收。
## 最终方案
- MediaMTX 保持独立二进制;Sense 在 GoAdmin server 生命周期内启动后台对账,只停止自己启动的子进程。
- Control API 只允许 loopback HTTP,禁用代理和重定向;检测到外部实例时标记“外部启动(受保护)”,孤儿安全闸禁止停止。
- 路由只持久化 Device/Profile 引用、哈希路径、desired/actual、reader、失败次数、退避和下次重试,不保存带凭据 URI。
- 摄像头凭据按需从 #65 内部端口读取,仅在 MediaMTX v1.19.3 loopback 请求边界临时组装,不进入基础配置、日志或 Sense API。
- 接入成功后幂等建立路由;冷启动恢复 desired=running,明确 stopped 路径保持停止;稳定路径只刷新状态,不重复下发或增加版本。
- 复用 GoAdmin JWT/Casbin/操作审计、迁移、动态菜单和 go-admin-ui BasicLayout、Element Plus Descriptions/Table/Tag/Button/MessageBox。
## 验收结果
| 标准 | 结果 |
|---|---|
| 已验证 Profile 幂等建立/更新路径 | 单元测试及接入内部端口通过 |
| 进程未启动、启动中、失败和恢复可定位 | 状态机、真实二进制和页面反馈通过 |
| 冷启动恢复 running 路径 | PostgreSQL 17 重建 Service 测试通过 |
| reader、上游、退避、下次重试、孤儿闸可观察 | DTO、页面、退避和外部进程测试通过 |
| 配置、日志和 Sense API 不泄漏凭据 | loopback 边界、无秘密模型/响应及扫描通过 |
| MediaMTX 失败不破坏 Profile | 失败持久化测试确认 Profile 保持 ready |
## 测试
- `go test ./...`、`go vet ./...`、`go build ./...`:通过。
- `go test -race ./app/sense/media ./app/sense/reconcile`:通过。
- 前端 lint:0 error,32 条上游/目录命名 warning。
- 前端单测:10 suites、35 tests 通过。
- 前端生产构建:通过,6 条上游继承 warning。
- 真实 MediaMTX v1.19.3:Control API 就绪、path add/patch/delete 通过。
- PostgreSQL 17:desired route 保存后重建 Service 并恢复为 ready 通过。
- PostgreSQL 17 定向迁移:3 个菜单、12 条角色策略、1 条迁移记录通过。
- Wiki 镜像检查:通过。
- 已处理测试安全问题:MediaMTX 自动 TLS 文件的工作目录已固定到外部配置目录;临时证书/私钥未进入最终提交或远端。
- 未验证部分:未连接客户真实摄像机和现场网络;真实上游持续拉流、reader 变化、端口 ACL 和目标浏览器留待授权现场验收。
- 已知相邻问题:空白 PostgreSQL 执行完整上游迁移链时,在到达 #67 前被旧 `sys_config` 初始化字段长度问题中止;#67 定向迁移已通过,空库安装链应由 #70/#71 单独复核,不在本工单混改上游初始化。
## 回退
回退 PR #85 可移除运行时、路由和页面入口;已验证 Device/Profile 不受影响。媒体路由表保留可审计状态,停止/回退不删除摄像机数据。
## 相关提交
- 19f9bfa feat: 重建 MediaMTX 生命周期与状态对账 (#67)
- 4149cc4 docs: 记录 Sense 视频服务生命周期 (#67)
+4
View File
@@ -115,6 +115,10 @@
{
"page": "Task-66-Sense视频接入与Profile",
"path": "docs/task/66-Sense视频接入与Profile.md"
},
{
"page": "Task-67-Sense视频服务生命周期与状态对账",
"path": "docs/task/67-Sense视频服务生命周期与状态对账.md"
}
]
}