diff --git a/Task-22-Sense%E7%8B%AC%E7%AB%8B%E7%99%BB%E5%BD%95RBAC%E4%B8%8E%E5%AE%A1%E8%AE%A1.-.md b/Task-22-Sense%E7%8B%AC%E7%AB%8B%E7%99%BB%E5%BD%95RBAC%E4%B8%8E%E5%AE%A1%E8%AE%A1.-.md index 07bb16a..c6f05d4 100644 --- a/Task-22-Sense%E7%8B%AC%E7%AB%8B%E7%99%BB%E5%BD%95RBAC%E4%B8%8E%E5%AE%A1%E8%AE%A1.-.md +++ b/Task-22-Sense%E7%8B%AC%E7%AB%8B%E7%99%BB%E5%BD%95RBAC%E4%B8%8E%E5%AE%A1%E8%AE%A1.-.md @@ -1,9 +1,9 @@ -# 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与审计 @@ -11,32 +11,41 @@ ## 背景与目标 - +建立 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) \ No newline at end of file