/* meeting-detail.js — 회의록 상세/작성 */ let meetingId = null; let meetingData = null; let selectedAttendees = []; // [{user_id, name, username}] let projects = []; let users = []; let canEdit = false; let isAdmin = false; let isPublished = 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); isAdmin = ['admin', 'system', 'system admin'].includes(role); // Parse URL const params = new URLSearchParams(location.search); meetingId = params.get('id'); // Load master data try { const [projRes, userRes] = await Promise.all([ api('/projects'), api('/users') ]); projects = projRes.data || []; users = (userRes.data || []).filter(u => u.is_active !== 0); } catch {} // Populate project select in item modal const projSel = document.getElementById('itemProject'); projects.forEach(p => { projSel.innerHTML += ``; }); // Populate responsible user select const respSel = document.getElementById('itemResponsible'); users.forEach(u => { respSel.innerHTML += ``; }); // Attendee search const searchInput = document.getElementById('attendeeSearch'); const resultsDiv = document.getElementById('attendeeResults'); searchInput.addEventListener('input', debounce(() => { const q = searchInput.value.trim().toLowerCase(); if (q.length < 1) { resultsDiv.classList.add('hidden'); return; } const matches = users.filter(u => !selectedAttendees.some(a => a.user_id === u.user_id) && (u.name?.toLowerCase().includes(q) || u.username?.toLowerCase().includes(q)) ).slice(0, 10); if (matches.length === 0) { resultsDiv.classList.add('hidden'); return; } resultsDiv.innerHTML = matches.map(u => `
${escapeHtml(item.content)}
${item.decision ? `결정: ${escapeHtml(item.decision)}
` : ''} ${item.action_required ? `조치: ${escapeHtml(item.action_required)}
` : ''}