docs: finalize Sense task archives (#22-#27)

This commit is contained in:
QiuSW
2026-08-12 17:47:11 +08:00
parent 997900dd08
commit 6d90d54592
6 changed files with 180 additions and 126 deletions
+30 -21
View File
@@ -2,16 +2,16 @@
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Task-22-Sense独立登录RBAC与审计
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-22-Sense%E7%8B%AC%E7%AB%8B%E7%99%BB%E5%BD%95RBAC%E4%B8%8E%E5%AE%A1%E8%AE%A1.-
wiki_revision: 1f952065d42442fb4fbed4a242116934c9b383bd
synchronized_at: 2026-08-12T09:35:05Z
wiki_revision: 7a6afe93812ed48eee0263249eb9b08cda43c5d9
synchronized_at: 2026-08-12T09:46:47Z
<!-- gitea-wiki-mirror:end -->
# 22 Sense独立登录RBAC与审计
# 22 Sense 独立登录、RBAC 与审计
- 类型:需求 / 缺陷 / 重构
- 所属 Epic:#
- 所属 MVP / 版本:#
- 状态:待验收 / 已完成
- 类型:需求
- 所属 Epic:#7
- 所属 MVP / 版本:#8
- 状态:待验收
- 日期:2026-08-12
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/22
- Wiki 页面:Task-22-Sense独立登录RBAC与审计
@@ -19,32 +19,41 @@ synchronized_at: 2026-08-12T09:35:05Z
## 背景与目标
<!-- 原来有什么问题,这次达到什么结果。 -->
建立 Sense 自有账户、角色、菜单权限、会话和审计边界,不接受 Bell 身份。
## 最终方案
<!-- 说明实际实现。与建单方案不同之处必须写清原因。 -->
实现一次性仓库外令牌初始化、bcrypt 密码、Sense 专属 JWT issuer/audience、HttpOnly SameSite Cookie、会话撤销、四角色权限矩阵、后端权限中间件、登录/用户/权限审计,以及用户与操作记录页面。登录失败使用统一安全错误,菜单按后端权限投影。
与已确认方案一致。为使用 #21 的模块注册和项目内窄端口,实施前已在工单评论中记录精确集成 write_path;未修改 contracts、Brain、Bell 或根级部署。
## 修改文件
- `<文件>`:<改动说明>
- Sense/server/app/sense/:本工单后端领域、适配器、服务、HTTP 与测试。
- Sense/server/cmd/sense/modules_*.go:独立模块注册文件。
- Sense/server/database/migrations/:本工单需要的 PostgreSQL 迁移(如适用)。
- Sense/ui/src/:本工单 API、页面、路由及明确需要的局部业务组件。
- Sense/tests/、Sense/testdata/:无生产数据、无真实秘密的验收说明与夹具。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| | 通过 / 未通过 |
安全初始化、登录、统一失败、四角色 RBAC、Bell token/产品头拒绝、会话撤销和审计自动化均通过。
工单保持 open / 待验收,未代替用户执行浏览器、真实设备或部署环境验收。
## 测试
- 执行命令:`<命令>`
- 结果:
- **未验证部分**:<!-- 必填;没有就写“无”。 -->
## 遗留问题
<!-- 没有就删除本节。 -->
- Go 1.26.5 go vet ./...:通过。
- Go 1.26.5 go test -race ./...:全部通过。
- Go 1.26.5 go test -count=1 ./...:全部通过。
- Go 1.26.5 go build ./...:通过。
- corepack pnpm@9.15.1 install --frozen-lockfile:通过。
- corepack pnpm@9.15.1 lint --quiet:通过。
- corepack pnpm@9.15.1 build:通过;仅有 Element Plus vendor bundle 体积建议警告。
- Sense 独立 smoke、Harness 严格检查和 31 项 Harness 测试:通过。
- **未验证部分**:未连接真实 PostgreSQL,未使用四类部署账户做浏览器人工权限走查。
## 相关提交
- `<提交哈希>` <提交说明>
- $(System.Collections.Hashtable.commit) 本工单实现提交
- 5177861 docs: document Sense MVP operations (#22-#27)
@@ -2,16 +2,16 @@
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Task-23-Sense设备台账与凭据边界
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-23-Sense%E8%AE%BE%E5%A4%87%E5%8F%B0%E8%B4%A6%E4%B8%8E%E5%87%AD%E6%8D%AE%E8%BE%B9%E7%95%8C.-
wiki_revision: aa8417c676eebd06ed34a70551489ceab2afdbb2
synchronized_at: 2026-08-12T09:36:45Z
wiki_revision: 4e54f0a2efabe908e107490c3c4d1e981ee10bcb
synchronized_at: 2026-08-12T09:46:51Z
<!-- gitea-wiki-mirror:end -->
# 23 Sense设备台账与凭据边界
# 23 Sense 设备台账与凭据边界
- 类型:需求 / 缺陷 / 重构
- 所属 Epic:#
- 所属 MVP / 版本:#
- 状态:待验收 / 已完成
- 类型:需求
- 所属 Epic:#7
- 所属 MVP / 版本:#8
- 状态:待验收
- 日期:2026-08-12
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/23
- Wiki 页面:Task-23-Sense设备台账与凭据边界
@@ -19,32 +19,41 @@ synchronized_at: 2026-08-12T09:36:45Z
## 背景与目标
<!-- 原来有什么问题,这次达到什么结果。 -->
用稳定 Device 标识管理视频设备,并保证摄像机凭据只写不读。
## 最终方案
<!-- 说明实际实现。与建单方案不同之处必须写清原因。 -->
实现 Device 创建、查询、编辑、停用和 20/50/100 分页;非 video 类型明确为 adapter_not_ready。摄像机用户名/密码经仓库外 32 字节密钥使用 AES-256-GCM 加密,所有读取模型只返回 credential_configured;关键变更写入统一审计。
与已确认方案一致。为使用 #21 的模块注册和项目内窄端口,实施前已在工单评论中记录精确集成 write_path;未修改 contracts、Brain、Bell 或根级部署。
## 修改文件
- `<文件>`:<改动说明>
- Sense/server/app/sense/:本工单后端领域、适配器、服务、HTTP 与测试。
- Sense/server/cmd/sense/modules_*.go:独立模块注册文件。
- Sense/server/database/migrations/:本工单需要的 PostgreSQL 迁移(如适用)。
- Sense/ui/src/:本工单 API、页面、路由及明确需要的局部业务组件。
- Sense/tests/、Sense/testdata/:无生产数据、无真实秘密的验收说明与夹具。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| | 通过 / 未通过 |
CRUD、停用、分页超过 16 项、未就绪适配器、乐观版本和凭据不回显测试通过。
工单保持 open / 待验收,未代替用户执行浏览器、真实设备或部署环境验收。
## 测试
- 执行命令:`<命令>`
- 结果:
- **未验证部分**:<!-- 必填;没有就写“无”。 -->
## 遗留问题
<!-- 没有就删除本节。 -->
- Go 1.26.5 go vet ./...:通过。
- Go 1.26.5 go test -race ./...:全部通过。
- Go 1.26.5 go test -count=1 ./...:全部通过。
- Go 1.26.5 go build ./...:通过。
- corepack pnpm@9.15.1 install --frozen-lockfile:通过。
- corepack pnpm@9.15.1 lint --quiet:通过。
- corepack pnpm@9.15.1 build:通过;仅有 Element Plus vendor bundle 体积建议警告。
- Sense 独立 smoke、Harness 严格检查和 31 项 Harness 测试:通过。
- **未验证部分**:未在真实 PostgreSQL 执行迁移,未使用实验室设备验证实施人员完整操作。
## 相关提交
- `<提交哈希>` <提交说明>
- $(System.Collections.Hashtable.commit) 本工单实现提交
- 5177861 docs: document Sense MVP operations (#22-#27)
+30 -21
View File
@@ -2,16 +2,16 @@
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Task-24-ONVIF与RTSP视频接入验证
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-24-ONVIF%E4%B8%8ERTSP%E8%A7%86%E9%A2%91%E6%8E%A5%E5%85%A5%E9%AA%8C%E8%AF%81.-
wiki_revision: 31a9da7c87e9acaba20386bd69f02c404602f1f3
synchronized_at: 2026-08-12T09:38:38Z
wiki_revision: 0f3da06cbe73c8ccd0fdaf5d9499a88a64034ce5
synchronized_at: 2026-08-12T09:46:53Z
<!-- gitea-wiki-mirror:end -->
# 24 ONVIF与RTSP视频接入验证
# 24 ONVIF 与 RTSP 视频接入验证
- 类型:需求 / 缺陷 / 重构
- 所属 Epic:#
- 所属 MVP / 版本:#
- 状态:待验收 / 已完成
- 类型:需求
- 所属 Epic:#7
- 所属 MVP / 版本:#8
- 状态:待验收
- 日期:2026-08-12
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/24
- Wiki 页面:Task-24-ONVIF与RTSP视频接入验证
@@ -19,32 +19,41 @@ synchronized_at: 2026-08-12T09:38:38Z
## 背景与目标
<!-- 原来有什么问题,这次达到什么结果。 -->
支持获准网络中的摄像机发现或手工接入,读取并验证主辅 Profile。
## 最终方案
<!-- 说明实际实现。与建单方案不同之处必须写清原因。 -->
实现默认关闭的受控 WS-Discovery,仅允许显式配置的本机网卡 IP;支持无凭据 ONVIF 地址、Profile/StreamUri SOAP 解析、主辅分辨率分类和 RTSP TCP/OPTIONS 验证。认证失败、不可达、超时、校时与重探测状态可定位;凭据只经内部端口取得。
与已确认方案一致。为使用 #21 的模块注册和项目内窄端口,实施前已在工单评论中记录精确集成 write_path;未修改 contracts、Brain、Bell 或根级部署。
## 修改文件
- `<文件>`:<改动说明>
- Sense/server/app/sense/:本工单后端领域、适配器、服务、HTTP 与测试。
- Sense/server/cmd/sense/modules_*.go:独立模块注册文件。
- Sense/server/database/migrations/:本工单需要的 PostgreSQL 迁移(如适用)。
- Sense/ui/src/:本工单 API、页面、路由及明确需要的局部业务组件。
- Sense/tests/、Sense/testdata/:无生产数据、无真实秘密的验收说明与夹具。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| | 通过 / 未通过 |
ONVIF XML 夹具、凭据 URI 拒绝、主辅 Profile、RTSP 状态映射和接入编排 race 测试通过。
工单保持 open / 待验收,未代替用户执行浏览器、真实设备或部署环境验收。
## 测试
- 执行命令:`<命令>`
- 结果:
- **未验证部分**:<!-- 必填;没有就写“无”。 -->
## 遗留问题
<!-- 没有就删除本节。 -->
- Go 1.26.5 go vet ./...:通过。
- Go 1.26.5 go test -race ./...:全部通过。
- Go 1.26.5 go test -count=1 ./...:全部通过。
- Go 1.26.5 go build ./...:通过。
- corepack pnpm@9.15.1 install --frozen-lockfile:通过。
- corepack pnpm@9.15.1 lint --quiet:通过。
- corepack pnpm@9.15.1 build:通过;仅有 Element Plus vendor bundle 体积建议警告。
- Sense 独立 smoke、Harness 严格检查和 31 项 Harness 测试:通过。
- **未验证部分**:未扫描真实网络,未验证具体摄像机的 WS-Security/厂商兼容、时间漂移恢复或真实 RTSP。
## 相关提交
- `<提交哈希>` <提交说明>
- $(System.Collections.Hashtable.commit) 本工单实现提交
- 5177861 docs: document Sense MVP operations (#22-#27)
+30 -21
View File
@@ -2,16 +2,16 @@
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Task-25-MediaMTX进程与状态对账
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-25-MediaMTX%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%8A%B6%E6%80%81%E5%AF%B9%E8%B4%A6.-
wiki_revision: e9f1c7104614f8d3b568b195aa99c938668234d9
synchronized_at: 2026-08-12T09:40:25Z
wiki_revision: 4deba6e928e4d45814e191ee93f08c605dc60fea
synchronized_at: 2026-08-12T09:46:56Z
<!-- gitea-wiki-mirror:end -->
# 25 MediaMTX进程与状态对账
# 25 MediaMTX 进程与状态对账
- 类型:需求 / 缺陷 / 重构
- 所属 Epic:#
- 所属 MVP / 版本:#
- 状态:待验收 / 已完成
- 类型:需求
- 所属 Epic:#7
- 所属 MVP / 版本:#8
- 状态:待验收
- 日期:2026-08-12
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/25
- Wiki 页面:Task-25-MediaMTX进程与状态对账
@@ -19,32 +19,41 @@ synchronized_at: 2026-08-12T09:40:25Z
## 背景与目标
<!-- 原来有什么问题,这次达到什么结果。 -->
让 Sense 管理外部 MediaMTX 的期望配置、进程和状态收敛,而不嵌入媒体内核。
## 最终方案
<!-- 说明实际实现。与建单方案不同之处必须写清原因。 -->
实现只管理自身进程句柄的 Supervisor、最多三次重启边界、localhost v3 Control API、媒体路径期望/实际状态、reader 数和对账审计。源秘密只在本机控制请求中瞬时组装,不写仓库、数据库、日志或 Sense 响应。
与已确认方案一致。为使用 #21 的模块注册和项目内窄端口,实施前已在工单评论中记录精确集成 write_path;未修改 contracts、Brain、Bell 或根级部署。
## 修改文件
- `<文件>`:<改动说明>
- Sense/server/app/sense/:本工单后端领域、适配器、服务、HTTP 与测试。
- Sense/server/cmd/sense/modules_*.go:独立模块注册文件。
- Sense/server/database/migrations/:本工单需要的 PostgreSQL 迁移(如适用)。
- Sense/ui/src/:本工单 API、页面、路由及明确需要的局部业务组件。
- Sense/tests/、Sense/testdata/:无生产数据、无真实秘密的验收说明与夹具。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| | 通过 / 未通过 |
控制 API 方法、瞬时凭据、进程显式启动、正常/启动失败/控制失败/停止 fake 测试和 race 测试通过。
工单保持 open / 待验收,未代替用户执行浏览器、真实设备或部署环境验收。
## 测试
- 执行命令:`<命令>`
- 结果:
- **未验证部分**:<!-- 必填;没有就写“无”。 -->
## 遗留问题
<!-- 没有就删除本节。 -->
- Go 1.26.5 go vet ./...:通过。
- Go 1.26.5 go test -race ./...:全部通过。
- Go 1.26.5 go test -count=1 ./...:全部通过。
- Go 1.26.5 go build ./...:通过。
- corepack pnpm@9.15.1 install --frozen-lockfile:通过。
- corepack pnpm@9.15.1 lint --quiet:通过。
- corepack pnpm@9.15.1 build:通过;仅有 Element Plus vendor bundle 体积建议警告。
- Sense 独立 smoke、Harness 严格检查和 31 项 Harness 测试:通过。
- **未验证部分**:本机无 MediaMTX 二进制和实验室流,未验证真实进程启动、崩溃恢复、拉流、reader 与部署版本兼容。
## 相关提交
- `<提交哈希>` <提交说明>
- $(System.Collections.Hashtable.commit) 本工单实现提交
- 5177861 docs: document Sense MVP operations (#22-#27)
+30 -21
View File
@@ -2,16 +2,16 @@
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Task-26-Sense单路实时监看
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-26-Sense%E5%8D%95%E8%B7%AF%E5%AE%9E%E6%97%B6%E7%9B%91%E7%9C%8B.-
wiki_revision: a4c9485a9cd958c581f829e18a2b6dbc21ef412c
synchronized_at: 2026-08-12T09:42:04Z
wiki_revision: 4635d6dbe8be6d38a8f5ad2f2dead98c442deb66
synchronized_at: 2026-08-12T09:46:59Z
<!-- gitea-wiki-mirror:end -->
# 26 Sense单路实时监看
# 26 Sense 单路实时监看
- 类型:需求 / 缺陷 / 重构
- 所属 Epic:#
- 所属 MVP / 版本:#
- 状态:待验收 / 已完成
- 类型:需求
- 所属 Epic:#7
- 所属 MVP / 版本:#8
- 状态:待验收
- 日期:2026-08-12
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/26
- Wiki 页面:Task-26-Sense单路实时监看
@@ -19,32 +19,41 @@ synchronized_at: 2026-08-12T09:42:04Z
## 背景与目标
<!-- 原来有什么问题,这次达到什么结果。 -->
让授权用户选择一路已验证视频并获得清晰播放状态,不依赖 Brain 或 Bell。
## 最终方案
<!-- 说明实际实现。与建单方案不同之处必须写清原因。 -->
实现媒体路径列表、绑定当前用户且最长两分钟的播放会话、受认证保护的播放器入口和状态查询;前端只打开一路流,提供 Profile 选择、加载、等待、服务失败、断开、过期与重连反馈,并新增局部 StreamPlayer。
与已确认方案一致。为使用 #21 的模块注册和项目内窄端口,实施前已在工单评论中记录精确集成 write_path;未修改 contracts、Brain、Bell 或根级部署。
## 修改文件
- `<文件>`:<改动说明>
- Sense/server/app/sense/:本工单后端领域、适配器、服务、HTTP 与测试。
- Sense/server/cmd/sense/modules_*.go:独立模块注册文件。
- Sense/server/database/migrations/:本工单需要的 PostgreSQL 迁移(如适用)。
- Sense/ui/src/:本工单 API、页面、路由及明确需要的局部业务组件。
- Sense/tests/、Sense/testdata/:无生产数据、无真实秘密的验收说明与夹具。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| | 通过 / 未通过 |
播放基础 URL 凭据拒绝、TTL 上限、会话所有者隔离和过期测试通过;前端 lint/build 通过。
工单保持 open / 待验收,未代替用户执行浏览器、真实设备或部署环境验收。
## 测试
- 执行命令:`<命令>`
- 结果:
- **未验证部分**:<!-- 必填;没有就写“无”。 -->
## 遗留问题
<!-- 没有就删除本节。 -->
- Go 1.26.5 go vet ./...:通过。
- Go 1.26.5 go test -race ./...:全部通过。
- Go 1.26.5 go test -count=1 ./...:全部通过。
- Go 1.26.5 go build ./...:通过。
- corepack pnpm@9.15.1 install --frozen-lockfile:通过。
- corepack pnpm@9.15.1 lint --quiet:通过。
- corepack pnpm@9.15.1 build:通过;仅有 Element Plus vendor bundle 体积建议警告。
- Sense 独立 smoke、Harness 严格检查和 31 项 Harness 测试:通过。
- **未验证部分**:未在目标浏览器连接真实 MediaMTX WebRTC 页面和实验室流,未人工验证主辅切换及真实断线恢复。
## 相关提交
- `<提交哈希>` <提交说明>
- $(System.Collections.Hashtable.commit) 本工单实现提交
- 5177861 docs: document Sense MVP operations (#22-#27)
@@ -2,16 +2,16 @@
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Task-27-Sense区域与方向警戒线版本配置
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-27-Sense%E5%8C%BA%E5%9F%9F%E4%B8%8E%E6%96%B9%E5%90%91%E8%AD%A6%E6%88%92%E7%BA%BF%E7%89%88%E6%9C%AC%E9%85%8D%E7%BD%AE.-
wiki_revision: da5e06c177121f8605c2c3ade65b76cfceacd344
synchronized_at: 2026-08-12T09:44:03Z
wiki_revision: c98b84d1b1bd4903a03e40b801bd78f6a9f726b3
synchronized_at: 2026-08-12T09:47:01Z
<!-- gitea-wiki-mirror:end -->
# 27 Sense区域与方向警戒线版本配置
# 27 Sense 区域与方向警戒线版本配置
- 类型:需求 / 缺陷 / 重构
- 所属 Epic:#
- 所属 MVP / 版本:#
- 状态:待验收 / 已完成
- 类型:需求
- 所属 Epic:#7
- 所属 MVP / 版本:#8
- 状态:待验收
- 日期:2026-08-12
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/27
- Wiki 页面:Task-27-Sense区域与方向警戒线版本配置
@@ -19,32 +19,41 @@ synchronized_at: 2026-08-12T09:44:03Z
## 背景与目标
<!-- 原来有什么问题,这次达到什么结果。 -->
在设备 Profile 画面上配置版本化多边形和方向警戒线,并在分辨率变化后阻止静默复用。
## 最终方案
<!-- 说明实际实现。与建单方案不同之处必须写清原因。 -->
实现 0..1 归一化坐标、Device/Profile/宽高绑定、不可变版本行、乐观并发、停用版本和重新校准。后端校验范围、最少点数、自交、退化、线端点和方向;前端只新增局部 SVG AreaCanvas,其他表单、表格、Dialog 和 Tag 复用 Element Plus。
与已确认方案一致。为使用 #21 的模块注册和项目内窄端口,实施前已在工单评论中记录精确集成 write_path;未修改 contracts、Brain、Bell 或根级部署。
## 修改文件
- `<文件>`:<改动说明>
- Sense/server/app/sense/:本工单后端领域、适配器、服务、HTTP 与测试。
- Sense/server/cmd/sense/modules_*.go:独立模块注册文件。
- Sense/server/database/migrations/:本工单需要的 PostgreSQL 迁移(如适用)。
- Sense/ui/src/:本工单 API、页面、路由及明确需要的局部业务组件。
- Sense/tests/、Sense/testdata/:无生产数据、无真实秘密的验收说明与夹具。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| | 通过 / 未通过 |
有效/越界/自交/退化多边形、方向线、版本递增、并发冲突、分辨率变化标记和重新校准测试通过。
工单保持 open / 待验收,未代替用户执行浏览器、真实设备或部署环境验收。
## 测试
- 执行命令:`<命令>`
- 结果:
- **未验证部分**:<!-- 必填;没有就写“无”。 -->
## 遗留问题
<!-- 没有就删除本节。 -->
- Go 1.26.5 go vet ./...:通过。
- Go 1.26.5 go test -race ./...:全部通过。
- Go 1.26.5 go test -count=1 ./...:全部通过。
- Go 1.26.5 go build ./...:通过。
- corepack pnpm@9.15.1 install --frozen-lockfile:通过。
- corepack pnpm@9.15.1 lint --quiet:通过。
- corepack pnpm@9.15.1 build:通过;仅有 Element Plus vendor bundle 体积建议警告。
- Sense 独立 smoke、Harness 严格检查和 31 项 Harness 测试:通过。
- **未验证部分**:未用真实视频画面和目标岗位用户完成浏览器绘制、双向线及 Profile 切换人工验收。
## 相关提交
- `<提交哈希>` <提交说明>
- $(System.Collections.Hashtable.commit) 本工单实现提交
- 5177861 docs: document Sense MVP operations (#22-#27)