import { query, queryOne } from '../../../utils/db' /** * 회의록 상세 조회 * GET /api/meeting/[id]/detail */ export default defineEventHandler(async (event) => { const meetingId = Number(getRouterParam(event, 'id')) if (!meetingId) { throw createError({ statusCode: 400, message: '회의록 ID가 필요합니다.' }) } // 회의록 기본 정보 const meeting = await queryOne(` SELECT m.*, p.project_name, e.employee_name as author_name, e.employee_email as author_email FROM wr_meeting m LEFT JOIN wr_project_info p ON m.project_id = p.project_id LEFT JOIN wr_employee_info e ON m.author_id = e.employee_id WHERE m.meeting_id = $1 `, [meetingId]) if (!meeting) { throw createError({ statusCode: 404, message: '회의록을 찾을 수 없습니다.' }) } // 참석자 목록 const attendees = await query(` SELECT a.attendee_id, a.employee_id, e.employee_name, e.employee_email, e.company, a.external_name, a.external_company FROM wr_meeting_attendee a LEFT JOIN wr_employee_info e ON a.employee_id = e.employee_id WHERE a.meeting_id = $1 ORDER BY a.attendee_id `, [meetingId]) // 안건 목록 (AI 분석 결과) const agendas = await query(` SELECT * FROM wr_meeting_agenda WHERE meeting_id = $1 ORDER BY agenda_no `, [meetingId]) return { meeting: { meetingId: meeting.meeting_id, meetingTitle: meeting.meeting_title, meetingType: meeting.meeting_type, projectId: meeting.project_id, projectName: meeting.project_name, meetingDate: meeting.meeting_date, startTime: meeting.start_time, endTime: meeting.end_time, location: meeting.location, rawContent: meeting.raw_content, aiSummary: meeting.ai_summary, aiStatus: meeting.ai_status, aiProcessedAt: meeting.ai_processed_at, aiConfirmedAt: meeting.ai_confirmed_at, authorId: meeting.author_id, authorName: meeting.author_name, authorEmail: meeting.author_email, createdAt: meeting.created_at, updatedAt: meeting.updated_at }, attendees: attendees.map((a: any) => ({ attendeeId: a.attendee_id, employeeId: a.employee_id, employeeName: a.employee_name, employeeEmail: a.employee_email, company: a.company, externalName: a.external_name, externalCompany: a.external_company, isExternal: !a.employee_id })), agendas: agendas.map((a: any) => ({ agendaId: a.agenda_id, agendaNo: a.agenda_no, agendaTitle: a.agenda_title, agendaContent: a.agenda_content, decisionStatus: a.decision_status, decisionContent: a.decision_content })) } })