/* meetings.js — 생산회의록 목록 */
let canEdit = false;
document.addEventListener('DOMContentLoaded', async () => {
const ok = await initAuth();
if (!ok) return;
document.querySelector('.fade-in').classList.add('visible');
const role = currentUser?.role || '';
canEdit = ['support_team', 'admin', 'system', 'system admin'].includes(role);
if (canEdit) document.getElementById('btnNewMeeting').classList.remove('hidden');
// Year filter
const yearSel = document.getElementById('yearFilter');
const now = new Date();
for (let y = now.getFullYear() - 2; y <= now.getFullYear() + 1; y++) {
const opt = document.createElement('option');
opt.value = y; opt.textContent = y + '년';
if (y === now.getFullYear()) opt.selected = true;
yearSel.appendChild(opt);
}
document.getElementById('monthFilter').value = String(now.getMonth() + 1);
yearSel.addEventListener('change', loadMeetings);
document.getElementById('monthFilter').addEventListener('change', loadMeetings);
document.getElementById('searchInput').addEventListener('input', debounce(loadMeetings, 300));
document.getElementById('btnNewMeeting').addEventListener('click', () => {
location.href = '/pages/work/meeting-detail.html';
});
await Promise.all([loadMeetings(), loadActionItems()]);
});
async function loadMeetings() {
try {
const year = document.getElementById('yearFilter').value;
const month = document.getElementById('monthFilter').value;
const search = document.getElementById('searchInput').value.trim();
let url = `/meetings?year=${year}`;
if (month) url += `&month=${month}`;
if (search) url += `&search=${encodeURIComponent(search)}`;
const res = await api(url);
renderMeetings(res.data || []);
} catch (err) {
showToast('회의록 목록 로드 실패: ' + err.message, 'error');
}
}
function renderMeetings(meetings) {
const list = document.getElementById('meetingList');
const empty = document.getElementById('emptyState');
if (meetings.length === 0) {
list.innerHTML = '';
empty.classList.remove('hidden');
return;
}
empty.classList.add('hidden');
list.innerHTML = meetings.map(m => {
const statusBadge = m.status === 'published'
? '발행'
: '초안';
return `
${escapeHtml(m.title)}