// src/main/ipc/meeting-summary-handlers.ts // Phase 12.2: 회의록 요약 IPC 핸들러 import { ipcMain } from 'electron' import { IPC_CHANNELS } from '@d3ro/core/ipc-channels' import { ErrorCode, ipcSuccess, ipcError } from '@d3ro/core/errors' import { getMeetingSummaryService } from '../services/MeetingSummaryService' import { getLogger } from '../services/LoggerService' import type { MeetingSummarizeParams, MeetingSummaryGetParams, MeetingSummaryExportParams } from '@d3ro/core/types' const logger = getLogger('meeting-summary-handlers') export function registerMeetingSummaryHandlers(): void { ipcMain.handle( IPC_CHANNELS.MEETING_SUMMARY.SUMMARIZE, async (_event, params: MeetingSummarizeParams) => { try { const result = await getMeetingSummaryService().summarize(params.historyId) return ipcSuccess(result) } catch (err) { const msg = err instanceof Error ? err.message : String(err) logger.error('Meeting summary failed:', msg) return ipcError(ErrorCode.MeetingSummaryGenerationFailed, msg) } }, ) ipcMain.handle( IPC_CHANNELS.MEETING_SUMMARY.GET_SUMMARY, async (_event, params: MeetingSummaryGetParams) => { try { const result = getMeetingSummaryService().getSummary(params.historyId) return ipcSuccess(result) } catch (err) { const msg = err instanceof Error ? err.message : String(err) return ipcError(ErrorCode.MeetingSummaryGenerationFailed, msg) } }, ) ipcMain.handle( IPC_CHANNELS.MEETING_SUMMARY.EXPORT_MARKDOWN, async (_event, params: MeetingSummaryExportParams) => { try { const filePath = await getMeetingSummaryService().exportMarkdown(params.historyId) return ipcSuccess(filePath) } catch (err) { const msg = err instanceof Error ? err.message : String(err) logger.error('Meeting summary export failed:', msg) return ipcError(ErrorCode.MeetingSummaryExportFailed, msg) } }, ) }