3.3 KiB
3.3 KiB
Coldmail Workflow LangGraph 테스트
날짜: 2025-10-15 작성자: Claude 관련 파일:
rb8001/app/services/workflows/coldmail_workflow.pyrb8001/app/services/coldmail_processor.py:73rb8001/.env:43,98-99,139
배경
LangGraph 기반 coldmail workflow 테스트 (Priority 2,3,4 완료 후)
- 코드 단순화: 316줄 → 114줄
- 노드: fetch → filter → process → send
문제 1: Docker 빌드 타임아웃
증상: INFO: pip is looking at multiple versions of langchain-openai...
원인:
- requirements.txt:20
openai==1.6.1(구버전) - langchain-openai는
openai>1.109.1필요 - 버전 불일치로 dependency resolver 타임아웃
해결: requirements.txt:20,40-42
- openai>=1.110.0
- langchain==0.3.27
- langchain-openai==0.3.35
- langgraph==0.6.10
문제 2: PDF 업로드 중복 에러
증상: Failed to upload [공문]...pdf: 400 - File already exists for this team
원인:
- 이전 테스트 파일이 team_document 테이블에 남아있음
- file_hash 중복 체크로 재업로드 차단
해결: PostgreSQL 직접 접속하여 삭제
ssh -i ~/.ssh/id_rsa_deploy -p 51123 admin@192.168.219.45 \
"PGPASSWORD=robeings psql -h localhost -U robeings -d main_db -c \
\"DELETE FROM team_document WHERE id IN (...);\""
문제 3: Slack 401 Unauthorized
증상:
Failed to upload file to Slack: 401
Failed to create list item: 401
원인 1: 토큰 워크스페이스 불일치
- 테스트 List F09J1HPPQJG는 Robeing 워크스페이스 (T0925SXPS4D)
- .env:98 SLACK_BOT_TOKEN이 Company-X 토큰 사용 중
해결 1: .env:98-99
- SLACK_BOT_TOKEN을 Robeing 토큰으로 변경 (xoxb-9073915808149...)
- SLACK_LIST_ID=F09J1HPPQJG 유지
원인 2: API Key 누락
{"detail":"API key is missing"}- SKILL_SLACK_API_KEY 환경변수 없음
해결 2: .env:43
- SKILL_SLACK_API_KEY=skill-slack-api-key-2025 추가
재시작: docker compose down && docker compose up -d (restart 불가)
문제 4: Lists API invalid_arguments
증상: Failed to create list item: 400 - invalid_arguments
원인: IR 분석 실패로 모든 필드 "N/A" 반환
- coldmail_processor.py:73에서 business_area="N/A" 가져옴
- company_name="" → Lists API 거부
상태: 미해결 (IR 분석 개선 필요)
검증 결과
성공:
- ✅ LangGraph 워크플로우 정상 동작
- ✅ Lists API 통합 성공 (테스트 아이템 Rec09LJQYLAH2 생성)
- ✅ Robeing 토큰 인증 성공
실패:
- ❌ IR 분석 실패 (모든 필드 "N/A")
- ❌ company_name="" → Lists API 에러
교훈
테스트 환경 설정
- List ID와 SLACK_BOT_TOKEN의 워크스페이스 일치 필수 확인
- 환경변수 체크리스트 작성 (SKILL_SLACK_API_KEY 등)
- 테스트 전 DB 중복 데이터 정리
에러 핸들링
- IR 분석 실패 시 "N/A" 대신 유효한 기본값 사용
- Lists API 전송 전 필드 검증 필요
배포 프로세스
- .env 수정 후
docker compose down && up -d(restart 불가) - 로그 확인 순서: rb8001 → skill-slack → skill-rag-file
남은 작업
- IR 분석 개선 (ChromaDB 검색/LLM 프롬프트)
- coldmail_processor.py:73 필드 검증 추가
- 부분 실패 시 에러 핸들링 강화