# Design Agent 개선 사항 (Action Plan)

> 2026-03-28 갱신: Phase Q 설계 확정에 따른 재정리

## 상황 요약

- **Phase P 실행 완료**: 결과 20/100점. 다후보 렌더링 비교 방식의 구조적 한계 확인.
- **Phase Q 설계 확정**: 업계 조사 기반 재설계 — 제약 기반 블록 선택 + 글자수 예산 시스템.
- **기존 P0-P2 버그**: Phase Q에서 구조적으로 해결되는 항목과 여전히 유효한 항목 분류.

---

## 기존 버그 → Phase Q 영향 분석

### 🟡 P0: 무한 재시도 루프 — 여전히 유효

**Phase Q와 무관.** `_retry_kei()`는 Phase Q에서도 사용됨.
- **수정 필요:** MAX_RETRY_ATTEMPTS = 30, MAX_RETRY_DURATION = 300 추가
- **시점:** Phase Q 구현 시 함께 적용
- **파일:** `src/pipeline.py`

### ✅ P1: fill_candidates 실패 감지 — Phase Q에서 자동 해결

**Phase Q에서 `fill_candidates()` 자체가 제거됨.**
- Phase P의 3후보 텍스트 편집 → Phase Q의 단일 블록 텍스트 편집으로 변경
- `fill_candidates()` 대신 `fill_content()`에 예산 제약 추가
- **별도 수정 불필요** — Phase Q-5 (pipeline.py 재구성)에서 해결

### 🟡 P2: template 미발견 예외 처리 — 여전히 유효

**Phase Q와 무관.** 템플릿 로딩은 여전히 필요.
- **수정 필요:** `_resolve_template_path()` 명확한 에러 반환
- **추가 효과:** Phase Q의 catalog 검증(Q-2)이 사전에 잘못된 블록을 걸러내므로, 이 에러 발생 빈도 대폭 감소
- **시점:** Phase Q 구현 시 함께 적용
- **파일:** `src/renderer.py`

### ✅ P3: Phase L 비효율성 — Phase Q에서 자동 해결

**Phase Q에서 Phase L이 "피드백 루프 3회" → "검증 렌더링 1회"로 축소.**
- 글자수 예산 사전 계산으로 overflow 사전 방지
- 렌더링은 검증 목적 1회만
- overflow 발생 시 수학적 조정(LaTeX 글루 모델)으로 AI 없이 해결
- **별도 수정 불필요** — Phase Q-5, Q-7에서 해결

---

## Phase Q 실행 계획

**상세:** [IMPROVEMENT-PHASE-Q.md](IMPROVEMENT-PHASE-Q.md)

### 실행 순서

```
Q-1 (catalog 보강) ──┬──→ Q-2 (블록 필터) ──┐
                     └──→ Q-3 (예산 계산) ──┼──→ Q-4 (Kei 선택) ──→ Q-5 (파이프라인) ──→ Q-6 (품질 게이트) ──→ Q-8 (출력 차단)
                                            │
Q-7 (글루 모델) ←──────────────────────────┘ (독립, 병렬 가능)
P0 수정 (재시도 제한) ←── Q-5에서 함께 적용
P2 수정 (템플릿 에러) ←── Q-5에서 함께 적용
```

### 기대 효과

| 지표 | 현재 (Phase P) | Phase Q 목표 |
|------|---------------|-------------|
| 슬라이드 품질 | 20/100 | 70-80/100 |
| 처리 시간 | ~40분 | ~8-12분 |
| API 호출 | ~25회 | ~8회 |
| Selenium 호출 | ~17회 | ~2회 |
| 유령 블록 | 5건 발생 | 불가능 (catalog 검증) |
| overflow 출력 | 허용 | 차단 (품질 게이트) |
| 블록 다양성 | 3/38 사용 | relation_type 기반 자동 분산 |

---

## Phase R': 접근 C — 블록 CSS 참고 + AI 구조 결정 (다음 단계)

**상세:** [IMPROVEMENT-PHASE-R-PRIME.md](IMPROVEMENT-PHASE-R-PRIME.md)

Phase R(variant 패치)은 실패 — P=Q=R 동일 구조 반복.
**Phase R'은 근본 구조를 변경:**
- 2-3단계(블록 선택 + 슬롯 채우기) **제거**
- AI가 블록 CSS를 참고하여 HTML 구조를 **직접 생성**
- 콘텐츠가 구조를 결정 (블록이 결정하는 것이 아님)

합격 기준: C_reference.png 수준 자동 생성.

회귀 방지: block_selector, fill_candidates, fill_content 호출 금지.

### Phase R' 이후 (참고)

- 디자인 참조 DB 구축 → 성공한 슬라이드를 few-shot으로 축적
- Playwright 마이그레이션 → 더 빠른 측정 + PDF 내보내기
