docs: Slack Lists 동적 매핑 및 LLM 에러 복구 해결 방안 추가
- Slack Lists 컬럼 조회 API + 동적 매핑으로 하드코딩 제거 - LangGraph 체크포인트 + LLM 기반 에러 분석 노드 추가 - 페이로드 수정 후 재시도 구조 설계 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
893e613981
commit
0be1548ccc
@ -60,19 +60,40 @@ PDF 업로드 실패 → document_id = None → RAG 검색 0건 → IR 분석 "N
|
|||||||
|
|
||||||
**개선**: 중복 시 기존 document_id 반환 (멱등성 보장)
|
**개선**: 중복 시 기존 document_id 반환 (멱등성 보장)
|
||||||
|
|
||||||
### 2. IR 분석 실패 감지
|
### 2. Slack Lists 동적 컬럼 매핑
|
||||||
|
|
||||||
**위치**: rb8001/app/services/coldmail_processor.py
|
**문제**: 하드코딩된 컬럼 ID (Col09HQTDUM0T 등) - Lists 필드 변경 시 코드 수정 필요
|
||||||
|
|
||||||
**추가**: 모든 필드 "N/A" 시 처리 실패로 간주, 로그 기록
|
**해결**:
|
||||||
|
1. skill-slack에 Lists 컬럼 조회 API 추가 (`GET /api/v1/lists/{list_id}/columns`)
|
||||||
|
2. coldmail_processor.py에서 컬럼명으로 동적 매핑 (`"회사명" → Col09HQTDUM0T`)
|
||||||
|
3. 컬럼 누락 시 해당 필드만 skip, 나머지 전송
|
||||||
|
|
||||||
### 3. LangGraph 체크포인트 활성화
|
**효과**: Lists 구조 변경 시 코드 수정 불필요
|
||||||
|
|
||||||
**위치**: workflows/coldmail_workflow.py:145
|
### 3. LangGraph 체크포인트 + LLM 기반 에러 복구
|
||||||
|
|
||||||
**현재**: `workflow.compile()` (stateless)
|
**위치**: workflows/coldmail_workflow.py
|
||||||
|
|
||||||
**개선**: PostgresSaver 추가로 IR 분석 실패 시 해당 노드만 재시도 가능
|
**현재 구조** (stateless):
|
||||||
|
```
|
||||||
|
메일 조회 → PDF 업로드 → IR 분석 → Slack 전송
|
||||||
|
```
|
||||||
|
|
||||||
|
**개선 구조** (체크포인트 + 에러 복구):
|
||||||
|
```
|
||||||
|
메일 조회 → PDF 업로드 → IR 분석 → Slack 전송
|
||||||
|
↓ (400 에러)
|
||||||
|
LLM 에러 분석 → 페이로드 수정 → 재전송
|
||||||
|
```
|
||||||
|
|
||||||
|
**구현**:
|
||||||
|
1. PostgresSaver 체크포인트 활성화
|
||||||
|
2. Slack 전송 실패 시 에러 메시지 + 원본 payload를 LLM에게 전달
|
||||||
|
3. LLM structured output으로 수정된 payload 받아서 재시도
|
||||||
|
4. 각 노드별 실패 시 해당 지점부터 재시도 (처음부터 재실행 방지)
|
||||||
|
|
||||||
|
**제약**: Slack API가 상세 에러 정보 제공해야 LLM이 수정 가능
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user