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:
Yun Chan 2026-04-08 01:16:52 +09:00
parent dd68fc9ccd
commit d0c4f9ee53
38 changed files with 2550 additions and 769 deletions

View file

@ -1,29 +1,46 @@
---
name: debug-electron
description: Electron 앱 디버깅. IPC 문제, 메모리 누수, 렌더러 크래시 등 진단.
allowed-tools: Read Grep Glob Bash
allowed-tools: Read Grep Glob Bash Edit
---
# Electron Debug
## 일반 디버깅
1. 로그 확인 (`electron-log` 출력)
2. IPC 채널 매칭 검증 (`shared/ipc-channels.ts` vs 실제 핸들러)
3. 프리로드 스크립트 노출 API 확인
증상 또는 에러 메시지를 받으면 아래 진단 흐름을 자동 실행합니다.
## IPC 문제
- `shared/ipc-channels.ts`에 채널 정의 확인
- `src/main/ipc/`에 핸들러 등록 확인
- `src/preload/index.ts`에 브릿지 노출 확인
- 렌더러에서 `window.electronAPI.*` 호출 확인
## 0. 자동 진단 파이프라인
## 오디오 문제
- Web Audio API 초기화 상태
- 마이크 권한 확인
- AudioContext sampleRate (24000Hz)
- noiseSuppression: false 확인
증상 분류 → 해당 섹션 실행 → 원인 보고 → 수정 제안
## 메모리 누수
- useEffect cleanup 함수 확인
- IPC 이벤트 리스너 제거 확인
- BrowserWindow destroy 확인
1. **로그 수집**: `npm run dev` 출력 또는 electron-log 파일 확인
2. **에러 분류**: IPC / 오디오 / 메모리 / 렌더러 크래시 / 빌드
3. **해당 섹션 진단 실행**
4. **원인 + 수정 방안 보고**
## IPC 문제 진단
자동 실행할 검증 체인:
1. `shared/ipc-channels.ts`에서 문제 채널 Grep → 채널 정의 존재?
2. `src/main/ipc/`에서 해당 채널 핸들러 Grep → `ipcMain.handle`/`on` 등록?
3. `src/preload/index.ts`에서 `contextBridge.exposeInMainWorld` Grep → 브릿지 노출?
4. `src/renderer/`에서 `window.electronAPI.*` 호출 Grep → 렌더러 사용?
5. 1~4 중 끊어진 체인 지점이 원인
## 오디오 문제 진단
1. SoX 경로 확인: `src/main/utils/paths.ts``getSoxPath` 읽기
2. AudioCaptureService 설정 확인: sampleRate 16000, noiseSuppression false
3. faster-whisper sidecar 프로세스 상태: `tasklist | grep python`
4. 마이크 권한: Electron `systemPreferences.getMediaAccessStatus('microphone')`
## 메모리 누수 진단
1. `useEffect` cleanup 누락 Grep: `useEffect` 있는데 return 없는 패턴
2. IPC 리스너 제거 누락: `ipcRenderer.on` 대비 `removeListener`/`removeAllListeners` 검색
3. BrowserWindow destroy 확인: `close` 이벤트에서 `destroy()` 호출 여부
## 빌드/타입 문제
1. `npm run typecheck 2>&1 | head -30` 실행
2. 에러 파일/라인 추출 후 해당 코드 Read
3. 원인 분석 후 수정 제안