# InsuWiki Phase 2b 독립 작업: 필터+정렬 + 역할 렌더링 + 실시간 리스너

## 한정승인

## PRD 참조 (필수 읽기)
1. 통합 체크리스트: `/home/jay/workspace/memory/plans/insuwiki/review-trust-system/checklist.md` — Phase 2b 섹션
2. InsuWiki 앱: `/home/jay/projects/insuwiki/`
3. Firestore 타입: `/home/jay/projects/insuwiki/nextapp/src/types/firestore.ts`

## 선행 완료
- Phase 1 전체: 인증 + 상태 머신 + 검토 제도 + 백필 + 마이그레이션 ✅ 머지 완료
- Phase 2a (4팀 병행 진행 중): TrustBadge, VerificationTag — 이 작업과 독립

## 작업 범위 (Phase 2a와 독립적인 항목만)

### 1. 필터 + 정렬
- useWikiFilter 커스텀 훅 생성 (필터 로직 캡슐화)
- 카테고리 칩 필터 (단일 선택: 전체/법규/판례/정책/전문가/커뮤니티)
- 신뢰도순 정렬 옵션 (authorityTier DESC)
- "검증만 보기" 세션 토글 (sessionStorage 유지)
- URL 동기화 (useSearchParams)
- Firestore 복합 인덱스 3개 추가

### 2. 역할 기반 렌더링
- useReviewPermission 훅 구현 (Custom Claims 기반)
- 역할 기반 UI 조건부 렌더링 (reviewer/admin에게만 검토 버튼 등 노출)

### 3. Firestore 실시간 리스너
- 검토 대기열 onSnapshot (limit 50)
- 문서 상세 검토 상태 리스너
- visibilitychange 기반 탭 백그라운드 detach
- iOS Safari 폴백 (pagehide/pageshow)

## 주의사항
- 4팀이 Phase 2a worktree에서 작업 중 → **별도 worktree** 사용 필수 (충돌 방지)
- TrustBadge/VerificationTag 컴포넌트는 아직 미완성 → import하지 말 것
- 필터/정렬은 기존 page.tsx의 데이터 로딩 로직에 통합
- Firestore 인덱스 추가는 firestore.indexes.json 수정

## 테스트
- useWikiFilter: 카테고리 필터 + 신뢰도 정렬 동작
- useReviewPermission: 4역할별 권한 반환 확인
- 실시간 리스너: onSnapshot 연결/해제 lifecycle
- URL 동기화: 필터 변경 → URL 반영 → 새로고침 → 필터 복원

## 보고서
`/home/jay/workspace/memory/reports/task-{TASK_ID}.md`
