--- 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: 프런트 수정