import { apiClient } from "./client"; export interface MenuItem { objid?: string; OBJID?: string; parent_obj_id?: string; PARENT_OBJ_ID?: string; menu_name_kor?: string; MENU_NAME_KOR?: string; menu_url?: string; MENU_URL?: string; menu_desc?: string; MENU_DESC?: string; seq?: number; SEQ?: number; menu_type?: string; MENU_TYPE?: string; status?: string; STATUS?: string; lev?: number; LEV?: number; lpad_menu_name_kor?: string; LPAD_MENU_NAME_KOR?: string; status_title?: string; STATUS_TITLE?: string; writer?: string; WRITER?: string; regdate?: string; REGDATE?: string; company_code?: string; COMPANY_CODE?: string; company_name?: string; COMPANY_NAME?: string; // 다국어 관련 필드 추가 lang_key?: string; LANG_KEY?: string; lang_key_desc?: string; LANG_KEY_DESC?: string; translated_name?: string; TRANSLATED_NAME?: string; translated_desc?: string; TRANSLATED_DESC?: string; } export interface MenuFormData { objid?: string; parentObjId: string; menuNameKor: string; menuUrl: string; menuDesc: string; seq: number; menuType: string; status: string; companyCode: string; langKey?: string; // 다국어 키 추가 } export interface LangKey { keyId: number; companyCode: string; menuName: string; langKey: string; description: string; isActive: string; createdDate: string; createdBy: string; updatedDate: string; updatedBy: string; } export interface ApiResponse { success: boolean; data?: T; message: string; errorCode?: string; } export const menuApi = { // 관리자 메뉴 목록 조회 (좌측 사이드바용 - active만 표시) getAdminMenus: async (): Promise> => { const response = await apiClient.get("/admin/menus", { params: { menuType: "0" } }); if (response.data.success && response.data.data && response.data.data.length > 0) { } return response.data; }, // 사용자 메뉴 목록 조회 (좌측 사이드바용 - active만 표시) getUserMenus: async (): Promise> => { const response = await apiClient.get("/admin/menus", { params: { menuType: "1" } }); return response.data; }, // 관리자 메뉴 목록 조회 (메뉴 관리 화면용 - 모든 상태 표시) getAdminMenusForManagement: async (): Promise> => { const response = await apiClient.get("/admin/menus", { params: { menuType: "0", includeInactive: "true" } }); return response.data; }, // 사용자 메뉴 목록 조회 (메뉴 관리 화면용 - 모든 상태 표시) getUserMenusForManagement: async (): Promise> => { const response = await apiClient.get("/admin/menus", { params: { menuType: "1", includeInactive: "true" } }); return response.data; }, // 메뉴 정보 조회 getMenuInfo: async (menuId: string): Promise> => { const response = await apiClient.get(`/admin/menus/${menuId}`); return response.data; }, // 메뉴 등록/수정 saveMenu: async (menuData: MenuFormData): Promise> => { const response = await apiClient.post("/admin/menus", menuData); return response.data; }, // 메뉴 수정 updateMenu: async (menuId: string, menuData: MenuFormData): Promise> => { const response = await apiClient.put(`/admin/menus/${menuId}`, menuData); return response.data; }, // 메뉴 삭제 deleteMenu: async (menuId: string): Promise> => { const response = await apiClient.delete(`/admin/menus/${menuId}`); return response.data; }, // 메뉴 일괄 삭제 deleteMenusBatch: async (menuIds: string[]): Promise> => { const response = await apiClient.delete("/admin/menus/batch", { data: menuIds, }); return response.data; }, // 메뉴 활성/비활성 토글 toggleMenuStatus: async (menuId: string): Promise> => { const response = await apiClient.put(`/admin/menus/${menuId}/toggle`); return response.data; }, // 메뉴 권한 그룹 목록 조회 getMenuAuthGroups: async (menuId: string): Promise> => { const response = await apiClient.get(`/admin/menus/${menuId}/auth-groups`); return response.data; }, // 다국어 키 목록 조회 getLangKeys: async (params?: { companyCode?: string; menuCode?: string; keyType?: string; }): Promise> => { try { // Node.js 백엔드의 실제 라우팅과 일치하도록 수정 const response = await apiClient.get("/multilang/keys", { params }); return response.data; } catch (error) { console.error("❌ 다국어 키 목록 조회 실패:", error); throw error; } }, };