67 lines
2.9 KiB
Markdown
67 lines
2.9 KiB
Markdown
# 业务菜单提升为一级菜单设计
|
||
|
||
## 目标
|
||
|
||
将“基础资料维护”、“业务管理”、“报表查询”从“系统管理”下提升为独立一级菜单,使业务入口与系统管理入口在侧边栏中并列展示。
|
||
|
||
## 目标层级与顺序
|
||
|
||
一级菜单按以下顺序展示:
|
||
|
||
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 全库清理。
|