---
tags: [worklog, ir-deck, pydantic, validation, rb8001, deployment]
---

# IR Deck Pydantic-only 출력검증 구현 및 배포검증

## 관련 문서
- [Pydantic AI 도입 기반 LLM 출력 안정화 아이디어](../ideas/260313_pydantic_ai_도입_기반_llm_출력_안정화_아이디어.md)
- [Pydantic AI 도입 기반 LLM 출력 안정화 방향확정 리서치](../research/260313_pydantic_ai_도입_기반_llm_출력_안정화_방향확정_리서치.md)
- [Pydantic AI 부분 도입 LLM 출력안정화 계획](../plans/260313_pydantic_ai_부분도입_llm_출력안정화_계획.md)

## 완료 요약
- `rb8001`의 `IR Deck` 종합 평가 경로에 `Pydantic-only` typed validation을 추가했습니다.
- `100점 + B등급` 같은 모순 출력은 1회 재질의 후에도 해결되지 않으면 저장하지 않도록 변경했습니다.
- `grade`, `recommendation`은 서버 최종값으로 재계산하도록 고정했습니다.

## 구현 내용
- 추가:
  - `rb8001/app/services/ir_deck_output_models.py`
- 수정:
  - `rb8001/app/services/ir_deck_analyzer.py`
  - `rb8001/tests/test_ir_deck_json_parsing.py`
- 핵심 변경:
  - `raw -> Pydantic model_validate -> finalize -> save` 경계 추가
  - `story_scores` 정규화 함수 추가
  - `summary` fallback 생성 후 최소 길이 검증 추가
  - validator 실패 시 같은 프롬프트 재호출 1회 추가

## 검증 결과
- 컨테이너 내부 테스트:
  - `pytest /code/tests/test_ir_deck_json_parsing.py` → `15 passed`
  - `pytest /code/tests/test_ir_deck_workflow.py` → `5 passed`
- 배포 검증:
  - `git push origin main` 완료
  - `rb8001` 컨테이너 재시작 확인
  - 재시작 후 `curl localhost:8001/health` 정상 응답 확인

## 배포 확인 값
- 푸시 커밋: `cc8f281`
- 배포 후 `rb8001` 시작 시각:
  - `2026-03-13T09:28:41Z`
- 배포 후 상태:
  - `rb8001 Up 22 seconds (healthy)` 확인 후 헬스 응답 정상

## 한 줄 결론
- 이번 작업으로 `IR Deck` 종합 평가는 기존 `LangGraph`를 유지한 채, `Pydantic-only` 검증 계층을 통해 모순된 구조화 출력 저장을 차단하는 상태로 전진했습니다.
