console.log 주석 처리 - 개발환경 정리
- menu, company, screenMng, i18n, tableMng 모듈 console 주석 처리 - 총 55개 파일 수정 - 빌드 에러 수정 완료 - 백엔드 서버 정상 작동 확인 관련 파일: - frontend/components/admin/MenuManagement.tsx - frontend/components/admin/MenuFormModal.tsx - frontend/components/admin/ScreenAssignmentTab.tsx - frontend/components/admin/CompanyTable.tsx - frontend/components/admin/MultiLang.tsx - frontend/app/(main)/admin/tableMng/page.tsx - 기타 screen 관련 컴포넌트 49개 파일
This commit is contained in:
@@ -195,7 +195,7 @@ export const MenuManagement: React.FC = () => {
|
||||
defaultTexts[key] = defaultText;
|
||||
});
|
||||
setUiTexts(defaultTexts);
|
||||
console.log("🌐 초기 기본 텍스트 설정 완료:", Object.keys(defaultTexts).length);
|
||||
// console.log("🌐 초기 기본 텍스트 설정 완료:", Object.keys(defaultTexts).length);
|
||||
};
|
||||
|
||||
// 기본 텍스트 반환 함수
|
||||
@@ -303,20 +303,20 @@ export const MenuManagement: React.FC = () => {
|
||||
|
||||
// uiTexts 상태 변경 감지
|
||||
useEffect(() => {
|
||||
console.log("🔄 uiTexts 상태 변경됨:", {
|
||||
count: Object.keys(uiTexts).length,
|
||||
sampleKeys: Object.keys(uiTexts).slice(0, 5),
|
||||
sampleValues: Object.entries(uiTexts)
|
||||
.slice(0, 3)
|
||||
.map(([k, v]) => `${k}: ${v}`),
|
||||
});
|
||||
// console.log("🔄 uiTexts 상태 변경됨:", {
|
||||
// count: Object.keys(uiTexts).length,
|
||||
// sampleKeys: Object.keys(uiTexts).slice(0, 5),
|
||||
// sampleValues: Object.entries(uiTexts)
|
||||
// .slice(0, 3)
|
||||
// .map(([k, v]) => `${k}: ${v}`),
|
||||
// });
|
||||
}, [uiTexts]);
|
||||
|
||||
// 컴포넌트 마운트 후 다국어 텍스트 강제 로드 (userLang이 아직 설정되지 않았을 수 있음)
|
||||
useEffect(() => {
|
||||
const timer = setTimeout(() => {
|
||||
if (userLang && !uiTextsLoading) {
|
||||
console.log("🔄 컴포넌트 마운트 후 다국어 텍스트 강제 로드");
|
||||
// console.log("🔄 컴포넌트 마운트 후 다국어 텍스트 강제 로드");
|
||||
loadUITexts();
|
||||
}
|
||||
}, 300); // 300ms 후 실행
|
||||
@@ -328,7 +328,7 @@ export const MenuManagement: React.FC = () => {
|
||||
useEffect(() => {
|
||||
const fallbackTimer = setTimeout(() => {
|
||||
if (!uiTextsLoading && Object.keys(uiTexts).length === 0) {
|
||||
console.log("🔄 안전장치: 컴포넌트 마운트 후 강제 다국어 텍스트 로드");
|
||||
// console.log("🔄 안전장치: 컴포넌트 마운트 후 강제 다국어 텍스트 로드");
|
||||
// 사용자 언어가 설정되지 않았을 때만 기본 텍스트 설정
|
||||
if (!userLang) {
|
||||
initializeDefaultTexts();
|
||||
@@ -378,15 +378,15 @@ export const MenuManagement: React.FC = () => {
|
||||
}, [isCompanyDropdownOpen]);
|
||||
|
||||
const loadMenus = async (showLoading = true) => {
|
||||
console.log(`📋 메뉴 목록 조회 시작 (showLoading: ${showLoading})`);
|
||||
// console.log(`📋 메뉴 목록 조회 시작 (showLoading: ${showLoading})`);
|
||||
try {
|
||||
if (showLoading) {
|
||||
setLoading(true);
|
||||
}
|
||||
await refreshMenus();
|
||||
console.log("📋 메뉴 목록 조회 성공");
|
||||
// console.log("📋 메뉴 목록 조회 성공");
|
||||
} catch (error) {
|
||||
console.error("❌ 메뉴 목록 조회 실패:", error);
|
||||
// console.error("❌ 메뉴 목록 조회 실패:", error);
|
||||
toast.error(getUITextSync("message.error.load.menu.list"));
|
||||
} finally {
|
||||
if (showLoading) {
|
||||
@@ -397,21 +397,21 @@ export const MenuManagement: React.FC = () => {
|
||||
|
||||
// 회사 목록 조회
|
||||
const loadCompanies = async () => {
|
||||
console.log("🏢 회사 목록 조회 시작");
|
||||
// console.log("🏢 회사 목록 조회 시작");
|
||||
try {
|
||||
const response = await apiClient.get("/admin/companies");
|
||||
|
||||
if (response.data.success) {
|
||||
console.log("🏢 회사 목록 응답:", response.data);
|
||||
// console.log("🏢 회사 목록 응답:", response.data);
|
||||
const companyList = response.data.data.map((company: any) => ({
|
||||
code: company.company_code || company.companyCode,
|
||||
name: company.company_name || company.companyName,
|
||||
}));
|
||||
console.log("🏢 변환된 회사 목록:", companyList);
|
||||
// console.log("🏢 변환된 회사 목록:", companyList);
|
||||
setCompanies(companyList);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("❌ 회사 목록 조회 실패:", error);
|
||||
// console.error("❌ 회사 목록 조회 실패:", error);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -421,7 +421,7 @@ export const MenuManagement: React.FC = () => {
|
||||
|
||||
// userLang이 설정되지 않았으면 기본값 설정
|
||||
if (!userLang) {
|
||||
console.log("🌐 사용자 언어가 설정되지 않음, 기본값 설정");
|
||||
// console.log("🌐 사용자 언어가 설정되지 않음, 기본값 설정");
|
||||
const defaultTexts: Record<string, string> = {};
|
||||
MENU_MANAGEMENT_LANG_KEYS.forEach((key) => {
|
||||
defaultTexts[key] = getDefaultText(key); // 기본 한국어 텍스트 사용
|
||||
@@ -432,7 +432,7 @@ export const MenuManagement: React.FC = () => {
|
||||
|
||||
// 사용자 언어가 설정된 경우, 기존 uiTexts가 비어있으면 기본 텍스트로 초기화
|
||||
if (Object.keys(uiTexts).length === 0) {
|
||||
console.log("🌐 기존 uiTexts가 비어있음, 기본 텍스트로 초기화");
|
||||
// console.log("🌐 기존 uiTexts가 비어있음, 기본 텍스트로 초기화");
|
||||
const defaultTexts: Record<string, string> = {};
|
||||
MENU_MANAGEMENT_LANG_KEYS.forEach((key) => {
|
||||
defaultTexts[key] = getDefaultText(key);
|
||||
@@ -440,14 +440,14 @@ export const MenuManagement: React.FC = () => {
|
||||
setUiTexts(defaultTexts);
|
||||
}
|
||||
|
||||
console.log("🌐 UI 다국어 텍스트 로드 시작", {
|
||||
userLang,
|
||||
apiParams: {
|
||||
companyCode: "*",
|
||||
menuCode: "menu.management",
|
||||
userLang: userLang,
|
||||
},
|
||||
});
|
||||
// console.log("🌐 UI 다국어 텍스트 로드 시작", {
|
||||
// userLang,
|
||||
// apiParams: {
|
||||
// companyCode: "*",
|
||||
// menuCode: "menu.management",
|
||||
// userLang: userLang,
|
||||
// },
|
||||
// });
|
||||
setUiTextsLoading(true);
|
||||
|
||||
try {
|
||||
@@ -467,28 +467,28 @@ export const MenuManagement: React.FC = () => {
|
||||
|
||||
if (response.data.success) {
|
||||
const translations = response.data.data;
|
||||
console.log("🌐 배치 다국어 텍스트 응답:", translations);
|
||||
// console.log("🌐 배치 다국어 텍스트 응답:", translations);
|
||||
|
||||
// 번역 결과를 상태에 저장 (기존 uiTexts와 병합)
|
||||
const mergedTranslations = { ...uiTexts, ...translations };
|
||||
console.log("🔧 setUiTexts 호출 전:", {
|
||||
translationsCount: Object.keys(translations).length,
|
||||
mergedCount: Object.keys(mergedTranslations).length,
|
||||
});
|
||||
// console.log("🔧 setUiTexts 호출 전:", {
|
||||
// translationsCount: Object.keys(translations).length,
|
||||
// mergedCount: Object.keys(mergedTranslations).length,
|
||||
// });
|
||||
setUiTexts(mergedTranslations);
|
||||
console.log("🔧 setUiTexts 호출 후 - mergedTranslations:", mergedTranslations);
|
||||
// console.log("🔧 setUiTexts 호출 후 - mergedTranslations:", mergedTranslations);
|
||||
|
||||
// 번역 캐시에 저장 (다른 컴포넌트에서도 사용할 수 있도록)
|
||||
setTranslationCache(userLang, mergedTranslations);
|
||||
} else {
|
||||
console.error("❌ 다국어 텍스트 배치 조회 실패:", response.data.message);
|
||||
// console.error("❌ 다국어 텍스트 배치 조회 실패:", response.data.message);
|
||||
// API 실패 시에도 기존 uiTexts는 유지
|
||||
console.log("🔄 API 실패로 인해 기존 uiTexts 유지");
|
||||
// console.log("🔄 API 실패로 인해 기존 uiTexts 유지");
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("❌ UI 다국어 텍스트 로드 실패:", error);
|
||||
// console.error("❌ UI 다국어 텍스트 로드 실패:", error);
|
||||
// API 실패 시에도 기존 uiTexts는 유지
|
||||
console.log("🔄 API 실패로 인해 기존 uiTexts 유지");
|
||||
// console.log("🔄 API 실패로 인해 기존 uiTexts 유지");
|
||||
} finally {
|
||||
setUiTextsLoading(false);
|
||||
}
|
||||
@@ -519,12 +519,12 @@ export const MenuManagement: React.FC = () => {
|
||||
|
||||
// 다국어 API 테스트 함수 (getUITextSync 사용)
|
||||
const testMultiLangAPI = async () => {
|
||||
console.log("🧪 다국어 API 테스트 시작");
|
||||
// console.log("🧪 다국어 API 테스트 시작");
|
||||
try {
|
||||
const text = getUITextSync("menu.management.admin");
|
||||
console.log("🧪 다국어 API 테스트 결과:", text);
|
||||
// console.log("🧪 다국어 API 테스트 결과:", text);
|
||||
} catch (error) {
|
||||
console.error("❌ 다국어 API 테스트 실패:", error);
|
||||
// console.error("❌ 다국어 API 테스트 실패:", error);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -576,14 +576,14 @@ export const MenuManagement: React.FC = () => {
|
||||
};
|
||||
|
||||
const handleEditMenu = (menuId: string) => {
|
||||
console.log("🔧 메뉴 수정 시작 - menuId:", menuId);
|
||||
// console.log("🔧 메뉴 수정 시작 - menuId:", menuId);
|
||||
|
||||
// 현재 메뉴 정보 찾기
|
||||
const currentMenus = selectedMenuType === "admin" ? adminMenus : userMenus;
|
||||
const menuToEdit = currentMenus.find((menu) => (menu.objid || menu.OBJID) === menuId);
|
||||
|
||||
if (menuToEdit) {
|
||||
console.log("수정할 메뉴 정보:", menuToEdit);
|
||||
// console.log("수정할 메뉴 정보:", menuToEdit);
|
||||
|
||||
setFormData({
|
||||
menuId: menuId,
|
||||
@@ -593,15 +593,15 @@ export const MenuManagement: React.FC = () => {
|
||||
parentCompanyCode: menuToEdit.company_code || menuToEdit.COMPANY_CODE || "",
|
||||
});
|
||||
|
||||
console.log("설정된 formData:", {
|
||||
menuId: menuId,
|
||||
parentId: menuToEdit.parent_obj_id || menuToEdit.PARENT_OBJ_ID || "",
|
||||
menuType: selectedMenuType,
|
||||
level: 0,
|
||||
parentCompanyCode: menuToEdit.company_code || menuToEdit.COMPANY_CODE || "",
|
||||
});
|
||||
// console.log("설정된 formData:", {
|
||||
// menuId: menuId,
|
||||
// parentId: menuToEdit.parent_obj_id || menuToEdit.PARENT_OBJ_ID || "",
|
||||
// menuType: selectedMenuType,
|
||||
// level: 0,
|
||||
// parentCompanyCode: menuToEdit.company_code || menuToEdit.COMPANY_CODE || "",
|
||||
// });
|
||||
} else {
|
||||
console.error("수정할 메뉴를 찾을 수 없음:", menuId);
|
||||
// console.error("수정할 메뉴를 찾을 수 없음:", menuId);
|
||||
}
|
||||
|
||||
setFormModalOpen(true);
|
||||
@@ -640,31 +640,31 @@ export const MenuManagement: React.FC = () => {
|
||||
setDeleting(true);
|
||||
try {
|
||||
const menuIds = Array.from(selectedMenus);
|
||||
console.log("삭제할 메뉴 IDs:", menuIds);
|
||||
// console.log("삭제할 메뉴 IDs:", menuIds);
|
||||
|
||||
toast.info(getUITextSync("message.menu.delete.processing"));
|
||||
|
||||
const response = await menuApi.deleteMenusBatch(menuIds);
|
||||
console.log("삭제 API 응답:", response);
|
||||
console.log("응답 구조:", {
|
||||
success: response.success,
|
||||
data: response.data,
|
||||
message: response.message,
|
||||
});
|
||||
// console.log("삭제 API 응답:", response);
|
||||
// console.log("응답 구조:", {
|
||||
// success: response.success,
|
||||
// data: response.data,
|
||||
// message: response.message,
|
||||
// });
|
||||
|
||||
if (response.success && response.data) {
|
||||
const { deletedCount, failedCount } = response.data;
|
||||
console.log("삭제 결과:", { deletedCount, failedCount });
|
||||
// console.log("삭제 결과:", { deletedCount, failedCount });
|
||||
|
||||
// 선택된 메뉴 초기화
|
||||
setSelectedMenus(new Set());
|
||||
|
||||
// 메뉴 목록 즉시 새로고침 (로딩 상태 없이)
|
||||
console.log("메뉴 목록 새로고침 시작");
|
||||
// console.log("메뉴 목록 새로고침 시작");
|
||||
await loadMenus(false);
|
||||
// 전역 메뉴 상태도 업데이트
|
||||
await refreshMenus();
|
||||
console.log("메뉴 목록 새로고침 완료");
|
||||
// console.log("메뉴 목록 새로고침 완료");
|
||||
|
||||
// 삭제 결과 메시지
|
||||
if (failedCount === 0) {
|
||||
@@ -678,11 +678,11 @@ export const MenuManagement: React.FC = () => {
|
||||
);
|
||||
}
|
||||
} else {
|
||||
console.error("삭제 실패:", response);
|
||||
// console.error("삭제 실패:", response);
|
||||
toast.error(response.message || "메뉴 삭제에 실패했습니다.");
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("메뉴 삭제 중 오류:", error);
|
||||
// console.error("메뉴 삭제 중 오류:", error);
|
||||
toast.error(getUITextSync("message.menu.delete.failed"));
|
||||
} finally {
|
||||
setDeleting(false);
|
||||
@@ -718,7 +718,7 @@ export const MenuManagement: React.FC = () => {
|
||||
toast.error(response.message);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("메뉴 상태 토글 오류:", error);
|
||||
// console.error("메뉴 상태 토글 오류:", error);
|
||||
toast.error(getUITextSync("message.menu.status.toggle.failed"));
|
||||
}
|
||||
};
|
||||
@@ -785,15 +785,15 @@ export const MenuManagement: React.FC = () => {
|
||||
const userMenusCount = useMemo(() => userMenus?.length || 0, [userMenus]);
|
||||
|
||||
// 디버깅을 위한 간단한 상태 표시
|
||||
console.log("🔍 MenuManagement 렌더링 상태:", {
|
||||
loading,
|
||||
uiTextsLoading,
|
||||
uiTextsCount,
|
||||
adminMenusCount,
|
||||
userMenusCount,
|
||||
selectedMenuType,
|
||||
userLang,
|
||||
});
|
||||
// console.log("🔍 MenuManagement 렌더링 상태:", {
|
||||
// loading,
|
||||
// uiTextsLoading,
|
||||
// uiTextsCount,
|
||||
// adminMenusCount,
|
||||
// userMenusCount,
|
||||
// selectedMenuType,
|
||||
// userLang,
|
||||
// });
|
||||
|
||||
if (loading) {
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user