# 콜드메일 다중 확인 루프 및 요약 메시지 개선

**작성일**: 2026-01-21
**관련 파일**: `rb8001/app/services/workflows/coldmail_workflow.py`

---

## 문제 상황

1. **다중 이메일 확인 시 1개만 처리**: 오다가다, 에듀온 2개 모두 "맞음" 클릭 → 에듀온만 처리됨
2. **요약 메시지 부적절**: `None억원 (신뢰도 0%)` 표시 → IR 분석 안 된 건 의미 없는 정보

---

## 아키텍처 (현재 vs 개선)

### 현재 (버그)

```
wait_confirmation (interrupt) 
    ↓ 버튼 클릭 1회
confirm → send → END  ← 워크플로우 종료, 나머지 대기 이메일 유실
```

- 현재 엣지: `confirm → send` (L352, 고정 엣지)

### 개선 (루프)

```
wait_confirmation (interrupt)
    ↓ 버튼 클릭
confirm 
    ↓ 남은 대기 있으면
    ↓ → wait_confirmation (다시 interrupt)
    ↓ 없으면
send → END
```

---

## 필요 작업

### Phase 1: 다중 확인 루프 구현 (TDD)

1. **Red**: `tests/test_coldmail_workflow_multi_confirm.py` 작성
   - 2개 이상 waiting_confirmation 시나리오
   - 첫 번째 confirm 후 다시 wait_confirmation으로 루프 확인
2. **Green**: 코드 수정
   - `route_after_confirm()` 함수 추가 (L311 이후)
     - `waiting_confirmation` 남아있으면 `"wait_confirmation"` 반환
     - 없으면 `"send"` 반환
   - L352 `confirm → send` 고정 엣지를 조건부 엣지로 변경
3. **Refactor**: 필요 시 정리

### Phase 2: 요약 메시지 개선 (TDD)

1. **Red**: 테스트 케이스 추가
   - `median`이 None인 경우 표시 문구 검증
2. **Green**: `send_node` 수정 (L260-279)
   - `median`이 None이면 `"등록 완료 (IR 분석 대기)"` 표시
3. **Refactor**: 필요 시 정리

---

## 예상 변경 범위

| 파일 | 변경 내용 |
|------|----------|
| coldmail_workflow.py L311~ | `route_after_confirm()` 함수 추가 |
| coldmail_workflow.py L352 | `confirm → send` 조건부 엣지로 변경 |
| coldmail_workflow.py L260-279 | `send_node` 요약 포맷 수정 (median None 처리) |
| tests/test_coldmail_workflow_multi_confirm.py | 다중 확인 루프 테스트 (신규) |

---

## 검증 절차

### 단위 테스트
```bash
cd /home/admin/ivada_project/rb8001
docker exec rb8001 pytest tests/test_coldmail_workflow_multi_confirm.py -v
```

### E2E 테스트 (실제 Slack)
1. 콜드메일 2건 이상 대기 상태 생성
2. Slack에서 첫 번째 "맞음" 클릭 → 다시 interrupt 대기 확인
3. 두 번째 "맞음" 클릭 → 요약 메시지 전송 확인

### 배포 후 확인
```bash
git push origin main
# Gitea Actions 완료 대기
docker ps | grep rb8001  # 재시작 확인
docker logs rb8001 --tail 50  # 에러 확인
```
