From a16f7b06d541b91c0f55b844497affd4623a83ea Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Sat, 25 Oct 2025 12:25:40 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99=20=EC=8B=9C=20=EC=9E=90=EB=8F=99=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=95=84=EC=9B=83=20=EB=B0=8F=20=ED=97=A4=EB=8D=94=20=EC=95=88?= =?UTF-8?q?=EB=B3=B4=EC=9E=84=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 πŸ” Root Cause Analysis: 1. initializeApp ν•¨μˆ˜ μ •μ˜ 전에 ν˜ΈμΆœλ˜λŠ” 슀크립트 λ‘œλ”© μˆœμ„œ 문제 2. 곡톡 헀더 λͺ¨λ“ˆ λ‘œλ“œ 타이밍 이슈 3. currentUser undefined둜 μΈν•œ 연쇄 였λ₯˜ πŸ”§ Key Fixes: - initializeApp ν•¨μˆ˜ 쑴재 μ—¬λΆ€ 확인 ν›„ 호좜 - ν•¨μˆ˜ λ―Έμ •μ˜ μ‹œ 100ms μ§€μ—° ν›„ μž¬μ‹œλ„ - manualInitialize λŒ€μ•ˆ ν•¨μˆ˜ μΆ”κ°€ (μ™„μ „ν•œ fallback) - 곡톡 헀더 λͺ¨λ“ˆ λ‘œλ“œ μƒνƒœ 확인 및 μ§€μ—° μ΄ˆκΈ°ν™” - μƒμ„Έν•œ 디버깅 둜그둜 각 단계 좔적 πŸ›‘οΈ Enhanced Error Handling: - 슀크립트 λ‘œλ”© μ‹€νŒ¨ μ‹œ λŒ€μ•ˆ 경둜 제곡 - 곡톡 헀더 μ΄ˆκΈ°ν™” μ‹€νŒ¨ μ‹œ μ§€μ—° μž¬μ‹œλ„ - 각 λͺ¨λ“ˆλ³„ λ‘œλ“œ μƒνƒœ 확인 둜직 🎯 Expected Results: - νŽ˜μ΄μ§€ κ°„ 이동 μ‹œ μ•ˆμ •μ μΈ μ‚¬μš©μž μ„Έμ…˜ μœ μ§€ - 곡톡 헀더 μΌκ΄€λœ ν‘œμ‹œ - currentUser 정상 μ΄ˆκΈ°ν™” - μžλ™ λ‘œκ·Έμ•„μ›ƒ 문제 ν•΄κ²° πŸ” Debug Logs Added: - πŸš€ initializeApp ν•¨μˆ˜ 호좜 μ‹œμž‘ - πŸ”§ μˆ˜λ™ μ΄ˆκΈ°ν™” μ‹œμž‘ - βœ…/❌ 각 λͺ¨λ“ˆ λ‘œλ“œ 성곡/μ‹€νŒ¨ μƒνƒœ - πŸ”„ μ§€μ—°λœ μ΄ˆκΈ°ν™” μ‹œλ„ --- frontend/index.html | 93 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 89 insertions(+), 4 deletions(-) diff --git a/frontend/index.html b/frontend/index.html index 4533065..01a3dcc 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -446,8 +446,24 @@ console.log('πŸ” API_BASE_URL:', typeof API_BASE_URL !== 'undefined' ? API_BASE_URL : 'undefined'); console.log('🌐 ν˜„μž¬ hostname:', window.location.hostname); console.log('πŸ”— ν˜„μž¬ protocol:', window.location.protocol); - // API λ‘œλ“œ ν›„ μ΄ˆκΈ°ν™” μ‹œμž‘ - initializeApp(); + + // initializeApp ν•¨μˆ˜κ°€ μ •μ˜λ˜μ—ˆλŠ”μ§€ 확인 + if (typeof initializeApp === 'function') { + console.log('πŸš€ initializeApp ν•¨μˆ˜ 호좜 μ‹œμž‘'); + initializeApp(); + } else { + console.error('❌ initializeApp ν•¨μˆ˜κ°€ μ •μ˜λ˜μ§€ μ•ŠμŒ'); + // λŒ€μ•ˆ: 직접 μ΄ˆκΈ°ν™” 둜직 μ‹€ν–‰ + setTimeout(() => { + if (typeof initializeApp === 'function') { + console.log('πŸ”„ μ§€μ—°λœ initializeApp ν•¨μˆ˜ 호좜'); + initializeApp(); + } else { + console.error('❌ initializeApp ν•¨μˆ˜λ₯Ό 찾을 수 μ—†μŒ - μˆ˜λ™ μ΄ˆκΈ°ν™”'); + manualInitialize(); + } + }, 100); + } }; script.setAttribute('cache-control', 'no-cache, no-store, must-revalidate'); script.setAttribute('pragma', 'no-cache'); @@ -472,6 +488,62 @@ let currentPhotos = []; let issues = []; + // μˆ˜λ™ μ΄ˆκΈ°ν™” ν•¨μˆ˜ (initializeApp ν•¨μˆ˜κ°€ λ‘œλ“œλ˜μ§€ μ•Šμ„ λ•Œ μ‚¬μš©) + async function manualInitialize() { + console.log('πŸ”§ μˆ˜λ™ μ΄ˆκΈ°ν™” μ‹œμž‘'); + + // 토큰이 있으면 μ‚¬μš©μž 정보 κ°€μ Έμ˜€κΈ° + const token = localStorage.getItem('access_token'); + if (token) { + try { + // ν† ν°μœΌλ‘œ μ‚¬μš©μž 정보 κ°€μ Έμ˜€κΈ° (API 호좜) + const user = await AuthAPI.getCurrentUser(); + currentUser = user; + + // localStorage에도 λ°±μ—… μ €μž₯ + localStorage.setItem('currentUser', JSON.stringify(user)); + + // 곡톡 헀더 μ΄ˆκΈ°ν™” + console.log('πŸ”§ μˆ˜λ™ μ΄ˆκΈ°ν™” - 곡톡 헀더 μ΄ˆκΈ°ν™” μ‹œμž‘:', user); + console.log('window.commonHeader 쑴재:', !!window.commonHeader); + + if (window.commonHeader && typeof window.commonHeader.init === 'function') { + await window.commonHeader.init(user, 'issues_create'); + console.log('βœ… μˆ˜λ™ μ΄ˆκΈ°ν™” - 곡톡 헀더 μ΄ˆκΈ°ν™” μ™„λ£Œ'); + } else { + console.error('❌ μˆ˜λ™ μ΄ˆκΈ°ν™” - 곡톡 헀더 λͺ¨λ“ˆμ΄ λ‘œλ“œλ˜μ§€ μ•ŠμŒ'); + } + + // νŽ˜μ΄μ§€ μ ‘κ·Ό κΆŒν•œ 체크 (뢀적합 등둝 νŽ˜μ΄μ§€) + setTimeout(() => { + if (typeof canAccessPage === 'function' && !canAccessPage('issues_create')) { + alert('뢀적합 등둝 νŽ˜μ΄μ§€μ— μ ‘κ·Όν•  κΆŒν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€.'); + window.location.href = '/issue-view.html'; + return; + } + }, 500); + + // μ‚¬μš©μž μ •λ³΄λŠ” 곡톡 ν—€λ”μ—μ„œ ν‘œμ‹œλ¨ + document.getElementById('loginScreen').classList.add('hidden'); + document.getElementById('mainScreen').classList.remove('hidden'); + + // ν”„λ‘œμ νŠΈ λ‘œλ“œ + await loadProjects(); + + loadIssues(); + + // URL ν•΄μ‹œ 처리 + handleUrlHash(); + + } catch (error) { + console.error('μˆ˜λ™ μ΄ˆκΈ°ν™” μ‹€νŒ¨:', error); + // 토큰이 μœ νš¨ν•˜μ§€ μ•ŠμœΌλ©΄ λ‘œκ·Έμ•„μ›ƒ + localStorage.removeItem('access_token'); + localStorage.removeItem('currentUser'); + } + } + } + // API λ‘œλ“œ ν›„ μ•± μ΄ˆκΈ°ν™” async function initializeApp() { console.log('πŸš€ μ•± μ΄ˆκΈ°ν™” μ‹œμž‘'); @@ -489,8 +561,21 @@ // 곡톡 헀더 μ΄ˆκΈ°ν™” console.log('πŸ”§ 곡톡 헀더 μ΄ˆκΈ°ν™” μ‹œμž‘:', user); - await window.commonHeader.init(user, 'issues_create'); - console.log('βœ… 곡톡 헀더 μ΄ˆκΈ°ν™” μ™„λ£Œ'); + console.log('window.commonHeader 쑴재:', !!window.commonHeader); + + if (window.commonHeader && typeof window.commonHeader.init === 'function') { + await window.commonHeader.init(user, 'issues_create'); + console.log('βœ… 곡톡 헀더 μ΄ˆκΈ°ν™” μ™„λ£Œ'); + } else { + console.error('❌ 곡톡 헀더 λͺ¨λ“ˆμ΄ λ‘œλ“œλ˜μ§€ μ•ŠμŒ'); + // λŒ€μ•ˆ: κΈ°λ³Έ μ‚¬μš©μž 정보 ν‘œμ‹œ + setTimeout(() => { + if (window.commonHeader && typeof window.commonHeader.init === 'function') { + console.log('πŸ”„ μ§€μ—°λœ 곡톡 헀더 μ΄ˆκΈ°ν™”'); + window.commonHeader.init(user, 'issues_create'); + } + }, 200); + } // νŽ˜μ΄μ§€ μ ‘κ·Ό κΆŒν•œ 체크 (뢀적합 등둝 νŽ˜μ΄μ§€) setTimeout(() => {