## 약관AI Phase 2 — 품질 강화 + 피드백 루프

### 프로젝트 경로 (절대경로)
/home/jay/projects/insuwiki/

### 전제: Phase 1 결과물 참조
- 1팀 Phase 1 보고서: /home/jay/workspace/memory/reports/task-157.1.md
- 2팀이 생성한 versionFilter.ts, queryCache.ts, rateLimiter.ts, injectionFilter.ts가 이미 존재

### 담당 파일
- nextapp/src/app/api/ai/vector-search/route.ts — 2팀의 versionFilter/캐시/보안 모듈 통합
- functions/src/pdfIndexing.ts — 별표(수술분류표 등) 인덱싱 지원 추가
- nextapp/src/app/api/ai/feedback/route.ts — 새 파일 (피드백 루프 API)
- nextapp/src/types/firestore.ts — 피드백 타입 추가 (필요 시)

### 작업 1: 2팀 모듈 통합
Phase 1에서 2팀이 별도 모듈로 만든 것들을 vector-search/route.ts에 통합:
1. versionFilter.ts의 버전 필터 함수를 벡터 검색 파이프라인에 적용 — 기본값 "현행 버전만" 검색
2. queryCache.ts의 캐시 레이어를 벡터 검색 앞단에 적용 — 캐시 히트 시 즉시 반환
3. rateLimiter.ts를 API 핸들러 최상단에 적용 — 한도 초과 시 429
4. injectionFilter.ts를 쿼리 전처리에 적용 — 인젝션 탐지 시 차단

### 작업 2: 별표(부속서류) 인덱싱 (pdfIndexing.ts)
보험 약관의 "별표 수술분류표", "별표 장해분류표" 등을 별도 처리:
1. 별표 감지: "별표", "[별표]", "부표", "부속서류" 키워드로 시작하는 섹션 감지
2. 별표 청크에 sourceType을 'appendix'로 태깅 (기존: 'policy')
3. 별표 청크 메타데이터에 appendixType 추가: 'surgery_table'|'disability_table'|'disease_code'|'other'
4. 본문에서 "별표 참조", "별표 수술분류표에 따라" 등 참조 시, 해당 별표 청크를 관련 청크로 연결하는 메타데이터 추가

### 작업 3: 피드백 루프 API
nextapp/src/app/api/ai/feedback/route.ts 신규:
1. POST /api/ai/feedback — 사용자가 답변에 대해 "정확"/"부정확"/"불완전" 피드백 제출
2. Firestore answer_feedback 컬렉션에 저장: {queryId, feedbackType, comment, userId, timestamp}
3. 부정확/불완전 피드백 시 해당 쿼리+답변을 관리자 리뷰 큐에 추가
4. 인증 필수 (Firebase Auth)

### 주의사항
- 2팀이 pdfIndexing.ts의 메타데이터 부분을 수정했으므로, 최신 상태를 먼저 확인하고 작업할 것
- 기존 테스트가 깨지지 않게 유지
- TypeScript 타입 안전성 유지