// ✅ /js/load-sections.js - 확장 가능한 구조 (개선됨) import { API, getAuthHeaders } from '/js/api-config.js'; // 역할별 섹션 매핑 (쉽게 추가/수정 가능) const SECTION_MAP = { 'admin': '/components/sections/admin-sections.html', 'system': '/components/sections/admin-sections.html', 'leader': '/components/sections/leader-sections.html', 'group_leader': '/components/sections/leader-sections.html', 'support': '/components/sections/support-sections.html', 'support_team': '/components/sections/support-sections.html', 'user': '/components/sections/user-sections.html', 'worker': '/components/sections/user-sections.html' }; // 공통 섹션 (모든 사용자에게 표시) const COMMON_SECTIONS = '/components/sections/common-sections.html'; async function loadSections() { try { console.log('🔄 섹션 로딩 시작'); // 사용자 정보 확인 const token = localStorage.getItem('token'); if (!token) { console.log('❌ 토큰 없음, 로그인 페이지로 이동'); window.location.href = '/index.html'; return; } let userInfo = { role: 'user', access_level: 'worker' }; try { const payload = JSON.parse(atob(token.split('.')[1])); userInfo = { role: payload.role || 'user', access_level: payload.access_level || 'worker' }; console.log('👤 사용자 정보:', userInfo); } catch (err) { console.warn('⚠️ JWT 파싱 실패:', err); } // ✅ 컨테이너 찾기 - 더 안전한 방식 const possibleContainers = [ '#sections-container', '#admin-sections', '#user-sections', 'main[id$="-sections"]', '#content-container main' ]; let container = null; for (const selector of possibleContainers) { container = document.querySelector(selector); if (container) { console.log(`✅ 컨테이너 발견: ${selector}`); break; } } if (!container) { console.error('❌ 섹션 컨테이너를 찾을 수 없습니다'); return; } container.innerHTML = '
오류: ${err.message}
잠시 후 다시 시도해주세요.
📝 오늘 등록된 작업: ${data.length}건
👥 참여 작업자: ${new Set(data.map(d => d.worker_id)).size}명
`; console.log('✅ 오늘 통계 로딩 완료'); } } catch (e) { console.error('❌ 통계 로드 실패:', e); if (todayStats) { todayStats.innerHTML = '⚠️ 통계를 불러올 수 없습니다
'; } } } // 빠른 링크 활성화 initializeQuickLinks(userInfo); } // 권한별 빠른 링크 표시/숨김 function initializeQuickLinks(userInfo) { console.log('🔗 빠른 링크 초기화'); // 권한에 따라 특정 링크 숨기기 if (userInfo.role !== 'admin' && userInfo.access_level !== 'admin') { document.querySelectorAll('.admin-only').forEach(el => { el.style.display = 'none'; console.log('🔒 관리자 전용 링크 숨김'); }); } if (userInfo.access_level !== 'group_leader') { document.querySelectorAll('.leader-only').forEach(el => { el.style.display = 'none'; console.log('🔒 그룹장 전용 링크 숨김'); }); } console.log('✅ 빠른 링크 초기화 완료'); } // 페이지 로드 시 실행 document.addEventListener('DOMContentLoaded', loadSections); // 수동 새로고침 함수 (다른 곳에서 호출 가능) window.refreshSections = loadSections;