# IR Deck 처리 시스템 현재 상태 분석 **날짜**: 2025-12-06 **작성자**: Auto **관련 파일**: - `rb8001/app/router/ir_deck.py` (377줄) - `rb8001/app/services/ir_deck_analyzer.py` (693줄) - `rb8001/app/services/coldmail_processor.py` (484줄) - `rb8001/app/router/slack_handler.py` - `skill-rag-file/app/api/upload.py` - `skill-rag-file/app/services/text_extractor.py` --- ## 입력 루트별 구현 상태 ### 1. 콜드메일 (이메일) **파일**: `rb8001/app/services/coldmail_processor.py` - **워크플로우**: `coldmail_workflow.py` (LangGraph) - **스케줄러**: `coldmail_briefing.py` (평일 9시 5분) - **분석 엔진**: `ir_analyzer.py` (베이지안 밸류에이션) - **IR deck 평가 연동**: ❌ 없음 (`ir_deck_analyzer.py` 미사용) - **Slack Lists 등록**: ✅ 구현됨 (회사명, 이메일, IR 파일 첨부) - **Slack 채널 메시지**: ✅ 구현됨 (요약 메시지 + 피드백 버튼) ### 2. Slack 파일 업로드 **파일**: `rb8001/app/router/slack_handler.py:58-121` - **처리**: 파일을 skill-rag-file로 업로드 - **IR deck 평가 연동**: ❌ 없음 (업로드만 하고 평가 안 함) - **Slack Lists 등록**: ❌ 없음 - **쓰레드 처리**: 확인 필요 ### 3. 웹 프론트엔드 **파일**: `rb8001/app/router/ir_deck.py` - **엔드포인트**: - `POST /api/ir-deck/upload` - PDF 업로드 - `POST /api/ir-deck/evaluate` - 평가 실행 - `GET /api/ir-deck/evaluation/{id}` - 결과 조회 - `POST /api/ir-deck/chat` - 후속 질문 답변 ✅ 구현됨 - `POST /api/ir-deck/feedback` - 피드백 저장 - **분석 엔진**: `ir_deck_analyzer.py` (Sequoia Capital 기준) - **후속 질문 답변**: ✅ 구현됨 (RAG 검색 + LLM 답변 생성) --- ## 공통 기능 상태 ### OCR 기능 **파일**: `skill-rag-file/app/services/text_extractor.py:136-214` - **구현**: pdftotext → PyPDF2 → OCR(pytesseract) 순서 - **품질 휴리스틱**: 저품질 감지 시 강제 OCR - **동작 여부**: 코드는 있으나 실제 동작 확인 필요 ### 중복 검사 **파일**: `skill-rag-file/app/api/upload.py:101-139` - **방식**: 파일 해시(SHA256) 기반 - **동작**: 중복 파일 발견 시 기존 `document_id` 반환 (멱등성 보장) - **IR 평가 레벨**: `force_reevaluate` 파라미터로 처리 (기본값: false) --- ## 문제점 정리 ### 1. 기능 파편화 - **콜드메일**: `ir_analyzer.py` 사용 (베이지안 밸류에이션) - **웹 프론트**: `ir_deck_analyzer.py` 사용 (Sequoia Capital 기준) - **두 분석 엔진이 분리되어 통합 필요** ### 2. 콜드메일 → IR deck 평가 미연동 - 콜드메일은 `ir_analyzer.py`만 사용 - `ir_deck_analyzer.py`의 Sequoia Capital 기준 평가 미사용 - Slack Lists에 평가 점수/등급 미포함 ### 3. Slack 파일 업로드 → IR deck 평가 미연동 - 파일 업로드만 하고 평가 안 함 - Slack Lists 등록 안 됨 ### 4. 출력 형식 정리 필요 - 콜드메일 채널 메시지 형식 개선 필요 - Slack Lists 컬럼 매핑 정리 필요 (문서: `251122_coldmail_slack_lists_column_mapping_spec.md`) ### 5. 수정 기능 없음 - 자연어로 리스트 항목 수정하는 기능 없음 ### 6. 잘못된 등록 방지 - 이상하게 올라가는 케이스 방지 로직 필요 ### 7. OCR 동작 확인 필요 - 코드는 있으나 실제 동작 여부 불명확 --- ## 확인된 구현 상태 ### ✅ 구현 완료 - 웹 프론트엔드 후속 질문 답변 (`/chat` 엔드포인트) - skill-rag-file 중복 검사 (파일 해시 기반) - 콜드메일 Slack Lists 등록 - 콜드메일 Slack 채널 메시지 ### ❌ 미구현/미연동 - 콜드메일 → IR deck 평가 연동 - Slack 파일 업로드 → IR deck 평가 연동 - Slack 파일 업로드 → Slack Lists 등록 - 자연어 수정 기능 - 잘못된 등록 방지 로직 ### ⚠️ 확인 필요 - OCR 실제 동작 여부 - Slack 리스트 쓰레드 처리 - 웹 프론트 중복 검사 (IR 평가 레벨) --- ## 교훈 ### 통합 설계 필요 - 입력 루트별로 다른 분석 엔진 사용 → 통합 필요 - 공통 IR deck 평가 엔진으로 통합 후, 루트별 어댑터 패턴 적용 ### 기능 파편화 해결 - 콜드메일과 웹 프론트가 같은 기능을 다른 방식으로 구현 - 공통 서비스 계층으로 추출 필요