feat: 建立管理端四分组菜单与权限 migration #66

Closed
opened 2026-08-26 17:17:43 +08:00 by ila · 4 comments
Owner

基本信息

  • 类型:功能 / 数据迁移 / 权限基线
  • 所属 Epic:#3
  • 所属 MVP / 版本:#35 / MVP-2 后续可用性优化
  • 阶段:已完成
  • 前置工单:#59(已验收)
  • 设计证据:prototypes/59/v1/index.html,v1,用户于 2026-08-26 确认通过

原始需求

  • 来源:用户对话
  • 提出时间:2026-08-25;生产实施确认:2026-08-26
  • 脱敏摘要:管理端业务模块需要按用途分组,并启用适合 Chorus 的 go-admin 系统模块;用户确认原型后要求开始生产实现。

目标

通过新的可逆 migration 建立“生成配置、运行监控、用户与访问、系统管理”四个一级菜单,迁移现有 8 个 Chorus 业务入口,增加 5 个系统入口,并为 chorus_operator 建立最终所需菜单、API 和 Casbin 权限基线。

已确认方案

  • 新建四个稳定父菜单路径:/chorus/configuration、/chorus/monitoring、/chorus/access、/chorus/system。
  • 现有业务子路径保持不变,只调整 parent_id、paths、排序、breadcrumb;/chorus/users 显示名改为“终端用户”。
  • 新增系统子菜单:管理员账号、角色权限、菜单结构、接口清单、登录日志;组件复用现有 go-admin 页面入口。
  • 菜单结构、接口清单、登录日志只绑定 GET 权限;管理员账号和角色权限绑定其生产适配后仍保留的必要写权限。
  • 所有 Chorus 自有 API 记录使用 chorus.system.* handle,down 只删除本 migration 所有的记录。
  • up 不执行 AutoMigrate、不创建账号、不改变业务表;down 恢复 #49 后的单一“Chorus 运营”平铺结构。
  • 空库执行 up/down/up;从当前 migration 8 升级并 down 回退均需验证。

非目标

  • 不在本工单修改 Go handler/service 或 Vue 页面。
  • 不执行本机共享数据库迁移。
  • 不启用部门、岗位、字典、参数、操作日志、定时任务、监控或开发工具。
  • 不改变终端用户表或管理员账号数据。

验收标准

  • 新 migration 的 up/down 只管理本任务拥有的菜单、API、角色菜单、菜单 API 和 Casbin 记录。
  • up 后四个一级分组、13 个子入口的名称、顺序、父子关系和组件与 v1 原型一致。
  • chorus_operator 获得所需菜单和 API 权限,三个只读模块没有写权限。
  • down 后恢复原“Chorus 运营”父菜单和 8 个平铺业务入口,不遗留本 migration 新增记录。
  • migration 静态测试、MySQL 空库 up/down/up 和 8→新版本→8 回退通过。
  • 不包含凭据、账号、个人信息、生产数据或 AutoMigrate。

风险与回退

  • 高风险:错误的父子关系或 Casbin 记录会造成菜单丢失、403 或越权。
  • 控制:稳定 path/handle、限定删除范围、up/down 双向断言、隔离 MySQL 验证。
  • 回退:执行本 migration down 恢复当前平铺导航;失败时停止,不修改共享数据库。

文档影响

已更新 Gitea Wiki 的 Architecture-and-Code-Map 与 Business-Rules-and-Glossary,并同步核心镜像。

## 基本信息 - 类型:功能 / 数据迁移 / 权限基线 - 所属 Epic:#3 - 所属 MVP / 版本:#35 / MVP-2 后续可用性优化 - 阶段:已完成 - 前置工单:#59(已验收) - 设计证据:`prototypes/59/v1/index.html`,v1,用户于 2026-08-26 确认通过 ## 原始需求 - 来源:用户对话 - 提出时间:2026-08-25;生产实施确认:2026-08-26 - 脱敏摘要:管理端业务模块需要按用途分组,并启用适合 Chorus 的 go-admin 系统模块;用户确认原型后要求开始生产实现。 ## 目标 通过新的可逆 migration 建立“生成配置、运行监控、用户与访问、系统管理”四个一级菜单,迁移现有 8 个 Chorus 业务入口,增加 5 个系统入口,并为 `chorus_operator` 建立最终所需菜单、API 和 Casbin 权限基线。 ## 已确认方案 - 新建四个稳定父菜单路径:`/chorus/configuration`、`/chorus/monitoring`、`/chorus/access`、`/chorus/system`。 - 现有业务子路径保持不变,只调整 `parent_id`、`paths`、排序、breadcrumb;`/chorus/users` 显示名改为“终端用户”。 - 新增系统子菜单:管理员账号、角色权限、菜单结构、接口清单、登录日志;组件复用现有 go-admin 页面入口。 - 菜单结构、接口清单、登录日志只绑定 GET 权限;管理员账号和角色权限绑定其生产适配后仍保留的必要写权限。 - 所有 Chorus 自有 API 记录使用 `chorus.system.*` handle,down 只删除本 migration 所有的记录。 - up 不执行 AutoMigrate、不创建账号、不改变业务表;down 恢复 #49 后的单一“Chorus 运营”平铺结构。 - 空库执行 up/down/up;从当前 migration 8 升级并 down 回退均需验证。 ## 非目标 - 不在本工单修改 Go handler/service 或 Vue 页面。 - 不执行本机共享数据库迁移。 - 不启用部门、岗位、字典、参数、操作日志、定时任务、监控或开发工具。 - 不改变终端用户表或管理员账号数据。 ## 验收标准 - [x] 新 migration 的 up/down 只管理本任务拥有的菜单、API、角色菜单、菜单 API 和 Casbin 记录。 - [x] up 后四个一级分组、13 个子入口的名称、顺序、父子关系和组件与 v1 原型一致。 - [x] `chorus_operator` 获得所需菜单和 API 权限,三个只读模块没有写权限。 - [x] down 后恢复原“Chorus 运营”父菜单和 8 个平铺业务入口,不遗留本 migration 新增记录。 - [x] migration 静态测试、MySQL 空库 up/down/up 和 8→新版本→8 回退通过。 - [x] 不包含凭据、账号、个人信息、生产数据或 AutoMigrate。 ## 风险与回退 - 高风险:错误的父子关系或 Casbin 记录会造成菜单丢失、403 或越权。 - 控制:稳定 path/handle、限定删除范围、up/down 双向断言、隔离 MySQL 验证。 - 回退:执行本 migration down 恢复当前平铺导航;失败时停止,不修改共享数据库。 ## 文档影响 已更新 Gitea Wiki 的 Architecture-and-Code-Map 与 Business-Rules-and-Glossary,并同步核心镜像。
Author
Owner

开始实施 #66。

  • #59 v1 原型已验收,生产 migration 范围已由用户于 2026-08-26 确认开始。
  • 只修改新 migration 与迁移测试,不修改本机共享数据库。
  • 既有 config/local-services.yml、admin/config/settings.yml 和未跟踪截图继续隔离。
开始实施 #66。 - #59 v1 原型已验收,生产 migration 范围已由用户于 2026-08-26 确认开始。 - 只修改新 migration 与迁移测试,不修改本机共享数据库。 - 既有 `config/local-services.yml`、`admin/config/settings.yml` 和未跟踪截图继续隔离。
Author
Owner

#66 已完成生产实现,现为待验收。

实现:

  • 新增 migration 000009 的 up/down,建立四个一级分组、迁移 8 个业务入口并新增 5 个系统入口。
  • 建立 chorus_operator 的菜单、菜单 API 与 Casbin 权限基线;菜单结构、接口清单、登录日志保持只读。
  • up/down 均对未知子菜单设置失败保护;未使用 AutoMigrate,未创建或修改账号。
  • Wiki 架构与业务规则已更新并同步核心镜像。

验证:

  • go test ./migrations -count=1:通过。
  • go test ./migrations -count=1 -v:MySQL 8 隔离库空库 up/down/up 与版本 8→9→8→9 通过。
  • go test ./...:通过。
  • go vet ./...:通过。
  • python dev_scripts/harness.py check --strict:通过。
  • python dev_scripts/harness.py sync --check:通过。
  • git diff --check:通过。

环境说明:

  • 本机现有 DSN 与迁移目标库配置不一致;验证时仅在测试进程内构造指向明确隔离库 chorus_test 的 DSN。没有迁移或重置开发库 chorus,没有记录任何凭据。

提交:3cc98f2,已推送到 origin/main。

#66 已完成生产实现,现为待验收。 实现: - 新增 migration 000009 的 up/down,建立四个一级分组、迁移 8 个业务入口并新增 5 个系统入口。 - 建立 `chorus_operator` 的菜单、菜单 API 与 Casbin 权限基线;菜单结构、接口清单、登录日志保持只读。 - up/down 均对未知子菜单设置失败保护;未使用 AutoMigrate,未创建或修改账号。 - Wiki 架构与业务规则已更新并同步核心镜像。 验证: - `go test ./migrations -count=1`:通过。 - `go test ./migrations -count=1 -v`:MySQL 8 隔离库空库 up/down/up 与版本 8→9→8→9 通过。 - `go test ./...`:通过。 - `go vet ./...`:通过。 - `python dev_scripts/harness.py check --strict`:通过。 - `python dev_scripts/harness.py sync --check`:通过。 - `git diff --check`:通过。 环境说明: - 本机现有 DSN 与迁移目标库配置不一致;验证时仅在测试进程内构造指向明确隔离库 `chorus_test` 的 DSN。没有迁移或重置开发库 `chorus`,没有记录任何凭据。 提交:`3cc98f2`,已推送到 `origin/main`。
Author
Owner

归档闭环完成:

  • Wiki 任务归档:Task-66-建立管理端四分组菜单与权限-migration
  • revision:7f2b4b75a0377193e937a5f5c1fac28720e95762
  • 核心 Wiki 镜像检查:通过
  • 实现提交:3cc98f2,本地 main 与 origin/main 一致
  • 工单状态:待验收,保持开启

工作区仅剩任务外的本机配置与截图,未纳入提交。

归档闭环完成: - Wiki 任务归档:Task-66-建立管理端四分组菜单与权限-migration - revision:`7f2b4b75a0377193e937a5f5c1fac28720e95762` - 核心 Wiki 镜像检查:通过 - 实现提交:`3cc98f2`,本地 `main` 与 `origin/main` 一致 - 工单状态:待验收,保持开启 工作区仅剩任务外的本机配置与截图,未纳入提交。
Author
Owner

用户于 2026-08-26 明确确认 #66 验收通过。实现、测试、提交和 Wiki revision 证据沿用既有最终证据评论;没有新的长期事实变化,不重复同步 Wiki。既有任务快照作为历史兼容内容保留,不再更新或导出。

用户于 2026-08-26 明确确认 #66 验收通过。实现、测试、提交和 Wiki revision 证据沿用既有最终证据评论;没有新的长期事实变化,不重复同步 Wiki。既有任务快照作为历史兼容内容保留,不再更新或导出。
ila closed this issue 2026-08-26 21:54:04 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/chorus#66