---
date: 2026-03-26
subject: IR Deck 평가 빈 응답 + 무한 폴링 문제
status: closed
closed_date: 2026-03-27
closed_reason: "260326_ir_eval_empty_response_resolved.md에서 해결 확인. DB status/failed 갱신, response_format, max_tokens 수정 완료. open 문서는 계획 초안이었고, 실제 적용 후 종료 기록은 resolved 문서에 있음."
writer: 24-claude (총괄)
investigators: 24-Cursor(백엔드), 24-Codex(API), 23-Cursor(프런트), 24-Gemini(로그)
---

# IR Deck 평가 빈 응답 + 무한 폴링

## 현상
- LLM evaluation이 빈 응답 반환 시 DB에 아무 상태도 안 남음
- 프런트가 evaluation_id로 조회 시 영원히 404
- 3분간 2초마다 폴링 (최대 90회 무의미한 호출)

## 근본 원인

| 위치 | 문제 | 위반 원칙 |
|------|------|----------|
| `ir_deck_analyzer.py` `_evaluate_comprehensive` | 실패 시 ValueError만 올리고 DB에 기록 없음 | coding-principles §3 (실패 의미 보존) |
| `ir_deck_evaluations` 테이블 | status 컬럼 없음 — 성공 INSERT만 존재 | coding-principles §5 (관측 가능) |
| `ir_deck.py` GET endpoint | DB에 행 없으면 404 — "실패"와 "미존재" 구분 불가 | coding-principles §3 |
| `useEvaluation.ts` | 404를 "아직 처리 중"으로 해석, 폴링 지속 | coding-principles §4 (폴백 절제) |

## 수정 계획

### 백엔드 (24서버, rb8001)
1. `ir_deck_evaluations`에 `status` 컬럼 추가 (pending/completed/failed)
2. POST /evaluate 시 즉시 `status: pending`으로 INSERT
3. 성공 시 `completed`, 실패 시 `failed` + error_message UPDATE
4. GET endpoint: pending→200+pending, failed→200+failed, completed→기존 응답

### 프런트 (23서버, frontend-ir-valuation)
1. 응답 status 필드 분기: pending→계속, completed→중단+표시, failed→중단+"평가 실패"
2. 404 3회 연속 시 폴링 중단
3. 3분 타임아웃 유지

## 에이전트 배분
- 24-Cursor: 백엔드 수정
- 23-Cursor: 프런트 수정
