# [기능] AI 문서 어시스턴트 (Summarize, Structure, Extract) 구현

## 1. 개요
*   **작성일**: 2026-02-16
*   **요청자**: User (문서 요약 및 정리 자동화 요구)
*   **상태**: 완료 (Phase 1~3 MVP + 검색 UI/UX Phase 1&2 + 음성 인식 모바일 통합 + P0 음성 명령 확장 + P1 AI 음성 트리거 + 상담 녹음 완료)

## 2. 요구사항 목록 (Todo)
- [x] **[SYSTEM]** `START.md` 프로젝트 운영 규칙 인식 및 에이전트 체크
- [x] **[PLAN]**상세 구현 계획 및 아키텍처 설계 ([회의록](../meetings/260216-0200-ai-summarization-strategy.md))
- [x] **[BACKEND]** Gemini 1.5 Pro API Proxy 구현
- [x] **[BACKEND]** BYOK(Bring Your Own Key) 암호화 저장소 설계 및 구현
- [x] **[FRONTEND]** Gemini API Key 관리 설정 모달(AISettingsModal) 개발
- [x] **[FRONTEND]** 문서 상세 페이지 AI 사이드바(AISidepanel) 개발
- [x] **[UI/UX]** 실시간 요약/구조화/정보추출 프리셋 및 '문서에 적용' 기능 구현
- [x] **[PHASE 1]** 실시간 WikiMap 인덱서 및 자동 백링크 제안 시스템 구현
- [x] **[PHASE 2]** AI Whispers (실시간 음성 기록 및 분석) MVP 구현 완료
- [x] **[UI/UX]** 모바일 검색 UI 깨짐 현상 수정 완료 (Responsive Design 적용)
- [x] **[UX-P1]** 검색 UI/UX Phase 1: 설계사 맞춤 문구, AI 면책 조항, 로딩/에러 UX, 접근성(a11y)
- [x] **[REFACTOR]** 검색 UI/UX Phase 2: SearchModal 6개 컴포넌트 분리 (S1~S5 완료)
  - SearchInput (디바운싱 300ms), NormalResults, AIResults (마크다운 렌더링), AIEmptyState (추천 질문), SearchFooter
- [x] **[FEAT]** 🎙️ 음성 인식 실제 구현 (Web Speech API 2-layer)
  - `useSpeechRecognition.ts` — 코어 훅 (Chrome/Edge/Safari)
  - `SearchInput.tsx` — 음성 검색 마이크 버튼
  - `VoiceDictation.tsx` — 플로팅 받아쓰기 FAB (모바일 56px)
  - `useVoiceCommand.ts` — "새 문서", "검색해줘", "저장" 음성 명령
  - `useVoiceRecorder.ts` — Mock → 실제 Web Speech API
- [x] **[FEAT]** 📱 음성 인식 모바일 통합
  - `VoiceDictation` → `DocumentClient.tsx` 편집 모드 연결
  - `VoiceCommandProvider` → `layout.tsx` 전역 등록
  - safe-area, 56px 터치 타겟, 전체 너비 패널
- [x] 모바일 환경에서 최종 동작 테스트 및 검증 — 빌드 13/13 통과
- [x] **[FEAT]** 🎙️ P0 음성 명령 확장 (3→25) + 동의 녹취 워크플로우
  - `useVoiceCommand.ts` — 5그룹 25개 명령 (내비/검색/에디터/문서/녹음)
  - `VoiceCommandContext.tsx` — 페이지별 명령 핸들러 등록 Context (NEW)
  - `RecordingConsentModal.tsx` — 통신비밀보호법 동의 녹취 모달 (NEW)
  - `VoiceCommandProvider.tsx` — Context 위임 구조 전환
  - `DocumentClient.tsx` — 16개 명령 콜백 연결
  - `layout.tsx` — VoiceCommandContextProvider 래핑
  - 빌드 검증 통과 (`58b03cf`)
- [x] **[FEAT]** 🤖 P1 AI 음성 트리거 (6개 Gemini 연동 명령)
  - `useVoiceCommand.ts` — 6그룹 31개 명령으로 확장 (AI 그룹 추가)
  - `route.ts` — compare/mask/coach promptType 3개 추가
  - `AISidepanel.tsx` — 3→6 프리셋 버튼 + autoAction 음성 자동 실행
  - `VoiceCommandProvider.tsx` — AI 명령 6개 Context 위임
  - `DocumentClient.tsx` — autoAIAction 상태 + 6 핸들러 등록
  - 빌드 검증 통과 (`da4f121`)
- [x] **[FEAT]** 🎙️ 상담 녹음 기능 (데일리 노트 연동)
  - `useAudioRecorder.ts` — MediaRecorder API hook (pause/resume, 64kbps WebM/Opus)
  - `AudioRecorderButton.tsx` — FAB 스타일 녹음 UI (녹음중/일시정지/업로드)
  - `DocumentClient.tsx` — 녹음→구글드라이브 업로드→데일리 노트 자동 삽입
  - 데일리 노트 전용, 외부 API 비용 $0
  - 빌드 검증 통과 (`9303b44`)

## 3. 상세 분석 및 계획

### 3.1. 기술적 결정 (ADR)
*   **BYOK 100% 적용**: 서버 비용 통제를 위해 사용자가 직접 발급받은 API 키를 사용하도록 설계.
*   **AES-256-GCM 암호화**: 민감한 API 키를 DB에 안전하게 보관하기 위해 서버측 대칭키 암호화 적용.
*   **Streaming 지원**: 사용자 경험을 위해 Gemini의 답변을 실시간으로 렌더링하도록 UI 구성.
*   **Web Speech API 2-Layer**: 일상적 음성 입력은 무료 API, 장시간 상담 기록은 Gemini Live로 역할 분담.

### 3.2. 실행 결과
*   `src/app/api/ai/summarize/route.ts`: AI 요약 로직 처리 (Gemini 1.5 Pro).
*   `src/components/AISidepanel.tsx`: 우측 슬라이딩 패널 UI.
*   `src/components/AISettingsModal.tsx`: 사용자 설정 모달.
*   **[Phase 1]** `src/hooks/useWikiMap.ts`: 실시간 문서 인덱싱 훅.
*   **[Phase 1]** `src/lib/tiptap/WikiAutoLink.ts`: 제안형 백링크 확정.
*   **[음성]** `src/hooks/useSpeechRecognition.ts`: Web Speech API 코어 훅.
*   **[음성]** `src/components/VoiceDictation.tsx`: 편집 모드 플로팅 FAB.
*   **[음성]** `src/components/VoiceCommandProvider.tsx`: 전역 음성 명령.
*   **[음성]** `src/hooks/useVoiceCommand.ts`: 명령 패턴 매칭.
*   **[P0 확장]** `src/hooks/useVoiceCommand.ts`: 5그룹 25개 명령으로 확장.
*   **[P0 확장]** `src/contexts/VoiceCommandContext.tsx`: 페이지별 명령 핸들러 등록 Context.
*   **[P0 확장]** `src/components/RecordingConsentModal.tsx`: 동의 녹취 확인 모달.
*   **[P0 확장]** `src/components/VoiceCommandProvider.tsx`: Context 위임 구조.
*   **[P1 AI]** `src/hooks/useVoiceCommand.ts`: 6그룹 31개 명령 (AI 트리거 추가).
*   **[P1 AI]** `src/app/api/ai/summarize/route.ts`: compare/mask/coach promptType.
*   **[P1 AI]** `src/components/AISidepanel.tsx`: 6 프리셋 + autoAction 자동 실행.
*   **[P1 AI]** `src/components/VoiceCommandProvider.tsx`: AI 6개 Context 위임.
*   **[녹음]** `src/hooks/useAudioRecorder.ts`: MediaRecorder API 훅 (장시간 녹음).
*   **[녹음]** `src/components/AudioRecorderButton.tsx`: FAB 녹음 버튼 (데일리 전용).
*   **[녹음]** `src/app/docs/[id]/DocumentClient.tsx`: 녹음→드라이브→데일리 자동 삽입.
