Merge branch 'main' of https://git.ro-being.com/ivada_Ro-being/DOCS
This commit is contained in:
commit
8a8a56484f
@ -0,0 +1,99 @@
|
|||||||
|
# Coldmail IR 분석 실패 원인 분석
|
||||||
|
|
||||||
|
**날짜**: 2025-10-15
|
||||||
|
**작성자**: Claude
|
||||||
|
**관련 파일**:
|
||||||
|
- `rb8001/app/services/ir_analyzer.py`
|
||||||
|
- `skill-rag-file/app/api/upload.py`
|
||||||
|
- `rb8001/app/services/workflows/coldmail_workflow.py`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 문제 상황
|
||||||
|
|
||||||
|
Coldmail 브리핑 (09:05) 실행 시 IR 분석 결과 모든 필드 "N/A" 반환, Slack Lists API에서 `400 - invalid_arguments` 에러 발생.
|
||||||
|
|
||||||
|
**참조**: `251015_claude_coldmail_workflow_langgraph_test.md`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 원인 분석
|
||||||
|
|
||||||
|
### 1단계: PDF 업로드 실패
|
||||||
|
|
||||||
|
**rb8001 로그 (09:05:13)**: `Failed to upload: 400 - File already exists for this team`, 0/2 처리 성공
|
||||||
|
|
||||||
|
**코드 위치**: skill-rag-file/app/api/upload.py:62-71
|
||||||
|
|
||||||
|
중복 파일 발견 시 HTTPException 발생, document_id 반환하지 않음.
|
||||||
|
|
||||||
|
### 2단계: RAG 검색 실패
|
||||||
|
|
||||||
|
skill-rag-file /api/search 테스트 결과: `{"results":[],"total_results":0}`
|
||||||
|
|
||||||
|
team_id `3550cef6-63e1-4ceb-8802-a25c9d1c6917`에 업로드된 문서 없음 (DB 조회 0건).
|
||||||
|
|
||||||
|
중복 파일이 테스트 중 수동 삭제됨 (251015_claude_coldmail_workflow_langgraph_test.md 문제 2 참고).
|
||||||
|
|
||||||
|
### 3단계: IR 분석 "N/A" 반환
|
||||||
|
|
||||||
|
**코드 위치**: ir_analyzer.py:86-178
|
||||||
|
|
||||||
|
1. query_rag() 6회 호출 (사업분야, 투자단계, 매출, 성장률, 팀규모, 기술우위)
|
||||||
|
2. 검색 결과 없음 → raw_results 빈 딕셔너리
|
||||||
|
3. LLM에 빈 데이터 전달 → system_prompt:134 "If information is not available, use 'N/A'"
|
||||||
|
4. 모든 필드 "N/A" 반환
|
||||||
|
|
||||||
|
### 연쇄 효과
|
||||||
|
|
||||||
|
PDF 업로드 실패 → document_id = None → RAG 검색 0건 → IR 분석 "N/A" → Lists API 에러
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 해결 방안
|
||||||
|
|
||||||
|
### 1. 중복 파일 처리 개선 (필수)
|
||||||
|
|
||||||
|
**위치**: skill-rag-file/app/api/upload.py:68-71
|
||||||
|
|
||||||
|
**현재**: 중복 시 HTTPException 발생
|
||||||
|
|
||||||
|
**개선**: 중복 시 기존 document_id 반환 (멱등성 보장)
|
||||||
|
|
||||||
|
### 2. IR 분석 실패 감지
|
||||||
|
|
||||||
|
**위치**: rb8001/app/services/coldmail_processor.py
|
||||||
|
|
||||||
|
**추가**: 모든 필드 "N/A" 시 처리 실패로 간주, 로그 기록
|
||||||
|
|
||||||
|
### 3. LangGraph 체크포인트 활성화
|
||||||
|
|
||||||
|
**위치**: workflows/coldmail_workflow.py:145
|
||||||
|
|
||||||
|
**현재**: `workflow.compile()` (stateless)
|
||||||
|
|
||||||
|
**개선**: PostgresSaver 추가로 IR 분석 실패 시 해당 노드만 재시도 가능
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 교훈
|
||||||
|
|
||||||
|
### 중복 체크는 경고, 에러 아님
|
||||||
|
중복 파일 시 기존 리소스 반환으로 워크플로우 계속 진행 (멱등성 보장)
|
||||||
|
|
||||||
|
### Cascading Failure 방지
|
||||||
|
PDF 업로드 실패 → 전체 IR 분석 실패. 체크포인트로 부분 실패 격리 필요.
|
||||||
|
|
||||||
|
### 프레임워크 도입 vs 실효성
|
||||||
|
LangGraph 도입했으나 체크포인트 없이 stateless 실행 = 코드 정리만 달성. 핵심 기능까지 구현해야 실효성.
|
||||||
|
|
||||||
|
### 로그 수집 검증
|
||||||
|
skill-rag-file 로그가 OpenSearch 미수집. 모든 서비스 로그 수집 검증 필요.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 참고 문서
|
||||||
|
|
||||||
|
- 251015_claude_coldmail_workflow_langgraph_test.md: 테스트 결과
|
||||||
|
- 251014_coldmail_ir_analysis_scenario.md: IR 분석 시나리오
|
||||||
|
- 250925_langgraph_vs_n8n_comparison.md: 체크포인트 개념
|
||||||
@ -54,25 +54,12 @@ ssh -i ~/.ssh/id_rsa_deploy -p 51123 admin@192.168.219.45 \
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 문제 4: Lists API invalid_arguments
|
|
||||||
|
|
||||||
**증상**: `400 - invalid_arguments`
|
|
||||||
|
|
||||||
**원인**: IR 분석 결과 모든 필드 "N/A"
|
|
||||||
|
|
||||||
**상태**: 미해결
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 검증 결과
|
## 검증 결과
|
||||||
|
|
||||||
**성공**:
|
**성공**:
|
||||||
- LangGraph 워크플로우 정상 동작
|
- LangGraph 워크플로우 정상 동작
|
||||||
- Lists API 통합 (테스트 아이템 Rec09LJQYLAH2)
|
- Lists API 통합 (테스트 아이템 Rec09LJQYLAH2)
|
||||||
|
|
||||||
**실패**:
|
|
||||||
- IR 분석 실패 (모든 필드 "N/A")
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 교훈
|
## 교훈
|
||||||
@ -89,6 +76,4 @@ ssh -i ~/.ssh/id_rsa_deploy -p 51123 admin@192.168.219.45 \
|
|||||||
|
|
||||||
## 남은 작업
|
## 남은 작업
|
||||||
|
|
||||||
1. IR 분석 개선
|
IR 분석 실패 원인 및 해결 방안: `251015_claude_coldmail_ir_analysis_failure.md` 참고
|
||||||
2. coldmail_processor.py:73 필드 검증
|
|
||||||
3. 부분 실패 에러 핸들링
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user