InsuWiki Phase 4: UX/성능 최적화 (task-81.1) — 최종 Phase

## 프로젝트 경로
/home/jay/projects/insuwiki/

## 선행 작업 완료 상태
- Phase 1 보안패치 ✅ (task-70.1, task-71.1)
- Phase 2 운영안정성 ✅ (task-76.1): 인덱스/규칙/CI-CD/console.log/git정리
- Phase 3 코드품질 ✅ (task-78.1): DocumentClient 1703→745줄 분리, WikiMapContext, 유틸통합, any제거, Vitest 29테스트
- git commit 미수행 (현재 파일 상태가 최신)

## Phase 4 작업 목록 (5건)

### 1. alert/confirm → Toast 알림 전환 (60건)
- 현재 alert() 60건 남용 → 사용자 흐름 중단
- react-hot-toast 또는 sonner 설치 (경량 라이브러리)
- 패턴별 전환:
  - 성공 알림 (저장 완료 등) → toast.success
  - 에러 알림 → toast.error
  - confirm 대화상자 → 커스텀 확인 모달 또는 toast with action
- 전체 alert/confirm을 검색해서 하나도 빠짐없이 교체

### 2. Admin 페이지 반응형 대응
- 현재: 고정 w-56 사이드바 → 모바일 레이아웃 붕괴
- 개선: 
  - 모바일: 사이드바 숨김 + 햄버거 메뉴
  - 태블릿: 축소된 사이드바 (아이콘만)
  - 데스크탑: 기존 유지
- admin/ 하위 페이지 전체 반응형 확인

### 3. 접근성(a11y) 기본 수준 확보
- aria-label 추가 (주요 버튼, 입력 필드, 네비게이션)
- 모달 focus trap 구현 (열릴 때 포커스 잡고, 닫힐 때 복원)
- 키보드 네비게이션: Tab/Enter/Escape 지원
- 최소한의 WCAG 2.1 AA 준수

### 4. TipTap/react-markdown 동적 import
- 현재: 모든 페이지에서 TipTap/react-markdown 번들 포함 → 초기 로딩 과다
- 개선: next/dynamic으로 동적 import
  - ReflectEditor → dynamic import (SSR: false)
  - react-markdown 사용 컴포넌트 → dynamic import
- 번들 사이즈 절감 효과 확인 (build output 비교)

### 5. next.config.ts 최적화
- serverExternalPackages 설정: firebase-admin, googleapis 등 서버 전용 패키지 명시
- Image 설정: remotePatterns 정리 (drive.google.com 등)
- 기타 Next.js 16 권장 설정 확인

## Phase 3 잔여 사항 (같이 처리)
- WikiMapContext: DocumentClient.tsx와 ReflectEditor.tsx에서 useWikiMapContext로 교체 (Firestore 중복 쿼리 완전 해소)
- remaining any 타입(useDocumentState.ts의 revisions: any[]) → Revision 인터페이스 정의

## 주의사항
- Phase 1~3 변경사항 반드시 보존
- git commit 하지 말 것 (아누가 최종 통합 커밋)
- npm run build 통과 + npx vitest run 전체 PASS 확인 필수
- 이것이 마지막 Phase입니다. 완료 후 전체 개선 점수 재평가 포함해주세요.

## 완료 후
- 보고서: /home/jay/workspace/memory/reports/task-81.1.md
  - 보고서에 Phase 1~4 전체 개선 요약 + 최종 점수(10점 만점) 포함
- task-timer end: python3 /home/jay/workspace/memory/task-timer.py end task-81.1