From 3355ff4563afee14ccdf974d05fd43c13a1a227c Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 21 Nov 2025 16:10:55 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20menu=5Fobjid=3D0=20=EA=B3=B5=ED=86=B5=20?= =?UTF-8?q?=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC=20=EA=B0=92=20=EC=8A=A4?= =?UTF-8?q?=ED=82=B5=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 문제: - menu_objid = 0인 공통 카테고리 값들이 19개 스킵됨 - '⏭️ 매핑할 메뉴가 없음: menu_objid=0' 로그 반복 원인: - 삼항 연산자로 0을 할당했으나, 이후 if (newMenuObjid === undefined) 체크에서 - 0이 falsy 값이 아닌데도 undefined와 비교하여 통과하지 못함 - 실제로는 newMenuObjid가 0일 때도 continue되어 스킵됨 해결: - menu_objid = 0일 경우를 명시적으로 처리 - 0인 경우 바로 0을 할당하고 continue 없이 진행 - 0이 아닌 경우만 menuIdMap에서 찾고, undefined 체크 변경 전: const newMenuObjid = value.menu_objid === 0 ? 0 : menuIdMap.get(value.menu_objid); if (newMenuObjid === undefined) continue; // 0도 여기서 걸림! 변경 후: if (value.menu_objid === 0) { newMenuObjid = 0; // 공통 설정은 그대로 0 } else { newMenuObjid = menuIdMap.get(value.menu_objid); if (newMenuObjid === undefined) continue; // 진짜 undefined만 스킵 } 영향: - 공통 카테고리 값 19개 정상 복사 - customer_mng, item_info의 division, status, currency_code 등 정상 동작 --- backend-node/src/services/menuCopyService.ts | 34 +++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/backend-node/src/services/menuCopyService.ts b/backend-node/src/services/menuCopyService.ts index 37ef1a64..241cda9a 100644 --- a/backend-node/src/services/menuCopyService.ts +++ b/backend-node/src/services/menuCopyService.ts @@ -1648,13 +1648,18 @@ export class MenuCopyService { // 1) 카테고리 컬럼 매핑 복사 (덮어쓰기 모드) for (const mapping of settings.columnMappings) { // menu_objid = 0인 공통 설정은 그대로 0으로 유지 - const newMenuObjid = mapping.menu_objid === 0 - ? 0 - : menuIdMap.get(mapping.menu_objid); + let newMenuObjid: number | undefined; - if (newMenuObjid === undefined) { - logger.debug(` ⏭️ 매핑할 메뉴가 없음: menu_objid=${mapping.menu_objid}`); - continue; + if (mapping.menu_objid === 0) { + newMenuObjid = 0; // 공통 설정 + } else { + newMenuObjid = menuIdMap.get(mapping.menu_objid); + if (newMenuObjid === undefined) { + logger.debug( + ` ⏭️ 매핑할 메뉴가 없음: menu_objid=${mapping.menu_objid}` + ); + continue; + } } // 기존 매핑 삭제 (덮어쓰기) @@ -1708,13 +1713,18 @@ export class MenuCopyService { // 새 값 추가 for (const value of sortedValues) { // menu_objid = 0인 공통 설정은 그대로 0으로 유지 - const newMenuObjid = value.menu_objid === 0 - ? 0 - : menuIdMap.get(value.menu_objid); + let newMenuObjid: number | undefined; - if (newMenuObjid === undefined) { - logger.debug(` ⏭️ 매핑할 메뉴가 없음: menu_objid=${value.menu_objid}`); - continue; + if (value.menu_objid === 0) { + newMenuObjid = 0; // 공통 설정 + } else { + newMenuObjid = menuIdMap.get(value.menu_objid); + if (newMenuObjid === undefined) { + logger.debug( + ` ⏭️ 매핑할 메뉴가 없음: menu_objid=${value.menu_objid}` + ); + continue; + } } // 부모 ID 재매핑