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:
leeheejin
2025-10-01 18:17:30 +09:00
parent 4202a5b310
commit 2c0dca08b4
55 changed files with 1757 additions and 1464 deletions

View File

@@ -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 (