zzw
19 小时以前 ffe06be91f95ffd2459ebdb2f9130d1e38d53ea7
fix: preserve manually edited menu names
3个文件已修改
39 ■■■■■ 已修改文件
HANDOFF.md 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
requirement/交接文件_2026.10.3.md 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HANDOFF.md
@@ -905,3 +905,19 @@
- éœ€æ±‚ 26 å·²æäº¤å¹¶æŽ¨é€ï¼Œæäº¤ `f651ad5`(`fix: show full date range separator in log filters`)。需求 27 å·²æäº¤å¹¶æŽ¨é€ï¼Œæäº¤ `f9114ff`(`fix: limit equipment picker to selected X number`)。
- ä¸è¦æäº¤ `.codex-run`、Office é”æ–‡ä»¶æˆ– `emergency-repair-web/public/新建 æ–‡æœ¬æ–‡æ¡£.txt`。
- æœ¬è½®ä»£ç ã€éœ€æ±‚文件和交接记录一并提交并推送公司 Git ä»“库 `main` åˆ†æ”¯ã€‚
## 24. æ”¶å°¾å¿«ç…§ï¼ˆ2026-10-06 å‘¨ä¸€ï¼Œèœå•名称被启动初始化覆盖)
**问题与修复**
- æ‰‹å·¥æŠŠç³»ç»Ÿé…ç½®ä¸‹çš„“产品结构树管理”改为“产品结构树”后,后端重启会恢复“管理”二字。
- åŽŸå› æ˜¯ `DataInitializer.ensureMenu()` æ¯æ¬¡å¯åŠ¨éƒ½ä¼šæ‹¿ä»£ç ä¸­çš„é»˜è®¤åç§°è¦†ç›–å·²å­˜åœ¨èœå•ã€‚
- å·²æ”¹ä¸ºåªåœ¨æ–°å»ºèœå•时使用默认名称;已存在菜单只修复父节点、排序、类型和可见性,名称由菜单管理页面维护。
- æ–°å»ºæ•°æ®åº“的默认菜单名称同步改为“产品结构树”。
**主要文件**
- `emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java`
**验证结果**
- åŽç«¯ `mvn -B -DskipTests compile`、`mvn -B -DskipTests package` é€šè¿‡ã€‚
- å°†æ•°æ®åº“菜单 `id=2101493905517301763`、`url=/system/product-tree` çš„名称改为“产品结构树”后,使用新 jar é‡å¯åŽç«¯ï¼ŒæŽ¥å£å†æ¬¡æŸ¥è¯¢ä»ä¸ºâ€œäº§å“ç»“构树”。
- æ–°åŽç«¯ PID `151580`,监听 `8091`;日志:`.codex-run/backend-20261006-menu-name.out.log`、`.codex-run/backend-20261006-menu-name.err.log`。
emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java
@@ -137,7 +137,7 @@
            Long systemConfig = createMenu("system-config", system, "系统配置", null, "el-icon-s-tools", 0, 10);
            createMenu("organization", systemConfig, "组织机构", "/system/organization", null, 1, 10);
            createMenu("contractors", systemConfig, "承修单位管理", "/system/contractors", null, 1, 20);
            createMenu("product-tree", systemConfig, "产品结构树管理", "/system/product-tree", null, 1, 30);
            createMenu("product-tree", systemConfig, "产品结构树", "/system/product-tree", null, 1, 30);
            createMenu("base-equipment", systemConfig, "设备基础库管理", "/system/base-equipment", null, 1, 40);
            createMenu("engineering-majors", systemConfig, "工程专业配置", "/system/engineering-majors", null, 1, 50);
            createMenu("team-majors", systemConfig, "rk_T队专业配置", "/system/team-majors", null, 1, 60);
@@ -249,14 +249,13 @@
            menuMapper.insert(menu);
            return menu.getId();
        }
        // Existing menu names are user-managed; startup only repairs structural fields.
        boolean changed = !java.util.Objects.equals(menu.getPid(), pid)
                || !java.util.Objects.equals(menu.getName(), name)
                || !java.util.Objects.equals(menu.getSortNo(), sort)
                || !java.util.Objects.equals(menu.getMenuType(), 1)
                || !java.util.Objects.equals(menu.getVisible(), 1);
        if (changed) {
            menu.setPid(pid);
            menu.setName(name);
            menu.setMenuType(1);
            menu.setSortNo(sort);
            menu.setVisible(1);
@@ -286,7 +285,7 @@
        ensureMenu(systemConfig, "组织机构", "/system/organization", 10);
        ensureMenu(systemConfig, "承修单位管理", "/system/contractors", 20);
        ensureMenu(systemConfig, "产品结构树管理", "/system/product-tree", 30);
        ensureMenu(systemConfig, "产品结构树", "/system/product-tree", 30);
        ensureMenu(systemConfig, "设备基础库管理", "/system/base-equipment", 40);
        ensureMenu(systemConfig, "工程专业配置", "/system/engineering-majors", 50);
        ensureMenu(systemConfig, "rk_T队专业配置", "/system/team-majors", 60);
requirement/½»½ÓÎļþ_2026.10.3.md
@@ -701,3 +701,19 @@
- éœ€æ±‚ 26 å·²æäº¤å¹¶æŽ¨é€ï¼Œæäº¤ `f651ad5`;需求 27 å·²æäº¤å¹¶æŽ¨é€ï¼Œæäº¤ `f9114ff`(`fix: limit equipment picker to selected X number`)。
- æœ¬è½®ä»£ç ã€éœ€æ±‚文件和交接记录一并提交并推送公司 Git ä»“库 `main` åˆ†æ”¯ã€‚
- `.codex-run`、Office é”æ–‡ä»¶åŠ `emergency-repair-web/public/新建 æ–‡æœ¬æ–‡æ¡£.txt` ä»ä¸ºæœ¬åœ°ä¸´æ—¶æ–‡ä»¶ï¼Œä¸åº”提交。
## åå…«ã€2026-10-06 è”调修复(菜单名称被启动初始化覆盖)
| é—®é¢˜ | çŠ¶æ€ | å®žçŽ°ä¸ŽéªŒè¯ |
| --- | --- | --- |
| ç³»ç»Ÿé…ç½®ä¸‹â€œäº§å“ç»“构树管理”手工改为“产品结构树”后,后端重启又加回“管理” | å·²ä¿®å¤ | `DataInitializer.ensureMenu()` ä¸å†è¦†ç›–已存在菜单名称;新建菜单默认名称改为“产品结构树”;改名后重启新 jar åç§°ä¿æŒä¸å˜ |
### 18.1 ä¸»è¦å˜æ›´æ–‡ä»¶
- `emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java`
### 18.2 éªŒè¯ç»“æžœ
- åŽç«¯ `mvn -B -DskipTests compile`、`mvn -B -DskipTests package` é€šè¿‡ã€‚
- èœå•记录 `id=2101493905517301763`、`url=/system/product-tree` æ”¹åä¸ºâ€œäº§å“ç»“构树”后,新 jar é‡å¯å¹¶å†æ¬¡æŸ¥è¯¢ï¼Œåç§°ä»ä¸ºâ€œäº§å“ç»“构树”。
- å½“前后端 PID `151580`,监听 `http://127.0.0.1:8091`;前端仍监听 `http://localhost:8082`。