Files
ShiErFeng/docs/superpowers/specs/2026-07-27-promote-business-menus-design.md
T

2.9 KiB
Raw Blame History

业务菜单提升为一级菜单设计

目标

将“基础资料维护”、“业务管理”、“报表查询”从“系统管理”下提升为独立一级菜单,使业务入口与系统管理入口在侧边栏中并列展示。

目标层级与顺序

一级菜单按以下顺序展示:

  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 全库清理。