From ab36e7572aca7493e8dc73c44a07062829f691ec Mon Sep 17 00:00:00 2001 From: ila <2+ila@noreply.git.ilapage.cn> Date: Fri, 14 Aug 2026 15:12:27 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=AE=8C=E5=96=84=E5=B7=A5=E5=8D=95=20?= =?UTF-8?q?#65=20=E5=BE=85=E9=AA=8C=E6=94=B6=E5=BD=92=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...E5%87%AD%E6%8D%AE%E8%BE%B9%E7%95%8C.-.-.md | 72 +++++++++++++++++++ ...E%E5%87%AD%E6%8D%AE%E8%BE%B9%E7%95%8C.-.md | 42 ----------- 2 files changed, 72 insertions(+), 42 deletions(-) create mode 100644 Task-65-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.-.-.md delete mode 100644 Task-65-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.-.md diff --git a/Task-65-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.-.-.md b/Task-65-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.-.-.md new file mode 100644 index 0000000..deced36 --- /dev/null +++ b/Task-65-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.-.-.md @@ -0,0 +1,72 @@ +# 65 Sense设备台账与凭据边界 + +- 类型:需求 +- 所属 Epic:#7 +- 所属 MVP / 版本:#8 +- 状态:待验收 +- 日期:2026-08-14 +- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/65 +- Pull Request:https://git.ilapage.cn/ila/yovision/pulls/83 +- 主项目 / 主 Agent:Sense / Sense Agent +- 写路径:仅 `Sense/` 与本任务对应 Wiki、docs 镜像 + +## 背景与目标 + +在 #61 冻结 GoAdmin 产品骨架和 #64 独立身份能力上,重建设备台账、角色权限和摄像头凭据边界。界面服务网管、实施人员及非技术现场人员,通用外壳和组件复用 go-admin-ui;Brain、Bell 不参与且不作为验收依赖。 + +## 最终方案 + +- 新增视频、雷达、门磁、按钮、穿戴和其他类型设备台账,提供列表、新建、编辑和停用;停用替代物理删除。 +- 编辑、停用、凭据更新使用版本号乐观并发控制,过期写入返回 409;分页上限为每页 100,不把默认 16 路配额写成容量上限。 +- 当前视频类型标记适配器可接入,其他类型明确显示“适配器未就绪”。 +- ONVIF/RTSP 凭据按设备和用途分离,以外部 `SENSE_CREDENTIAL_KEY` 驱动 AES-256-GCM 加密;HTTP 和页面只返回配置状态,不提供读取凭据或密文接口。 +- 复用 GoAdmin 的 JWT、Casbin、操作审计、动态菜单、页面容器、Element Plus 表单/表格/分页/Dialog/Tag、权限按钮和 Axios 封装。 +- admin、implementation_operator、site_admin 可维护设备与凭据,viewer 只读;未知 JSON 字段拒绝,凭据字段加入日志脱敏。 +- 与建单方案的路径差异已在工单记录:按当前 GoAdmin 目录使用 `cmd/migrate/migration/version/` 和 `app/admin/router/sense_device.go`,没有修改共享路径。 + +## 修改文件 + +- `Sense/server/app/sense/credential/`:凭据模型、AES-256-GCM vault 和作用域测试。 +- `Sense/server/app/sense/device/`:设备模型、白名单 DTO、服务、API 与测试。 +- `Sense/server/app/admin/router/sense_device.go`:注册受 JWT、Casbin 和权限动作保护的设备路由。 +- `Sense/server/cmd/migrate/migration/version/2026081414000_device.go`:设备表、凭据表、菜单、角色关联和 Casbin 权限。 +- `Sense/server/common/middleware/logger.go`:摄像头凭据字段脱敏。 +- `Sense/ui/src/views/sense/device/`、`Sense/ui/src/api/sense/device.js`:设备管理页面、请求白名单和接口。 +- `Sense/README.md`、Wiki 架构/业务规则/本地验证/交付指南:配置、安全边界和操作说明。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 设备列表、新建、编辑、停用与中文字段 | 自动化及 PostgreSQL HTTP 集成通过 | +| 版本冲突和严格请求白名单 | 过期写入 409、未知字段 400 | +| 多类型与非视频适配器状态 | 通过;20 条非视频分页验证未受 16 路配额限制 | +| 凭据分离加密、只写不可读、审计脱敏 | 通过;两种 purpose、密文最短 138 字节、审计明文匹配 0 | +| 角色权限 | admin/operator/site 可维护,viewer 读取 200、写入 403 | +| GoAdmin/go-admin-ui 复用与无多余入口 | 通过代码与路由检查;未新增通用 UI 组件 | +| 文档 | Wiki 已更新、docs 镜像检查通过 | + +## 测试 + +- `go test ./...`:通过。 +- `go vet ./...`:通过。 +- `go build ./...`:通过。 +- `corepack pnpm@9.15.1 install --frozen-lockfile`:通过。 +- `corepack pnpm@9.15.1 lint`:0 错误,30 条继承的上游 warning。 +- `corepack pnpm@9.15.1 test:unit`:8 个 suite、32 项测试通过。 +- `corepack pnpm@9.15.1 build:prod`:通过,6 条继承的构建 warning。 +- PostgreSQL 17 迁移及重复迁移:通过,菜单和权限记录未重复。 +- HTTP 集成:bootstrap 200、未知字段 400、创建 200、更新 200、过期写入 409、凭据更新 200、viewer 读取 200、viewer 写入 403。 +- 数据库证据:设备 3 条;凭据 2 条、2 种 purpose;凭据审计 1 条;审计测试明文匹配 0。 +- `python dev_scripts/sync_wiki_docs.py --check`:通过。 +- `git diff --check`:通过。 +- **未验证部分**:真实摄像头接入、ONVIF/RTSP 连通和目标客户浏览器属于后续 #66 及现场验收;本工单不伪造其结果。 + +## 回退与遗留 + +回退 PR #83 的两个提交可移除本次入口;数据库表与权限记录保留,避免破坏审计或凭据数据。后续 #66 才消费本工单的凭据边界并实现真实 ONVIF/RTSP 接入。 + +## 相关提交 + +- `be091f0` feat: 重建设备台账与凭据边界 (#65) +- `d31c35f` docs: 记录 Sense 设备台账与凭据边界 (#65) diff --git a/Task-65-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.-.md b/Task-65-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.-.md deleted file mode 100644 index 4f14190..0000000 --- a/Task-65-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.-.md +++ /dev/null @@ -1,42 +0,0 @@ -# 65 Sense设备台账与凭据边界 - -- 类型:需求 / 缺陷 / 重构 -- 所属 Epic:# -- 所属 MVP / 版本:# -- 状态:待验收 / 已完成 -- 日期:2026-08-14 -- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/65 -- Wiki 页面:Task-65-Sense设备台账与凭据边界 -- Wiki revision:见本地镜像头 - -## 背景与目标 - - - -## 最终方案 - - - -## 修改文件 - -- `<文件>`:<改动说明> - -## 验收结果 - -| 验收标准 | 结果 | -|---|---| -| | 通过 / 未通过 | - -## 测试 - -- 执行命令:`<命令>` -- 结果: -- **未验证部分**: - -## 遗留问题 - - - -## 相关提交 - -- `<提交哈希>` <提交说明>