docs: 콜드메일 시스템 최종 구현 사항 반영

- skill-email: mail_detail_router.py initialize_providers 수정 (c498ea2)
- rb8001: 8개 추가 커밋 반영 (Naive Bayes 개선, 피드백 학습, 버튼 구현)
- Naive Bayes 학습 루프: Slack 피드백 버튼 → update_classifier 동작 설명
- 테스트 결과: 30개 이메일, 101개 시드 단어, 4건 탐지 성공

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
happybell80 2025-10-01 01:00:57 +09:00
parent 3d87ef8c28
commit 65a17a88ee

View File

@ -15,24 +15,26 @@ NAVER WORKS 메일 중 투자 제안(콜드메일) 수신 시:
## 구현 완료 (2025-09-30) ## 구현 완료 (2025-09-30)
### skill-email (커밋: a535732) ### skill-email (커밋: a535732, c498ea2)
- GET /messages/{message_id}: routers/mail_detail_router.py 생성, main.py:311-312 등록 - GET /messages/{message_id}: routers/mail_detail_router.py 생성, main.py:311-312 등록
- GET /messages/{message_id}/attachments/{attachment_id}: routers/mail_detail_router.py - GET /messages/{message_id}/attachments/{attachment_id}: routers/mail_detail_router.py
- download_attachment 메서드: services/naverworks_provider.py:357-388 - download_attachment 메서드: services/naverworks_provider.py:357-388
- attachments 필드 추가: services/naverworks_provider.py:326 - attachments 필드 추가: services/naverworks_provider.py:326
- mail_detail_router.py: main.get_email_provider() 사용 (initialize_providers 호출, c498ea2)
### rb8001 (커밋: 19304ea, 1980a4e, d88615e) ### rb8001 (커밋: 19304ea, 1980a4e, d88615e, 276b258, d0b8605, a6998ed, b4ed61d, 3507ed0)
- app/services/coldmail_filter.py: Incremental Naive Bayes 필터, initialize_seed_data(), is_coldmail(), update_classifier() - app/services/coldmail_filter.py: Incremental Naive Bayes (단어 빈도 기반, Counter 사용, a6998ed), 확률값 로깅 (b4ed61d)
- app/services/naverworks_file_processor.py: download_naverworks_attachment(), upload_to_rag_file(), process_naverworks_attachments() - app/services/coldmail_feedback.py: 피드백 처리 서비스 (b4ed61d)
- app/services/ir_analyzer.py: extract_ir_metrics(), query_rag(), call_llm() - app/services/naverworks_file_processor.py: 첨부파일 다운로드→rag-file 업로드, import 경로 수정 (276b258)
- app/services/startup_valuation.py: valuate_startup(), get_prior_by_stage(), calculate_posterior(), save_valuation() - app/services/ir_analyzer.py: IR 지표 추출 (LLM + RAG)
- app/services/slack_lists_client.py: create_list_item(), update_list_item(), create_coldmail_list_item(), update_ir_feedback() - app/services/startup_valuation.py: Bayesian VC 가치 평가
- app/scheduler/jobs/coldmail_briefing.py: _run_coldmail_briefing(), register() (cron: 5 9 * * mon-fri) - app/services/slack_lists_client.py: Slack Lists API 클라이언트
- app/scheduler/jobs/coldmail_briefing.py: 스케줄러 (email from dict 처리 d0b8605, 피드백 버튼 3507ed0)
- app/router/slack_handler.py: coldmail_feedback_yes/no 액션 핸들러 (b4ed61d)
- main.py:197-198: coldmail_briefing.register(scheduler) - main.py:197-198: coldmail_briefing.register(scheduler)
- app/skills/naverworks_briefing.py:17: NAVERWORKS_COMPANY_EMAIL 환경변수 사용, 하드코딩 제거 - app/skills/naverworks_briefing.py: 초기화 로그 추가 (1980a4e)
- app/state/database.py:118-147: get_naverworks_user_uuid() 함수 (이미 존재)
- tests/test_coldmail_briefing.py: 9개 테스트 함수 - tests/test_coldmail_briefing.py: 9개 테스트 함수
- Dockerfile:30: COPY ./tests /code/tests 추가 - Dockerfile:30: COPY ./tests /code/tests 추가 (d88615e)
### API 스펙 확인 완료 (2025-09-30) ### API 스펙 확인 완료 (2025-09-30)
@ -90,8 +92,14 @@ NAVER WORKS 메일 중 투자 제안(콜드메일) 수신 시:
10. skill-slack POST /api/v1/send → 처리 완료 요약 메시지 10. skill-slack POST /api/v1/send → 처리 완료 요약 메시지
### Naive Bayes 학습 루프 ### Naive Bayes 학습 루프
- initialize_seed_data(): *.vc 도메인, 투자/IR 키워드 시드 - initialize_seed_data(): *.vc 도메인, 투자/IR 키워드 시드 (수동 DB INSERT)
- update_classifier(): Slack 피드백 시 DB 카운터 업데이트 (현재 수동 호출) - Slack 채널 피드백 버튼: "✅ 맞음" / "❌ 아님" (coldmail_briefing.py:196-208)
- slack_handler.py: coldmail_feedback_yes/no 액션 → coldmail_feedback.process_coldmail_feedback()
- update_classifier(): 단어별 coldmail_count/normal_count 증가
### 테스트 결과 (30개 이메일, 시드 데이터 101개 단어)
- ✅ 4건 탐지: 빅웨이브 투자유치 (0.8474, 0.7906), SEED 라운드 (0.9835)
- ❌ 미탐지: 내부메일/중립단어 많은 케이스 (0.1880, 0.0548, 0.4017)
--- ---