# InsuWiki Phase 1~3 Firebase 배포 + 백필 + 서비스 검증

## 한정승인

## 작업 목표
master에 머지 완료된 InsuWiki Phase 1~3 코드를 Firebase에 배포하고, 백필 스크립트를 실행하여 서비스에 반영한다.

## 배포 순서 (반드시 순서대로)

### Step 1: Firebase Functions 빌드 확인
```bash
cd /home/jay/projects/insuwiki/functions
npm run build
```
- TypeScript 컴파일 에러 0건 확인
- 에러 시 수정 후 재빌드

### Step 2: Firestore Rules + Indexes 배포
```bash
cd /home/jay/projects/insuwiki
firebase deploy --only firestore:rules,firestore:indexes
```
- Security Rules (4역할, 민감 필드 보호, reviews/auditLogs 서브컬렉션)
- 복합 인덱스 18개

### Step 3: Cloud Functions 배포
```bash
firebase deploy --only functions
```
- syncCustomClaims (users onWrite → Claims 동기화)
- backfillCustomClaims (Callable, admin 전용)
- onReviewCreate (reviews onCreate → 상태 전이)
- onDocumentUpdateReview (documents onUpdate → needs_re_review)
- computeReliabilityScore (점수 계산)
- monitorReviewBacklog (적체 모니터링 Scheduled)
- 기존 Functions 회귀 없음 확인

### Step 4: Custom Claims 백필
```bash
# Firebase Admin SDK로 기존 유저 전원 Claims 부여
# backfillCustomClaims Callable Function 호출
```
- 제이회장님 계정 → admin role 확인
- 기존 유저 → member role 기본값

### Step 5: authorityTier 백필
```bash
cd /home/jay/projects/insuwiki
npx ts-node scripts/backfill-authority-tier.ts --dry-run
# dry-run 결과 확인 후
npx ts-node scripts/backfill-authority-tier.ts
```
- 기존 문서 645건에 authorityTier 추가
- sourceType 기반 매핑 (regulation=1.5, kakao_expert=3.5 등)

### Step 6: 마이그레이션 스크립트 실행
```bash
npx ts-node scripts/migrate-review-fields.ts --dry-run
# dry-run 결과 확인 후
npx ts-node scripts/migrate-review-fields.ts
```
- status='published' 기본값 추가
- riskLevel 자동 판정
- revisions → versions 서브컬렉션 복사

### Step 7: Next.js 빌드 + 배포 확인
```bash
cd /home/jay/projects/insuwiki/nextapp
npm run build
```
- 빌드 에러 0건 확인
- 로컬 또는 Vercel 배포

### Step 8: 서비스 검증
배포 후 실제 서비스에서 확인:
1. 위키 목록: TrustBadge 배지 표시 확인
2. 카테고리 필터 + 신뢰도순 정렬 동작
3. "검증만 보기" 토글
4. admin으로 로그인 → 검토 화면 접근 가능
5. 미검증 문서 → UnverifiedBanner 표시
6. reviewer 역할 부여 → 검토 기능 사용 가능

## 주의사항
- **dry-run 먼저 실행**: 백필/마이그레이션은 반드시 dry-run으로 영향 범위 확인 후 실행
- **Firebase 프로젝트 확인**: `/home/jay/projects/insuwiki/.firebaserc`에서 올바른 프로젝트 선택
- **배포 전 스냅샷**: `firebase firestore:export` 등으로 백업 권장
- **에러 발생 시 즉시 중단**: 부분 배포 상태에서 서비스 영향 최소화

## 참조 파일
- firebase.json: `/home/jay/projects/insuwiki/firebase.json`
- .firebaserc: `/home/jay/projects/insuwiki/.firebaserc`
- functions/: `/home/jay/projects/insuwiki/functions/`
- firestore.rules: `/home/jay/projects/insuwiki/firestore.rules`
- firestore.indexes.json: `/home/jay/projects/insuwiki/firestore.indexes.json`
- 백필 스크립트: `/home/jay/projects/insuwiki/scripts/`

## 보고서
`/home/jay/workspace/memory/reports/task-{TASK_ID}.md`
- 각 Step별 성공/실패 기록
- 백필 결과 (처리 건수, 스킵 건수)
- 서비스 검증 결과
