/** * m-inbox.js — 수신함 모바일 페이지 로직 */ var currentUser = null; var issues = []; var projects = []; var filteredIssues = []; var currentIssueId = null; var statusPhotoBase64 = null; // ===== 초기화 ===== async function initialize() { currentUser = await mCheckAuth(); if (!currentUser) return; await loadProjects(); await loadIssues(); renderBottomNav('inbox'); hideLoading(); } async function loadProjects() { try { var resp = await fetch(API_BASE_URL + '/projects/', { headers: { 'Authorization': 'Bearer ' + TokenManager.getToken() } }); if (resp.ok) { projects = await resp.json(); var sel = document.getElementById('projectFilter'); sel.innerHTML = ''; projects.forEach(function (p) { sel.innerHTML += ''; }); } } catch (e) { console.error('프로젝트 로드 실패:', e); } } async function loadIssues() { try { var pid = document.getElementById('projectFilter').value; var url = API_BASE_URL + '/inbox/' + (pid ? '?project_id=' + pid : ''); var resp = await fetch(url, { headers: { 'Authorization': 'Bearer ' + TokenManager.getToken() } }); if (resp.ok) { issues = await resp.json(); filterIssues(); await loadStatistics(); } } catch (e) { console.error('수신함 로드 실패:', e); } } async function loadStatistics() { try { var todayStart = getKSTToday(); var todayNewCount = issues.filter(function (i) { var d = getKSTDate(new Date(i.report_date)); return new Date(d.getFullYear(), d.getMonth(), d.getDate()) >= todayStart; }).length; var todayProcessedCount = 0; try { var resp = await fetch(API_BASE_URL + '/inbox/statistics', { headers: { 'Authorization': 'Bearer ' + TokenManager.getToken() } }); if (resp.ok) { var s = await resp.json(); todayProcessedCount = s.today_processed || 0; } } catch (e) {} var unresolvedCount = issues.filter(function (i) { var d = getKSTDate(new Date(i.report_date)); return new Date(d.getFullYear(), d.getMonth(), d.getDate()) < todayStart; }).length; document.getElementById('todayNewCount').textContent = todayNewCount; document.getElementById('todayProcessedCount').textContent = todayProcessedCount; document.getElementById('unresolvedCount').textContent = unresolvedCount; } catch (e) { console.error('통계 로드 오류:', e); } } function filterIssues() { var pid = document.getElementById('projectFilter').value; filteredIssues = pid ? issues.filter(function (i) { return i.project_id == pid; }) : issues.slice(); filteredIssues.sort(function (a, b) { return new Date(b.report_date) - new Date(a.report_date); }); renderIssues(); } // ===== 렌더링 ===== function renderIssues() { var container = document.getElementById('issuesList'); var empty = document.getElementById('emptyState'); if (!filteredIssues.length) { container.innerHTML = ''; empty.classList.remove('hidden'); return; } empty.classList.add('hidden'); container.innerHTML = filteredIssues.map(function (issue) { var project = projects.find(function (p) { return p.id === issue.project_id; }); var photos = getPhotoPaths(issue); var photoCount = photos.length; return '