DOCS/troubleshooting/251014_coldmail_ir_analysis_scenario.md

100 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 콜드메일 IR 자동 분석 시나리오
**날짜**: 2025-10-14
**작성자**: happybell80
**관련 파일**: `rb8001/app/scheduler/jobs/coldmail_briefing.py`
---
## 최종 목표 시나리오
### 평일 오전 9시 5분 자동 실행
1. NAVER WORKS 메일 중 콜드메일 감지 (Naive Bayes)
2. IR 첨부파일(PDF) 다운로드
3. skill-rag-file에 업로드 → 51123 HDD 영구 저장
4. AI 분석 실행:
- 페이지별 요약 (27페이지 → 핵심 내용)
- 기업 평가 (사업분야, 재무, 강약점)
- 베이지안 투자 확률 계산 (0~100%)
5. Slack Lists에 정리된 보고서 첨부:
- 회사명, 이메일, IR 파일
- 투자 확률, 밸류에이션, 핵심 평가
6. Slack 채널에 요약 메시지 + 피드백 버튼
---
## 구현 완료 (2025-10-14)
### 파일 처리
- coldmail_briefing.py:75-263: 전체 플로우
- naverworks_file_processor.py:94-135: PDF 다운로드 → skill-rag-file 업로드
- 파일 영속성: SSHFS allow_other 해결 (251014_skill-rag-file_sshfs_allow_other_해결.md)
### AI 분석 기능
- ir_analyzer.py:86-168: extract_ir_metrics() - RAG 6회 쿼리 → LLM 요약
- startup_valuation.py:63-173: valuate_startup() - 베이지안 VC Method
### Slack 통합
- coldmail_briefing.py:176-248: Slack Lists 아이템 생성
- coldmail_briefing.py:221-247: 피드백 버튼 (✅ 맞음 / ❌ 아님)
- coldmail_filter.py:29-76: Naive Bayes 학습 루프
---
## 미구현 및 버그
**버그**: LLM JSON 파싱 (ir_analyzer.py:156 마크다운 블록 처리)
**미구현**: Slack Lists 파일 첨부 (coldmail_briefing.py:207), 분석 결과 메시지 (coldmail_briefing.py:255)
---
## 분석 결과 예시 (굿베이션)
**파일**: 27페이지, 4.7MB → 14 chunks
**기업**: 굿베이션 (IT 인테리어 플랫폼) / 설립 7개월 / 팀 4명 / 자본 2억
**강점**: 시장 문제 인식, IT 차별화, 24조 시장
**약점**: 실적 전무, 소규모 팀, 자본 부족, 경쟁사 존재
**베이지안 투자 확률**: 0%
- 기본: 7.3% (Pre-A 15% × 밸류 70% × 신뢰도 70%)
- 리스크: -35% (실적-30%, 팀-20%, 자본-20%, 기타+15%)
**의견**: 투자 권장 안함 / MVP + 매출 + 인력 보강 시 60%
---
## 구현 계획
### 우선순위 1: LLM JSON 파싱 에러
- ir_analyzer.py:153-156: llm_response 마크다운 블록(```json) 제거
- strip("```json"), strip("```"), strip() 순차 적용
### 우선순위 2: Slack 메시지 포맷
- coldmail_briefing.py:255: summary_text에 IR 분석 결과 추가
- ir_metrics (business_area, revenue), valuation_result (median, probability) 포함
### 우선순위 3: Slack Lists 파일 첨부
- 상세: 251014_slack_lists_file_attachment.md
- coldmail_briefing.py:207: document_id → Slack file_id 변환 필요
### 우선순위 4: LangGraph 적용
- coldmail_briefing.py:76-263 → LangGraph 워크플로우로 전환
- 노드: fetch_emails → filter_coldmail → process_attachments → analyze_ir → create_slack_item → send_feedback
- 조건부 분기: 첨부파일 유무, IR 분석 성공/실패
- 상태 관리: email_data, document_ids, ir_metrics, valuation_result
- 재시도 로직, 에러 핸들링 개선
---
## 교훈
### 전체 시나리오 문서화 중요성
- 개별 기능은 작동하나 최종 목표 불명확
- 교훈: 전체 시나리오 문서를 먼저 작성 후 세부 구현
### LLM 응답 형식 검증 부족
- LLM이 마크다운 블록(```json)으로 응답 → JSON 파싱 실패
- 교훈: LLM 응답은 항상 전처리 필요