Phase 14 구현: 회의 모드 (Meeting Mode)
실시간 녹음 + 타임스탬프 메모 + STT 전사 + LLM 구조화 회의록 + PDF/MD 내보내기. CaptionService 연동, 동시 사용 충돌 방지, 긴 회의 2-pass 요약 지원. DB 2테이블, IPC 15채널, UI 3뷰(목록/녹음/상세), 12개 locale i18n.
This commit is contained in:
parent
dd68fc9ccd
commit
d0c4f9ee53
38 changed files with 2550 additions and 769 deletions
|
|
@ -58,6 +58,7 @@ export async function bootstrap(): Promise<void> {
|
|||
{ name: 'voice-mode', critical: false, fn: initVoiceMode },
|
||||
{ name: 'llm-polling', critical: false, fn: initLLMPolling },
|
||||
{ name: 'meeting-summary-wiring', critical: false, fn: initMeetingSummaryWiring },
|
||||
{ name: 'meeting-mode', critical: false, fn: initMeetingMode },
|
||||
]
|
||||
|
||||
for (const step of steps) {
|
||||
|
|
@ -273,6 +274,12 @@ async function initMeetingSummaryWiring(): Promise<void> {
|
|||
const summaryService = getMeetingSummaryService()
|
||||
|
||||
captionService.on('session-saved', (summary: { sessionId: string }) => {
|
||||
// 회의 모드가 CaptionService를 사용 중이면 MeetingSummary 자동 생성 건너뛰기
|
||||
const { getMeetingModeService } = require('./services/MeetingModeService') as { getMeetingModeService: () => { isMeetingModeActive: () => boolean } }
|
||||
if (getMeetingModeService().isMeetingModeActive()) {
|
||||
logger.info('Skipping auto meeting summary: meeting mode active')
|
||||
return
|
||||
}
|
||||
summaryService.onCaptionSessionSaved(summary).catch((err) => {
|
||||
logger.warn('Auto meeting summary failed:', err)
|
||||
})
|
||||
|
|
@ -282,6 +289,12 @@ async function initMeetingSummaryWiring(): Promise<void> {
|
|||
}
|
||||
}
|
||||
|
||||
async function initMeetingMode(): Promise<void> {
|
||||
// MeetingModeService 싱글톤 초기화 (첫 접근 시 인스턴스 생성)
|
||||
const { getMeetingModeService } = await import('./services/MeetingModeService')
|
||||
getMeetingModeService()
|
||||
}
|
||||
|
||||
// ── HistoryPopup IPC 연동 ────────────────────────────
|
||||
|
||||
function setupHistoryPopupIPC(): void {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue