[SEN] 建立 Sense 设备台账与视频设备凭据边界 #23

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

当前状态:已完成

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

基本信息

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

依赖与并行

  • 前置工单:#22
  • 是否允许与前置工单并行:否
  • 原因:设备 API、页面和审计需要先复用已成立的 Sense 身份与 RBAC 边界。

子项目影响

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

协同接口

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

原始需求

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

要解决什么

Sense 需要以 Device 为根实体管理视频设备,并为后续 ONVIF/RTSP 与区域配置提供稳定内部标识。摄像头凭据必须只写不读、不可回显和不可进入日志。

做什么 / 不做什么

  • 做:
    • 建立 Device、modality、capabilities、状态与逻辑标识;首期完整实现 video。
    • 实现设备列表、创建、编辑、查看和停用的最小 API/UI,复用现有表格、表单、弹窗和权限封装。
    • 未实现的适配器明确显示 adapter_not_ready。
    • 凭据从安全配置/加密存储边界写入,只返回是否已配置及脱敏结果。
  • 不做:
    • 不实施 ONVIF 探测、StreamUri、MediaMTX、实时播放、区域或 16 路批量开通。
    • 不把设备或凭据模型发布到 contracts/,不让 Brain/Bell 读取 Sense 数据库。
    • 不承诺 radar/contact/button/wearable 的实际适配器。

已确认方案

  • 使用内部不可变逻辑设备 ID,数据库主键和外部契约引用暂不混为一体。
  • 凭据更新走独立命令路径,读取 API 永不返回明文;日志字段统一脱敏。
  • 前端复用 go-admin-ui 的表格/表单/弹窗,新增业务组件必须记录复用缺口。
  • 设备停用保留审计,不在本工单做级联删除。

预计修改文件:

  • Sense/server/app/sense/device/
  • Sense/server/database/migrations/sense_device/
  • Sense/ui/src/api/sense/device/
  • Sense/ui/src/views/sense/device/
  • Sense/ui/src/router/modules/sense-device.js
  • Sense/tests/device/

需求变化记录

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

文档影响

  • 不影响长期文档,原因:不适用
  • 更新项目档案或本地开发与验证
  • 更新架构与代码地图
  • 更新业务规则与术语
  • 更新常见修改或故障排查
  • 更新其他 Wiki 页面:Device 数据边界、状态语义、凭据安全与未就绪适配器行为

交付文档影响

  • 无交付文档影响,原因:不适用
  • 更新已有交付文档,受众与页面:实施/运维人员,设备台账和凭据更新操作
  • 新增交付文档,受众与页面:
  • 需要目标岗位或客户代表验证:是;验证方式:用无真实秘密的测试设备核对角色权限、状态和只写凭据交互

验收标准

  • 可创建、查询、编辑和停用 video 设备,列表具备分页且没有 16 路硬上限。
  • 非 video 未实现适配器显示 adapter_not_ready,不会伪装为可用。
  • 任何读取 API、页面、日志、审计和测试夹具均不出现明文摄像头密码或含凭据 URL。
  • 未授权角色无法变更设备或凭据,关键变更进入 Sense 审计。
  • Brain、Bell 未启动时设备台账可独立验收。

验证方式

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

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

风险和回退

风险:凭据泄漏与未来适配器扩展不当。回退:回退设备模块与未投产迁移;已投产数据不得自动删除,需单独迁移工单。日志和测试产物一旦发现秘密必须立即停止并按安全事件处理。

## 当前状态:已完成 用户于 2026-08-14 明确验收通过。 ## 基本信息 - 类型:需求 - 任务类型:单项目 - 主项目:Sense - 主 agent:Sense agent - 所属 Epic:#7 - 所属 MVP / 版本:#8 - 阶段:阶段 1(三条独立纵切) ## 依赖与并行 - 前置工单:#22 - 是否允许与前置工单并行:否 - 原因:设备 API、页面和审计需要先复用已成立的 Sense 身份与 RBAC 边界。 ## 子项目影响 - 仅影响的子项目 / 交付单元:Sense - 是否跨子项目:否 - 是否修改共享接口或契约:否;唯一事实来源:Sense 项目内部模型、端口和夹具 - write_paths: - `Sense/server/app/sense/device/` - `Sense/server/database/migrations/sense_device/` - `Sense/ui/src/api/sense/device/` - `Sense/ui/src/views/sense/device/` - `Sense/ui/src/router/modules/sense-device.js` - `Sense/tests/device/` - 各子项目需要执行的验证:仅 Sense 执行本工单“验证方式”;Brain、Bell 无需启动或验证 ## 协同接口 - 生产者:不适用 - 消费者:不适用 - 契约/共享事实源:不适用;跨端数据只预留 Sense 内部适配器端口,不在本工单冻结共享结构 - 兼容策略:不适用 - 被阻塞或需要适配的工单:不适用 - 集成顺序:不适用 ## 原始需求 - 来源:用户对话 - 提出时间:2026-08-12 - 关键原话或脱敏摘要:先创建三个项目全部独立 MVP 工单,标题带项目英文简称;独立任务不依赖其他项目在线,按 MVP 和真实依赖推进。 ## 要解决什么 Sense 需要以 Device 为根实体管理视频设备,并为后续 ONVIF/RTSP 与区域配置提供稳定内部标识。摄像头凭据必须只写不读、不可回显和不可进入日志。 ## 做什么 / 不做什么 - 做: - 建立 Device、modality、capabilities、状态与逻辑标识;首期完整实现 video。 - 实现设备列表、创建、编辑、查看和停用的最小 API/UI,复用现有表格、表单、弹窗和权限封装。 - 未实现的适配器明确显示 `adapter_not_ready`。 - 凭据从安全配置/加密存储边界写入,只返回是否已配置及脱敏结果。 - 不做: - 不实施 ONVIF 探测、StreamUri、MediaMTX、实时播放、区域或 16 路批量开通。 - 不把设备或凭据模型发布到 `contracts/`,不让 Brain/Bell 读取 Sense 数据库。 - 不承诺 radar/contact/button/wearable 的实际适配器。 ## 已确认方案 - 使用内部不可变逻辑设备 ID,数据库主键和外部契约引用暂不混为一体。 - 凭据更新走独立命令路径,读取 API 永不返回明文;日志字段统一脱敏。 - 前端复用 go-admin-ui 的表格/表单/弹窗,新增业务组件必须记录复用缺口。 - 设备停用保留审计,不在本工单做级联删除。 预计修改文件: - `Sense/server/app/sense/device/` - `Sense/server/database/migrations/sense_device/` - `Sense/ui/src/api/sense/device/` - `Sense/ui/src/views/sense/device/` - `Sense/ui/src/router/modules/sense-device.js` - `Sense/tests/device/` ## 需求变化记录 | 日期 | 变化内容 | 原因 | 用户确认 | |---|---|---|---| | 2026-08-12 | 将 Sense 首个纵切按骨架、认证、设备、接入、媒体、监看、区域拆为独立单元工单 | 支持三个项目并行并按真实内部依赖实施 | 是 | ## 文档影响 - [ ] 不影响长期文档,原因:不适用 - [ ] 更新项目档案或本地开发与验证 - [x] 更新架构与代码地图 - [x] 更新业务规则与术语 - [ ] 更新常见修改或故障排查 - [x] 更新其他 Wiki 页面:Device 数据边界、状态语义、凭据安全与未就绪适配器行为 ## 交付文档影响 - [ ] 无交付文档影响,原因:不适用 - [x] 更新已有交付文档,受众与页面:实施/运维人员,设备台账和凭据更新操作 - [ ] 新增交付文档,受众与页面: - [x] 需要目标岗位或客户代表验证:是;验证方式:用无真实秘密的测试设备核对角色权限、状态和只写凭据交互 ## 验收标准 - [ ] 可创建、查询、编辑和停用 video 设备,列表具备分页且没有 16 路硬上限。 - [ ] 非 video 未实现适配器显示 `adapter_not_ready`,不会伪装为可用。 - [ ] 任何读取 API、页面、日志、审计和测试夹具均不出现明文摄像头密码或含凭据 URL。 - [ ] 未授权角色无法变更设备或凭据,关键变更进入 Sense 审计。 - [ ] Brain、Bell 未启动时设备台账可独立验收。 ## 验证方式 ```powershell cd Sense\server go test ./app/sense/device/... go test ./... cd ..\ui pnpm lint pnpm build cd .. go test ./tests/device/... ``` 除命令验证外,按验收标准执行 Sense 独立人工检查;Brain、Bell 保持未启动。若所需实验室摄像头或 MediaMTX 二进制不可用,必须明确记录未验证边界,不得用模拟结果冒充真机结果。 ## 风险和回退 风险:凭据泄漏与未来适配器扩展不当。回退:回退设备模块与未投产迁移;已投产数据不得自动删除,需单独迁移工单。日志和测试产物一旦发现秘密必须立即停止并按安全事件处理。
ila added the kind/taskpriority/p0project/sensescope/independent labels 2026-08-12 09:58:26 +08:00
Author
Owner

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

前置 #22 已通过 Go race/全量测试、前端 lint/build 并提交 b9416eb。新增精确 write_paths:

  • Sense/server/cmd/sense/modules_device.go:使用 #21 模块注册约定挂载设备模块。
  • Sense/server/app/sense/identity/audit_port.go:向后续业务模块暴露最小审计写入端口,使设备和凭据关键变更进入统一 Sense 审计;不暴露身份存储或会话实现。

变化不改变设备 API、数据模型或跨项目边界。

## 状态:进行中(2026-08-12) 前置 #22 已通过 Go race/全量测试、前端 lint/build 并提交 `b9416eb`。新增精确 write_paths: - `Sense/server/cmd/sense/modules_device.go`:使用 #21 模块注册约定挂载设备模块。 - `Sense/server/app/sense/identity/audit_port.go`:向后续业务模块暴露最小审计写入端口,使设备和凭据关键变更进入统一 Sense 审计;不暴露身份存储或会话实现。 变化不改变设备 API、数据模型或跨项目边界。
ila referenced this issue from a commit 2026-08-12 17:48:54 +08:00
Author
Owner

状态:待验收

  • 实现提交:5b8f4a4
  • 汇总文档提交:5177861
  • 最终归档提交:6d90d54(#21 的首次归档提交另为 2c0e37e)
  • 分支:agent/codex/21-sense-mvp
  • Pull Request:#34
  • Wiki 归档:Task-23-Sense设备台账与凭据边界
  • Wiki revision:4e54f0a2efab(短哈希)

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

未验证部分:未验证真实 PostgreSQL 和实验室设备操作。

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

## 状态:待验收 - 实现提交:`5b8f4a4` - 汇总文档提交:`5177861` - 最终归档提交:`6d90d54`(#21 的首次归档提交另为 `2c0e37e`) - 分支:`agent/codex/21-sense-mvp` - Pull Request:https://git.ilapage.cn/ila/yovision/pulls/34 - Wiki 归档:`Task-23-Sense设备台账与凭据边界` - Wiki revision:`4e54f0a2efab`(短哈希) 最终全量验证:Go 1.26.5 vet、全包 race、非缓存测试、build;pnpm 9.15.1 冻结安装、lint、build;Sense 独立 smoke;Harness strict 与 31 项测试;Wiki 镜像一致性;`git diff --check`,全部通过。前端仅有 vendor bundle 体积建议警告。 **未验证部分**:未验证真实 PostgreSQL 和实验室设备操作。 工单保持 open,等待用户验收;未关闭、未代替用户确认真实环境结果。
Author
Owner

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

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

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

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

No dependencies set.

Reference: ila/yovision#23