// /js/user-dashboard.js import { getUser } from './auth.js'; import { apiGet } from './api-helper.js'; // 개선된 api-helper를 사용합니다. /** * API를 호출하여 오늘의 작업 일정을 불러와 화면에 표시합니다. */ async function loadTodaySchedule() { const scheduleContainer = document.getElementById('today-schedule'); scheduleContainer.innerHTML = '

📅 오늘의 작업 일정을 불러오는 중...

'; try { // 예시: /api/dashboard/today-schedule 엔드포인트에서 데이터를 가져옵니다. // 실제 엔드포인트는 백엔드 구현에 따라 달라질 수 있습니다. const scheduleData = await apiGet('/dashboard/today-schedule'); if (scheduleData && scheduleData.length > 0) { const scheduleHtml = scheduleData.map(item => `
${item.time} ${item.task_name} ${item.status_kor}
`).join(''); scheduleContainer.innerHTML = scheduleHtml; } else { scheduleContainer.innerHTML = '

오늘 예정된 작업이 없습니다.

'; } } catch (error) { console.error('오늘의 작업 일정 로드 실패:', error); scheduleContainer.innerHTML = '

일정 정보를 불러오는 데 실패했습니다.

'; } } /** * API를 호출하여 현재 사용자의 작업 통계를 불러와 화면에 표시합니다. */ async function loadWorkStats() { const statsContainer = document.getElementById('work-stats'); statsContainer.innerHTML = '

📈 내 작업 현황을 불러오는 중...

'; try { // 예시: /api/dashboard/my-stats 엔드포인트에서 데이터를 가져옵니다. const statsData = await apiGet('/dashboard/my-stats'); if (statsData) { const statsHtml = `
이번 주 작업 시간: ${statsData.weekly_hours || 0} 시간
이번 달 작업 시간: ${statsData.monthly_hours || 0} 시간
완료한 작업 수: ${statsData.completed_tasks || 0} 건
`; statsContainer.innerHTML = statsHtml; } else { statsContainer.innerHTML = '

표시할 통계 정보가 없습니다.

'; } } catch (error) { console.error('작업 통계 로드 실패:', error); statsContainer.innerHTML = '

통계 정보를 불러오는 데 실패했습니다.

'; } } /** * 환영 메시지를 사용자 이름으로 개인화합니다. */ function personalizeWelcome() { // 전역 변수 대신 auth.js 모듈을 통해 사용자 정보를 가져옵니다. const user = getUser(); if (user) { const welcomeEl = document.getElementById('welcome-message'); if (welcomeEl) { welcomeEl.textContent = `${user.name || user.username}님, 환영합니다! 오늘 하루도 안전하게 작업하세요.`; } } } // 페이지 초기화 함수 function initializeDashboard() { personalizeWelcome(); loadTodaySchedule(); loadWorkStats(); } // DOM이 로드되면 대시보드 초기화를 시작합니다. document.addEventListener('DOMContentLoaded', initializeDashboard);