From 23b3cc3821af483c0ab59d2c35940ec3bd03e2f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=84=A6=E9=BE=99=E8=A8=80?= Date: Mon, 27 Jul 2026 20:05:26 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E8=AE=A1=EF=BC=9A=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E8=8F=9C=E5=8D=95=E4=B8=80=E7=BA=A7=E5=B1=95?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...026-07-27-promote-business-menus-design.md | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 docs/superpowers/specs/2026-07-27-promote-business-menus-design.md diff --git a/docs/superpowers/specs/2026-07-27-promote-business-menus-design.md b/docs/superpowers/specs/2026-07-27-promote-business-menus-design.md new file mode 100644 index 0000000..53bdac6 --- /dev/null +++ b/docs/superpowers/specs/2026-07-27-promote-business-menus-design.md @@ -0,0 +1,66 @@ +# 业务菜单提升为一级菜单设计 + +## 目标 + +将“基础资料维护”、“业务管理”、“报表查询”从“系统管理”下提升为独立一级菜单,使业务入口与系统管理入口在侧边栏中并列展示。 + +## 目标层级与顺序 + +一级菜单按以下顺序展示: + +1. 基础资料维护(`menu_id=121`) +2. 业务管理(`menu_id=122`) +3. 报表查询(`menu_id=123`) +4. 系统管理(`menu_id=1`) +5. 系统监控(`menu_id=2`) +6. 系统工具(`menu_id=3`) + +对应的持久化字段为: + +| 菜单 ID | 菜单名称 | `parent_id` | `order_num` | +|---|---|---:|---:| +| 121 | 基础资料维护 | 0 | 1 | +| 122 | 业务管理 | 0 | 2 | +| 123 | 报表查询 | 0 | 3 | +| 1 | 系统管理 | 0 | 4 | +| 2 | 系统监控 | 0 | 5 | +| 3 | 系统工具 | 0 | 6 | + +## 架构与改动边界 + +项目的 Web 路由和侧边栏由后端 `/getRouters` 根据 `sys_menu` 动态生成,因此应修改菜单数据,不在前端增加拍平或重排逻辑。 + +本次仅调整六个目录菜单的层级和排序: + +- 保持业务子菜单、组件路径、API 和权限标识不变。 +- 保持角色菜单关联不变。 +- 不修改 APP 端。 +- 不新增依赖,不改动现有动态路由机制。 + +## SQL 与迁移设计 + +1. 同步修改 MySQL 和 PostgreSQL 初始化 SQL,使新建数据库直接得到目标层级。 +2. 保留已执行的 `20260724_pallet_workflow_mysql.sql` 历史补丁,不改写已落库迁移的语义。 +3. 新增一个 MySQL 增量补丁,同时支持“调整前”和“已调整”两种合法状态,保证可幂等重跑。 +4. 增量补丁在第一条永久 DML 前校验六个固定 ID 的菜单身份和允许的层级状态。任一 ID 缺失、被复用或稳定字段异常时,在写入前中止。 +5. 六条更新置于显式事务中,只修改 `parent_id` 和 `order_num`;执行器不得使用 `--force` 或 continue-on-error 模式。 +6. 补丁末尾输出六个目录的实际层级和排序,用于人工核对。 + +## 缓存与运行态 + +数据库更新后,不使用 Redis `FLUSHALL`。本地验证通过重新登录触发现有登录缓存失效逻辑,并使用独立查询参数核对 `/getRouters` 的新层级。 + +## 测试与验收 + +- 先增加失败契约,要求 MySQL/PostgreSQL 初始化 SQL 定义上述六个一级菜单顺序。 +- 增加增量补丁契约,覆盖写前校验、幂等性、显式事务、精确更新范围和事后查询。 +- 运行后端 SQL 契约、业务测试、Ruff 检查、前端业务契约和生产构建。 +- 数据库执行前重新创建备份,并只有在用户再次明确确认后才执行增量补丁。 +- 数据库验收必须确认六个目录均为 `parent_id=0`,排序为 `1..6`,业务子菜单数量、页面组件和权限标识不变。 + +## 不在本次范围内 + +- 业务页面的功能、样式或交互调整。 +- 普通角色的新授权或仓库/现场数据映射。 +- 历史 AI 数据库表或其他数据清理。 +- Redis 全库清理。