diff --git a/backend-node/src/services/menuCopyService.ts b/backend-node/src/services/menuCopyService.ts index 4a9fc8bf..17ee7505 100644 --- a/backend-node/src/services/menuCopyService.ts +++ b/backend-node/src/services/menuCopyService.ts @@ -713,6 +713,7 @@ export class MenuCopyService { logger.info("\n📂 [4단계] 메뉴 복사"); const menuIdMap = await this.copyMenus( menus, + sourceMenuObjid, // 원본 최상위 메뉴 ID 전달 targetCompanyCode, screenIdMap, userId, @@ -1138,6 +1139,7 @@ export class MenuCopyService { */ private async copyMenus( menus: Menu[], + rootMenuObjid: number, targetCompanyCode: string, screenIdMap: Map, userId: string, @@ -1170,15 +1172,14 @@ export class MenuCopyService { menuIdMap.get(menu.parent_obj_id) || menu.parent_obj_id; } - // source_menu_objid 저장: 최상위 메뉴는 원본 ID, 하위 메뉴는 최상위의 원본 ID - const sourceMenuObjid = - !menu.parent_obj_id || menu.parent_obj_id === 0 - ? menu.objid // 최상위 메뉴: 자신의 ID가 원본 - : null; // 하위 메뉴: NULL (최상위만 추적) + // source_menu_objid 저장: 원본 최상위 메뉴만 저장 (덮어쓰기 식별용) + // BigInt 타입이 문자열로 반환될 수 있으므로 문자열로 변환 후 비교 + const isRootMenu = String(menu.objid) === String(rootMenuObjid); + const sourceMenuObjid = isRootMenu ? menu.objid : null; if (sourceMenuObjid) { logger.info( - ` 📌 source_menu_objid 저장: ${sourceMenuObjid} (최상위 메뉴)` + ` 📌 source_menu_objid 저장: ${sourceMenuObjid} (원본 최상위 메뉴)` ); }