| HANDOFF.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| emergency-repair-web/src/components/ProductTreePicker.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| requirement/交接文件_2026.10.3.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| requirement/改进20261003.txt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
HANDOFF.md
@@ -853,7 +853,6 @@ **æ¥ææ³¨æ** - ä¸è¦æäº¤ `.codex-run`ãOffice éæä»¶æ `emergency-repair-web/public/æ°å»º ææ¬ææ¡£.txt`ã - æ¬è½®ä»£ç ãéæ±æä»¶å交æ¥è®°å½ä¸å¹¶æäº¤å¹¶æ¨éå ¬å¸ Git ä»åº `main` 忝ã ## 22. æ¶å°¾å¿«ç §ï¼2026-10-06 å¨ä¸ï¼éæ± 26 æ¥å¿æ¥æèå´åéç¬¦ï¼ **æ¬è½®å®æå 容** @@ -878,3 +877,31 @@ **æ¥ææ³¨æ** - ä¸è¦æäº¤ `.codex-run`ãOffice éæä»¶æ `emergency-repair-web/public/æ°å»º ææ¬ææ¡£.txt`ã - æ¬è½®ä»£ç ãéæ±æä»¶å交æ¥è®°å½ä¸å¹¶æäº¤å¹¶æ¨éå ¬å¸ Git ä»åº `main` 忝ã ## 23. æ¶å°¾å¿«ç §ï¼2026-10-06 å¨ä¸ï¼éæ± 27 设å¤éæ©èå´ï¼ **æ¬è½®å®æå 容** - æ°å¢æ ééæ© `rk_Xå·`ï¼äº§åç»ææ `side` ç±»åèç¹ï¼åï¼è®¾å¤éæ©å¨åªä»¥æéèç¹ä¸ºæ ¹å±ç¤ºå ¶ä¸çº§ï¼ä¸ååæ¶è¿ååå·æ ¹èç¹åæ´æ£µäº§åç»ææ ã - 设å¤éæ©å¨æå¼éå®èå´æ¶èªå¨å±å¼è¿åç `side` æ ¹èç¹ï¼é¦å±ç´æ¥æ¾ç¤ºç¬¬ä¸å±ç³»ç»èç¹ï¼åç»ç»§ç»æåé»è¾æå è½½ã - `xNo` 为空æ¶ä»è¿å宿´äº§åç»ææ ï¼ä¸å½±å产åç»ææ 管çå䏿 `rk_Xå·` çéç设å¤éæ©åºæ¯ã **ä¸»è¦æä»¶** - `emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java` - `emergency-repair-web/src/components/ProductTreePicker.vue` - `requirement/æ¹è¿20261003.txt`ï¼è¡¥å éæ± 27ï¼ **éªè¯ç»æ** - å端 `mvn -B -DskipTests compile`ã`mvn -B -DskipTests package` éè¿ï¼å端 `npm run build` éè¿ï¼ä» ææ¢æå ä½ç§¯åè¦ã - `GET /api/system/tree/product/side-roots?xNo=203` ä¿®å¤ååªè¿å 1 ä¸ªæ ¹èç¹ï¼`id=1280000000000009729`ã`name=203`ã`layer=side`ã`level=2`ï¼`201 / 203 / 301 / æµè¯T` åå«åªè¿å对åºèç¹ã - `node .codex-run/verify-req27.js` éè¿ï¼æ ¹èç¹ææ¬ä» 为 `203`ï¼èªå¨å±å¼ 1 ä¸ªæ ¹èç¹ï¼é¦å±æ¾ç¤ºå ¶ä¸çº§ç³»ç»èç¹ï¼æ ç½ç»å¼å¸¸ã - 请æ±é¾è·¯ç¡®è®¤ï¼`/api/system/tree/product/side-roots?xNo=203` åç»§ç»è¯·æ± `/api/system/tree/product/children?parentId=1280000000000009729`ãæªå¾ï¼`.codex-run/req27-side-tree.png`ã **å½åè¿è¡ç¶æï¼2026-10-06ï¼** - å端 `http://localhost:8082`ï¼PID `138164`ï¼å端 `http://127.0.0.1:8091`ï¼PID `148268`ï¼DM8 `127.0.0.1:5236`ï¼Edge CDP `9222`ã - ç»å½ `admin / admin123`ï¼æ°æ®åº `SYSDBA/SYSDBA`ï¼ä¸å¡ schema `LX`ã - å端æ¥å¿ï¼`.codex-run/backend-20261006-req27.out.log`ã`.codex-run/backend-20261006-req27.err.log`ã **æ¥ææ³¨æ** - éæ± 26 å·²æäº¤å¹¶æ¨éï¼æäº¤ `f651ad5`ï¼`fix: show full date range separator in log filters`ï¼ãéæ± 27 为æ¬è½®åç»æäº¤ã - ä¸è¦æäº¤ `.codex-run`ãOffice éæä»¶æ `emergency-repair-web/public/æ°å»º ææ¬ææ¡£.txt`ã - æ¬è½®ä»£ç ãéæ±æä»¶å交æ¥è®°å½ä¸å¹¶æäº¤å¹¶æ¨éå ¬å¸ Git ä»åº `main` 忝ã emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java
@@ -414,30 +414,11 @@ if (!StringUtils.hasText(xNo)) { return productTreeRoots(); } List<ProductNode> rootNodes = productNodeMapper.selectList(Wrappers.<ProductNode>lambdaQuery() .and(wrapper -> wrapper.isNull(ProductNode::getParentId).or().eq(ProductNode::getParentId, 0L)) .orderByAsc(ProductNode::getSortNo).orderByAsc(ProductNode::getId)); List<ProductNode> sideNodes = productNodeMapper.selectList(Wrappers.<ProductNode>lambdaQuery() .in(ProductNode::getLayer, Arrays.asList("side", "SIDE")) .eq(ProductNode::getName, xNo.trim()) .orderByAsc(ProductNode::getSortNo).orderByAsc(ProductNode::getId)); Map<Long, ProductNode> roots = uniqueProductNodes(rootNodes); Map<Long, ProductNode> sides = uniqueProductNodes(sideNodes); Set<Long> branchIds = new HashSet<>(); branchIds.addAll(roots.keySet()); branchIds.addAll(sides.keySet()); Map<Long, Map<String, Object>> rootRows = new LinkedHashMap<>(); for (ProductNode root : sortProductNodes(roots.values())) { rootRows.put(root.getId(), mapProduct(root, branchIds)); } for (ProductNode side : sortProductNodes(sides.values())) { ProductNode root = findProductRoot(side); Map<String, Object> rootRow = root == null ? null : rootRows.get(root.getId()); if (rootRow != null) { children(rootRow).add(mapProduct(side, branchIds)); } } return new ArrayList<>(rootRows.values()); return mapProductTreeNodes(sideNodes, Collections.emptySet()); } public List<String> productXNumbers() { emergency-repair-web/src/components/ProductTreePicker.vue
@@ -91,9 +91,20 @@ return map }, {}) this.keyword = '' this.$nextTick(() => { this.restoreChecked(); this.syncSelected() }) this.$nextTick(() => { this.expandLockedRoots(lockedXNo) this.restoreChecked() this.syncSelected() }) }).finally(() => { this.loading = false }) }, expandLockedRoots(lockedXNo) { if (!lockedXNo || !this.$refs.tree) return this.tree.forEach(node => { const treeNode = this.$refs.tree.getNode(node.id) if (treeNode) treeNode.expand() }) }, loadNode(node, resolve) { if (!node || !node.data || !node.data.id) { resolve([]) requirement/½»½ÓÎļþ_2026.10.3.md
@@ -627,7 +627,6 @@ - å®å·¥æ¥é å½ååªå±ç¤ºå·²æ `T_COMPLETION_INFO` å®å·¥å¡«æ¥è®°å½ç派工åï¼å¹¶ä¸æ¥å£æªå页ã - æ¬è½®ä»£ç ãéæ±æä»¶å交æ¥è®°å½ä¸å¹¶æäº¤å¹¶æ¨éå ¬å¸ Git ä»åº `main` 忝ã - `.codex-run`ãOffice éæä»¶å `emergency-repair-web/public/æ°å»º ææ¬ææ¡£.txt` ä»ä¸ºæ¬å°ä¸´æ¶æä»¶ï¼ä¸åºæäº¤ã ## åäºã2026-10-06 èè°æ¶å°¾ï¼éæ± 21 æé设置èå´åæ¢ï¼ | åºå· | éæ±è¡¥å | ç¶æ | å®ç°ä¸éªè¯ | @@ -676,3 +675,29 @@ - å½åè¿è¡ï¼å端 `http://localhost:8082`ï¼å端 `http://127.0.0.1:8091`ï¼DM8 `127.0.0.1:5236`ï¼Edge CDP `9222`ãç»å½ `admin / admin123`ã - æ¬è½®ä»£ç ãéæ±æä»¶å交æ¥è®°å½ä¸å¹¶æäº¤å¹¶æ¨éå ¬å¸ Git ä»åº `main` 忝ã - `.codex-run`ãOffice éæä»¶å `emergency-repair-web/public/æ°å»º ææ¬ææ¡£.txt` ä»ä¸ºæ¬å°ä¸´æ¶æä»¶ï¼ä¸åºæäº¤ã ## åä¸ã2026-10-06 èè°æ¶å°¾ï¼éæ± 27 设å¤éæ©èå´ï¼ | åºå· | éæ± | ç¶æ | å®ç°ä¸éªè¯ | | --- | --- | --- | --- | | 27 | æ°å¢æ ééæ© `rk_Xå·` åï¼è®¾å¤éæ©å¨åºåªæ¾ç¤ºæé `side` èç¹çä¸çº§ | 已宿 | å端åªè¿åæé `side` èç¹ä½ä¸ºæ ¹ï¼å端èªå¨å±å¼è¯¥æ ¹èç¹å¹¶ç»§ç»æå è½½ä¸çº§ï¼æ¥å£ä¸æµè§å¨éªè¯éè¿ | ### 17.1 主è¦åæ´æä»¶ - `emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java` - `emergency-repair-web/src/components/ProductTreePicker.vue` - `requirement/æ¹è¿20261003.txt`ï¼è¡¥å éæ± 27ï¼ ### 17.2 éªè¯ç»æ - å端 `mvn -B -DskipTests compile`ã`mvn -B -DskipTests package` éè¿ï¼å端 `npm run build` éè¿ï¼ä» ææ¢æå ä½ç§¯åè¦ã - `GET /api/system/tree/product/side-roots?xNo=203` åªè¿å对åºç `side` æ ¹èç¹ï¼`201 / 203 / 301 / æµè¯T` ååå«éªè¯éè¿ã - `node .codex-run/verify-req27.js` éè¿ï¼æ ¹èç¹ææ¬ä» 为 `203`ï¼èªå¨å±å¼ 1 ä¸ªæ ¹èç¹ï¼æ¾ç¤ºä¸çº§ç³»ç»èç¹ï¼æ ç½ç»å¼å¸¸ã - 请æ±é¾è·¯ç¡®è®¤ï¼`side-roots?xNo=203` åè¯·æ± `children?parentId=1280000000000009729`ãæªå¾ï¼`.codex-run/req27-side-tree.png`ã ### 17.3 æ¥ææ³¨æ - å½åè¿è¡ï¼å端 `http://localhost:8082`ï¼PID `138164`ï¼å端 `http://127.0.0.1:8091`ï¼PID `148268`ï¼DM8 `127.0.0.1:5236`ï¼Edge CDP `9222`ãç»å½ `admin / admin123`ã - éæ± 26 å·²æäº¤å¹¶æ¨éï¼æäº¤ `f651ad5`ï¼éæ± 27 为æ¬è½®åç»æäº¤ã - æ¬è½®ä»£ç ãéæ±æä»¶å交æ¥è®°å½ä¸å¹¶æäº¤å¹¶æ¨éå ¬å¸ Git ä»åº `main` 忝ã - `.codex-run`ãOffice éæä»¶å `emergency-repair-web/public/æ°å»º ææ¬ææ¡£.txt` ä»ä¸ºæ¬å°ä¸´æ¶æä»¶ï¼ä¸åºæäº¤ã requirement/¸Ä½ø20261003.txt
@@ -38,4 +38,5 @@ 25ãèå管çç¼è¾æ¶ï¼åºè¯¥å¯ä»¥ä¿®æ¹ç¶èç¹ 26ãæ¥å¿ç®¡ççæ¥æç»ä»¶2ä¸ªæ¥æä¸é´é£ä¸ªâè³âæ¾ç¤ºä¸å®æ´ 27ãæ°å¢æ éé£ééäºrk_Xå·ï¼å¯¹åºäº§åç»ææ çsideç±»åï¼åï¼åé设å¤çæ¶åè¿æ¯æ¾ç¤ºæ´ä¸ªäº§åç»ææ ï¼åºè¯¥æ¾ç¤ºééèç¹çä¸çº§èç¹