**task-1529.1 완료 보고** **완료 보고서** **핵심 결과** `#궁금증` 태그 기반 강제 분리, 질문 패턴 감지, 15분 gap 축소, 노이즈 필터링(인사/리액션/환영 메시지), Anthropic Haiku 전환 + Zettelkasten 기반 정제 프롬프트를 구현했다. wiki_entries.json 재생성 결과 145건→125건으로 노이즈 20건 감소. pytest 45건 전부 PASS, pyright 0건. ## 수행 내역 ### 1. 스레드 분리 고도화 (`_split_into_threads`) - **1a. `#궁금증` 태그 기반 분리**: 태그 출현 시 무조건 새 스레드 시작 - **1b. 질문 패턴 감지**: `질문 드립니다`, `문의 드립니다`, `궁금합니다`, `여쭤봅니다`, `확인 부탁` 패턴 시 새 스레드 - **1d. 시간 gap 축소**: 30분 → 15분 ### 2. 노이즈 필터링 (`_is_noise_message`) - 완전 제거: 환영 메시지 패턴 (`📚 한 발 앞서가는`, `━━━━━`, `여기서 배우고`) - 부분 제거: 단순 인사 (`안녕하세요`, `감사합니다`만 있는 메시지), 리액션 (`ㅋㅋ`, `ㅎㅎ`, `ㄴㄴ`) ### 3. LLM 전환 (Gemini → Anthropic Haiku) - `google.generativeai` → `anthropic` 패키지로 교체 - 모델: `claude-haiku-4-5-20251001` - 환경변수: `GLM_API_KEY` → `ANTHROPIC_API_KEY` - 정제 프롬프트: Zettelkasten 원자적 노트 원칙 기반으로 강화 - `is_noise` 판정 + 품질 검증 테스트: pyright 0 errors **발견/해결 이슈 3건** 1. **질문 패턴 분리 스레드가 필터링됨** — `_split_into_threads`에서 질문 패턴으로 분리된 스레드에 `has_question_tag=True` 설정 추가 (knowledge_extractor.py:205) 2. **pyright Optional 구독 에러** — `_analyze_thread_with_llm` 반환값이 `Optional[dict]`이므로 테스트에 `assert result is not None` 추가 (test_knowledge_extractor.py:857) 3. **미사용 함수 `_is_question_start` 경고** — 함수 제거, `_RE_QUESTION_PATTERN`을 `_split_into_threads` 내에서 직접 사용