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
|
|
@ -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. 원인 분석 후 수정 제안
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue