DOCS/troubleshooting/251015_claude_coldmail_ir_analysis_failure.md
Claude-51124 0adf06aa41 docs: IR 분석 실패 원인 분석 문서 추가
- 251015_claude_coldmail_ir_analysis_failure.md: IR 분석 실패 근본 원인 및 해결 방안 (99줄)
- 251015_claude_coldmail_workflow_langgraph_test.md: 문제 4 섹션 분리, 참조 링크 추가

PDF 업로드 실패 → RAG 검색 0건 → IR 분석 "N/A" → Lists API 에러 연쇄 효과 분석.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 12:32:24 +09:00

3.0 KiB

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: 체크포인트 개념