# task-1601.1 완료 보고서: InsuWiki Sync 수정 — 작성자 표시 + 카테고리 매핑 정밀화

## SCQA

**S**: InsuWiki의 카카오 Q&A sync-firestore 핸들러가 Firestore에 문서를 동기화할 때 authorName과 카테고리 매핑 로직을 사용하고 있다.

**C**: authorName이 전문가 이름(expert)으로 표시되어 단톡방 대화자 개인 이름이 앱에 노출될 수 있고, 카테고리 매핑에서 "보상/장기" 등 보상 계열 카테고리가 모두 casualty(손해)로 잘못 분류되어 의료(medical) 콘텐츠가 누락된다.

**Q**: authorName을 단톡방 제목으로 변경하고, 카테고리 매핑을 인슈위키 4카테고리 정의에 맞게 정밀화할 수 있는가?

**A**: server.py에서 2개 수정 적용 완료. authorName을 source_chat(단톡방 제목) 기반으로 변경하고, _map_wiki_category 함수의 매칭 순서를 재설계하여 "보상/자동차" → casualty, "보상/장기" → medical로 정확히 분류되도록 수정했다. 기존 sync 문서도 재sync 시 merge=True로 자동 업데이트된다.

## 수정 내용

### 수정 1: _map_wiki_category 함수 (line 972-990)
- casualty 키워드: "보상", "손해" → "자동차", "운전자", "배상"
- medical 키워드: "의료", "질병", "의학" → "보상", "의료", "질병", "의학", "수술", "실비", "진단", "장기" (8개)
- wealth 키워드: 기존 4개 → "연금", "상속", "증여", "사망보험" 추가 (8개)
- practice 키워드: 기존 6개 → "위촉", "청구" 추가 (8개)
- practice fallback 신설: "상품", "손해사정" → practice

### 수정 2: authorName (line 4649)
- 변경 전: `expert if expert else "카카오 보험 Q&A"`
- 변경 후: `entry.get("source_chat", "카카오 Q&A")`

## 산출물

- `/home/jay/workspace/dashboard/server.py`

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **"보상/자동차" 키워드 충돌 위험** — "자동차" 키워드를 casualty 체크에서 먼저 매칭하여 "보상" 보다 우선 처리되도록 순서 보장
2. **"손해사정" 카테고리 미분류** — practice fallback 조건 추가로 "상품", "손해사정" 등 기존 매핑 불가 항목 처리
3. **기존 pyright 경고 (10건)** — 모두 기존 코드의 미사용 import/변수 경고로 이번 변경과 무관. 기존 상태 유지 (범위 외)

## 테스트 검증

카테고리 매핑 로직 수동 검증:
- "보상/장기" → `cat="보상/장기"` → "자동차" 미매칭 → "보상" 매칭 → **medical** (정상)
- "보상/자동차" → `cat="보상/자동차"` → "자동차" 매칭 → **casualty** (정상)
- "보상/일반" → "보상" 매칭 → **medical** (정상)
- "고지의무" → "고지" 매칭 → **practice** (정상)
- "자산/연금" → "연금" 매칭 → **wealth** (정상)
- "상품비교" → "상품" 매칭 → **practice** (정상)
- 빈 문자열 → 모두 미매칭 → **general** (정상)

기존 테스트 파일(`tests/test_server.py`)에는 `_map_wiki_category` 관련 테스트 없음.

## 모델 사용 기록
- 팀원: 토르 / 작업 내용: server.py 2개 수정 (카테고리 매핑 + authorName) / 사용 모델: sonnet / 정당성: -
