- 우선순위 1 완료 표시 (Slack Lists 파일 첨부) - 우선순위 3 줄번호 수정: 255 → 291 - probability → confidence 수정 (ValuationResult 실제 속성) - 베이지안 투자 확률 → 밸류에이션 및 신뢰도로 수정 - 95줄 (100줄 이하 유지) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
96 lines
3.3 KiB
Markdown
96 lines
3.3 KiB
Markdown
# 콜드메일 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 분석 실행:
|
|
- 페이지별 요약 (RAG 기반 핵심 내용 추출)
|
|
- 기업 평가 (사업분야, 재무, 기술 우위)
|
|
- 베이지안 밸류에이션 및 신뢰도 계산
|
|
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 마크다운 블록 처리)
|
|
**미구현**: 분석 결과 메시지 (coldmail_briefing.py:291)
|
|
|
|
---
|
|
|
|
## 분석 결과 예시 (굿베이션)
|
|
|
|
**파일**: 27페이지, 4.7MB → 14 chunks
|
|
|
|
**기업**: 굿베이션 (IT 인테리어 플랫폼) / 설립 7개월 / 팀 4명 / 자본 2억
|
|
|
|
**강점**: 시장 문제 인식, IT 차별화, 24조 시장
|
|
**약점**: 실적 전무, 소규모 팀, 자본 부족, 경쟁사 존재
|
|
|
|
**밸류에이션**: 100억원 (범위: 30-300억원)
|
|
**신뢰도**: 90% (Bayesian adjustment factor 기반)
|
|
|
|
---
|
|
|
|
## 구현 계획
|
|
|
|
### 우선순위 1: Slack Lists 파일 첨부 (✅ 완료)
|
|
- 상세: 251014_slack_lists_file_attachment.md
|
|
- coldmail_briefing.py:191-221, 241: document_id → file_id 변환 완료
|
|
|
|
### 우선순위 2: LLM JSON 파싱 에러
|
|
- ir_analyzer.py:156 전: llm_response 마크다운 블록(```json) 제거
|
|
- strip("```json"), strip("```"), strip() 순차 적용
|
|
|
|
### 우선순위 3: Slack 메시지 포맷
|
|
- coldmail_briefing.py:291: summary_text에 IR 분석 결과 추가
|
|
- ir_metrics (business_area, revenue), valuation_result (median, confidence) 포함
|
|
|
|
### 우선순위 4: LangGraph 워크플로우
|
|
- coldmail_briefing.py → LangGraph 전환
|
|
- 노드: fetch_emails → filter → process_files → analyze_ir → create_list_item → send_feedback
|
|
- 조건부 분기: 첨부파일 유무, IR 분석 성공/실패
|
|
- 상태: email_data, document_ids, ir_metrics, valuation_result
|
|
|
|
---
|
|
|
|
## 교훈
|
|
|
|
### 전체 시나리오 문서화 중요성
|
|
- 개별 기능은 작동하나 최종 목표 불명확
|
|
- 교훈: 전체 시나리오 문서를 먼저 작성 후 세부 구현
|
|
|
|
### LLM 응답 형식 검증 부족
|
|
- LLM이 마크다운 블록(```json)으로 응답 → JSON 파싱 실패
|
|
- 교훈: LLM 응답은 항상 전처리 필요
|