# Tasks - [x] Task 1: 修复 MenuService 写入键映射 - [x] 1.1 阅读 menu.service.ts,确认 create()/update() 中 snake_case 键的位置 - [x] 1.2 将 create() 与 update() 写入 Sequelize 的键改为实体 camelCase 属性名,并确保父子菜单 parentId=null 与 visible 处理逻辑不变 - [x] 1.3 后端 `npx tsc --noEmit` 通过 - [x] Task 2: 修复 sys_menu 自增序列失步(新增菜单 500 的根因) - [x] 2.1 定位根因:列默认值指向 sys_menu_id_seq1 且停留在 2(显式 id 插入不推进序列),与已存在 id 冲突 - [x] 2.2 生产库一次性同步序列(setval 到 max(id)=64),并顺带核对 sys_role/sys_user 序列 - [x] 2.3 db_seed.sql 全部 setval 改为 pg_get_serial_sequence() 形式,兼容不同环境序列名 - [x] Task 3: 验证 - [x] 3.1 接口自测:PUT /api/menus/:id 修改菜单名称后重新 GET 树,名称已持久化 - [x] 3.2 接口自测:POST /api/menus 新增菜单返回 200 且树中出现新菜单(自测后清理测试数据) - [x] 3.3 浏览器验证:菜单管理页编辑名称保存后树实时刷新、刷新页面后保持 # Task Dependencies - [Task 2][Task 3] depend on [Task 1]