Phase 14.5 구현: 회의 모드 고도화 — 다중 문서 생성/편집/내보내기
PLAUD 수준의 기능 확장: - 전사 편집: 인라인 편집 + 원본 보존 + 수정됨 표시(점선 밑줄) - 다중 문서 생성: 회의록/보고서/아이디어노트/커스텀 템플릿 - MD 에디터: 렌더링/편집 토글 (react-markdown + remark-gfm) - 상세 페이지 리디자인: 풀스크린 탭 전환 구조 - 내보내기: MD, PDF, TXT, DOCX 4종 (docx 패키지) - 커스텀 프롬프트 템플릿 저장/재사용 (electron-store) - SSOT: 마크다운 파싱 유틸 추출, 후처리에서 자동 문서 생성 제거 DB: meeting_documents 테이블 + edited_transcript 컬럼 IPC: 8+4 채널, 서비스 2개(MeetingModeService 확장 + MeetingDocTemplateService 신규) UI: 8개 신규 컴포넌트 (meeting/ 디렉토리), 12개 locale i18n
This commit is contained in:
parent
6197ceb132
commit
d4928ffa60
38 changed files with 4791 additions and 438 deletions
63
src/main/ipc/meeting-doc-template-handlers.ts
Normal file
63
src/main/ipc/meeting-doc-template-handlers.ts
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
// src/main/ipc/meeting-doc-template-handlers.ts
|
||||
// Phase 14.5: Meeting Document Template IPC 핸들러
|
||||
|
||||
import { ipcMain } from 'electron'
|
||||
import { IPC_CHANNELS } from '@shared/ipc-channels'
|
||||
import { ErrorCode, ipcSuccess, ipcError } from '@shared/errors'
|
||||
import { getMeetingDocTemplateService } from '../services/MeetingDocTemplateService'
|
||||
import { getLogger } from '../services/LoggerService'
|
||||
import type {
|
||||
CreateMeetingDocTemplateParams,
|
||||
UpdateMeetingDocTemplateParams,
|
||||
DeleteMeetingDocTemplateParams,
|
||||
} from '@shared/types'
|
||||
|
||||
const logger = getLogger('meeting-doc-template-handlers')
|
||||
|
||||
export function registerMeetingDocTemplateHandlers(): void {
|
||||
const ch = IPC_CHANNELS.MEETING_DOC_TEMPLATE
|
||||
|
||||
ipcMain.handle(ch.GET_ALL, () => {
|
||||
try {
|
||||
return ipcSuccess(getMeetingDocTemplateService().getAll())
|
||||
} catch (err) {
|
||||
return ipcError(ErrorCode.UnknownError, err instanceof Error ? err.message : String(err))
|
||||
}
|
||||
})
|
||||
|
||||
ipcMain.handle(ch.CREATE, (_event, params: CreateMeetingDocTemplateParams) => {
|
||||
try {
|
||||
const result = getMeetingDocTemplateService().create(params)
|
||||
return ipcSuccess(result)
|
||||
} catch (err) {
|
||||
logger.error(`meetingDocTemplate create 실패: ${err instanceof Error ? err.message : String(err)}`)
|
||||
return ipcError(ErrorCode.UnknownError, err instanceof Error ? err.message : String(err))
|
||||
}
|
||||
})
|
||||
|
||||
ipcMain.handle(ch.UPDATE, (_event, params: UpdateMeetingDocTemplateParams) => {
|
||||
try {
|
||||
const result = getMeetingDocTemplateService().update(params)
|
||||
return ipcSuccess(result)
|
||||
} catch (err) {
|
||||
return ipcError(
|
||||
ErrorCode.MeetingDocTemplateNotFound,
|
||||
err instanceof Error ? err.message : String(err),
|
||||
)
|
||||
}
|
||||
})
|
||||
|
||||
ipcMain.handle(ch.DELETE, (_event, params: DeleteMeetingDocTemplateParams) => {
|
||||
try {
|
||||
getMeetingDocTemplateService().delete(params.id)
|
||||
return ipcSuccess(undefined)
|
||||
} catch (err) {
|
||||
return ipcError(
|
||||
ErrorCode.MeetingDocTemplateNotFound,
|
||||
err instanceof Error ? err.message : String(err),
|
||||
)
|
||||
}
|
||||
})
|
||||
|
||||
logger.info('Meeting Doc Template IPC handlers registered')
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue