修复bootstrap数据初始化:清理重复菜单项,避免主键冲突

- 移除DEFAULT_MENUS中id 24-28的5条重复菜单项
- 修复id=29冲突(菜单编辑与业绩报表),重编号为30+
- seed_menus()插入新菜单时不再强制指定id,避免与已有记录冲突

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
taiyi 2026-05-29 09:48:22 +08:00
parent ae3ec0b269
commit 1053e96234
2 changed files with 10 additions and 14 deletions

View File

@ -60,19 +60,14 @@ DEFAULT_MENUS = [
{"id": 27, "parent_id": 3, "menu_name": "角色授权", "menu_path": "", "menu_type": "button", "permission_code": "system:role:assign-menus", "icon": "", "sort_no": 27, "status": 1},
{"id": 28, "parent_id": 3, "menu_name": "菜单新增", "menu_path": "", "menu_type": "button", "permission_code": "system:menu:create", "icon": "", "sort_no": 28, "status": 1},
{"id": 29, "parent_id": 3, "menu_name": "菜单编辑", "menu_path": "", "menu_type": "button", "permission_code": "system:menu:update", "icon": "", "sort_no": 29, "status": 1},
{"id": 24, "parent_id": 3, "menu_name": "角色新增", "menu_path": "", "menu_type": "button", "permission_code": "system:role:create", "icon": "", "sort_no": 24, "status": 1},
{"id": 25, "parent_id": 3, "menu_name": "角色编辑", "menu_path": "", "menu_type": "button", "permission_code": "system:role:update", "icon": "", "sort_no": 25, "status": 1},
{"id": 26, "parent_id": 3, "menu_name": "角色授权", "menu_path": "", "menu_type": "button", "permission_code": "system:role:assign-menus", "icon": "", "sort_no": 26, "status": 1},
{"id": 27, "parent_id": 3, "menu_name": "菜单新增", "menu_path": "", "menu_type": "button", "permission_code": "system:menu:create", "icon": "", "sort_no": 27, "status": 1},
{"id": 28, "parent_id": 3, "menu_name": "菜单编辑", "menu_path": "", "menu_type": "button", "permission_code": "system:menu:update", "icon": "", "sort_no": 28, "status": 1},
{"id": 29, "parent_id": 0, "menu_name": "业绩报表", "menu_path": "/reports", "menu_type": "page", "permission_code": "report:performance:view", "icon": "report", "sort_no": 29, "status": 1},
{"id": 30, "parent_id": 29, "menu_name": "导出业绩报表", "menu_path": "", "menu_type": "button", "permission_code": "report:performance:export", "icon": "", "sort_no": 30, "status": 1},
{"id": 31, "parent_id": 0, "menu_name": "物流轨迹", "menu_path": "/logistics", "menu_type": "page", "permission_code": "logistics:trace:list", "icon": "logistics", "sort_no": 31, "status": 1},
{"id": 32, "parent_id": 31, "menu_name": "物流轨迹新增", "menu_path": "", "menu_type": "button", "permission_code": "logistics:trace:create", "icon": "", "sort_no": 32, "status": 1},
{"id": 33, "parent_id": 0, "menu_name": "AI识别", "menu_path": "/ai", "menu_type": "page", "permission_code": "ai:recognize", "icon": "ai", "sort_no": 33, "status": 1},
{"id": 34, "parent_id": 33, "menu_name": "AI结果修正", "menu_path": "", "menu_type": "button", "permission_code": "ai:correct", "icon": "", "sort_no": 34, "status": 1},
{"id": 35, "parent_id": 4, "menu_name": "定价规则查看", "menu_path": "", "menu_type": "button", "permission_code": "master-data:list", "icon": "", "sort_no": 35, "status": 1},
{"id": 36, "parent_id": 4, "menu_name": "定价规则编辑", "menu_path": "", "menu_type": "button", "permission_code": "master-data:update", "icon": "", "sort_no": 36, "status": 1},
{"id": 30, "parent_id": 0, "menu_name": "业绩报表", "menu_path": "/reports", "menu_type": "page", "permission_code": "report:performance:view", "icon": "report", "sort_no": 29, "status": 1},
{"id": 31, "parent_id": 30, "menu_name": "导出业绩报表", "menu_path": "", "menu_type": "button", "permission_code": "report:performance:export", "icon": "", "sort_no": 30, "status": 1},
{"id": 32, "parent_id": 0, "menu_name": "物流轨迹", "menu_path": "/logistics", "menu_type": "page", "permission_code": "logistics:trace:list", "icon": "logistics", "sort_no": 31, "status": 1},
{"id": 33, "parent_id": 32, "menu_name": "物流轨迹新增", "menu_path": "", "menu_type": "button", "permission_code": "logistics:trace:create", "icon": "", "sort_no": 32, "status": 1},
{"id": 34, "parent_id": 0, "menu_name": "AI识别", "menu_path": "/ai", "menu_type": "page", "permission_code": "ai:recognize", "icon": "ai", "sort_no": 33, "status": 1},
{"id": 35, "parent_id": 34, "menu_name": "AI结果修正", "menu_path": "", "menu_type": "button", "permission_code": "ai:correct", "icon": "", "sort_no": 34, "status": 1},
{"id": 36, "parent_id": 4, "menu_name": "定价规则查看", "menu_path": "", "menu_type": "button", "permission_code": "master-data:list", "icon": "", "sort_no": 35, "status": 1},
{"id": 37, "parent_id": 4, "menu_name": "定价规则编辑", "menu_path": "", "menu_type": "button", "permission_code": "master-data:update", "icon": "", "sort_no": 36, "status": 1},
]
DEFAULT_ADMIN_USER = {

View File

@ -67,7 +67,8 @@ def seed_menus(session) -> dict[str, int]:
for item in DEFAULT_MENUS:
existed = session.execute(select(Menu).where(Menu.permission_code == item["permission_code"])).scalar_one_or_none()
if existed is None:
existed = Menu(**item)
data = {k: v for k, v in item.items() if k != "id"}
existed = Menu(**data)
session.add(existed)
session.flush()
else: