d3ro-voice/docs/phases/phase-3.md
Yun Chan e24bb8378c 초기 프로젝트 설정: 하네스 시스템 + 설계서 + RE 노하우
- CLAUDE.md: 프로젝트 규칙, 기술 스택, 코딩 규칙, 페이즈 로드맵
- .claude/settings.json: 권한, 강제 훅 (매 프롬프트 설계서 규칙 주입)
- .claude/skills/: implement-phase, review-phase, scaffold, test-commit, debug
- .claude/agents/: electron-architect, voice-pipeline-expert, ui-specialist
- docs/design/00-09: 마스터 아키텍처, 서비스 명세(16개), IPC(113채널),
  DB스키마, UI컴포넌트, 검증리포트, 외부엔진연동, 갭분석,
  VoiceMode패턴, 디자인시스템, 히스토리팝업
- docs/phases/1-7+3.5: 전체 구현 페이즈 문서
- docs/re-findings/: Speakly RE 노하우 5개 문서
2026-04-05 01:03:03 +09:00

49 lines
1.6 KiB
Markdown

# Phase 3: 텍스트 삽입 + 기본 UI
## 목표
전사된 텍스트를 활성 앱에 삽입하고, 녹음 상태/결과를 표시하는 UI 구축.
## 태스크
### 3.1 TextInsertService
- `src/main/services/TextInsertService.ts`
- Speakly ClipboardPaste 패턴:
1. 클립보드 전체 백업
2. 텍스트를 클립보드에 설정
3. @nut-tree/nut-js로 Ctrl+V 시뮬레이션
4. 클립보드 복원
- 삽입 검증 (옵션)
### 3.2 RecordingTipWindow (Vanilla JS 팝업)
- 녹음 상태 표시 (opening → recording → thinking → result/error)
- 9개 웨이브 바 애니메이션 (Speakly 패턴)
- 2-phase 리사이즈
- 프리로딩 방식
### 3.3 ResultPopupWindow (Vanilla JS 팝업)
- 전사 결과 텍스트 표시
- 복사 버튼, 닫기 버튼
- 자동 숨김 + 마우스 호버 시 유지
### 3.4 Dashboard (React)
- 통계: 총 시간, 단어 수, 세션 수
- 최근 세션 목록
- Speakly 패턴: MUI Drawer(240px) + Content Area
### 3.5 Settings (React Modal)
- 언어, 테마(light/dark/auto), 핫키 설정
- 마이크 선택 + 테스트
- Ollama 서버 URL 설정
## Speakly RE 참조
- ClipboardPaste 의사코드: save→set→SendInput(Ctrl+V)→restore
- RecordingTip: wave-bar cos 분포, thinking 점근 수렴
- ResultPopup: requestAnimationFrame 높이 측정, mouseenter/leave
- App.js: MUI 테마, Drawer 네비게이션, 라우팅 패턴
- Settings: HotkeyRecordModal, 마이크 선택 UI
## 완료 조건
- [ ] 전사된 텍스트가 활성 앱(메모장 등)에 삽입됨
- [ ] RecordingTip 웨이브 애니메이션 작동
- [ ] Dashboard에 통계 표시
- [ ] Settings에서 핫키/마이크 변경 가능