// YYYYMMDD → YYYY.MM.DD function formatDate(d) { return d ? `${d.slice(0, 4)}.${d.slice(4, 6)}.${d.slice(6, 8)}` : '-'; } // 태그별 색상 매핑 const TAG_COLORS = { '실적': 'bg-blue-100 text-blue-700', '유증': 'bg-red-100 text-red-700', '무증': 'bg-orange-100 text-orange-700', '수주': 'bg-green-100 text-green-700', '소송': 'bg-red-100 text-red-700', 'M&A': 'bg-purple-100 text-purple-700', '지분': 'bg-indigo-100 text-indigo-700', '자사주':'bg-teal-100 text-teal-700', '경영': 'bg-gray-100 text-gray-600', 'CB/BW': 'bg-yellow-100 text-yellow-700', '공시': 'bg-gray-100 text-gray-500', }; function tagBadge(tag) { const cls = TAG_COLORS[tag] || TAG_COLORS['공시']; return `${tag}`; } async function loadDisclosures() { try { const resp = await fetch(`/api/disclosure?code=${STOCK_CODE}`); if (!resp.ok) throw new Error(); const list = await resp.json(); document.getElementById('disclosureLoading').classList.add('hidden'); if (!list || list.length === 0) { document.getElementById('disclosureEmpty').classList.remove('hidden'); return; } const ul = document.getElementById('disclosureList'); list.forEach(item => { const li = document.createElement('li'); li.className = 'py-3'; li.innerHTML = ` ${tagBadge(item.tag)} ${item.reportNm} ${formatDate(item.rceptDt)} `; ul.appendChild(li); }); ul.classList.remove('hidden'); } catch { document.getElementById('disclosureLoading').classList.add('hidden'); document.getElementById('disclosureError').classList.remove('hidden'); } } document.addEventListener('DOMContentLoaded', () => { if (typeof STOCK_CODE !== 'undefined') loadDisclosures(); });