# 리팩토링 달성 내용 v3 (상세 기획)

> Updated: 2026-03-22
> 이전: v2 (아웃룩 단독/합성), v1 (LiteLLM 통합)

---

## 전체 파이프라인 (17단계)

```
[분석 Phase]
1. entity_style        — Gemini Pro: 스타일+요소 이름+visual_world_rules 추출
2. entity_review       — GPT: 요소 리뷰/필터
3. entity_detail_batch — GPT: 요소 상세 추출 (병렬)
4. entity_t2i          — Gemini Flash: T2I 프롬프트 (병렬)
5. scene_segmentation  — Gemini Lite: 정규식+AI 씬 세그먼테이션
6. scene_split         — Gemini Flash: 긴 씬 분할
7. scene_director      — Gemini Pro: 전체 씬 일괄 물리적 존재 판별 ★NEW
8. scene_dependency    — Gemini Pro: 씬 연관 분석
9. outlook_extraction  — GPT: 아웃룩 추출 (등록 캐릭터만, director 결과 사용)
10. scene_detail       — GPT: 씬 상세 분석 (병렬, 씬별 요소만 전달)
11. scene_verify       — Gemini Pro: 교차 검증

[이미지 Phase]
12. world_guide        — GPT: 월드 가이드
13. ref_image_gen      — Gemini Image: 얼굴+배경+소품+아웃룩단독+합성
14. composite_image_gen — (ref_image_gen에서 자동 완료)
15. scene_image_pipeline — Gemini Image+GPT LVM+fal.ai

[보조]
16. project_summary    — Gemini Pro
17. outlook_dedup      — GPT
```

## scene_director (핵심 변경)

### 목적
각 씬에서 카메라에 물리적으로 보이는 인물만 판별.
빙의/원격접속/몽타주/회상/꿈 등 특수 상황에서 인물 오배정 방지.

### 구현
- **전체 씬 일괄 1회 호출** (씬별 개별 X)
- 시나리오 전문을 씬 JSON으로 구성하여 한번에 전달
- 앞쪽 씬 맥락 추적: "씬 순서대로 읽으며 접속/빙의 상태를 추적하세요"
- visual_world_rules 포함
- 출력: 씬별 캐릭터 PRESENT/NOT_PRESENT + 사유

### 하위 단계 연동
- outlook_extraction: `scene_present_characters`로 PRESENT 인물만 전달
- scene_detail: outlook_extraction 결과의 `scene_assignments` 기준으로 요소 필터

### 특수 씬 처리
| 유형 | 처리 |
|------|------|
| 몽타주/교차편집 | 각 장소의 물리적 존재 인물만 |
| 소울라이드/빙의 | 접속자 NOT_PRESENT, 대상자 몸만 PRESENT |
| 회상/꿈/환각 | 현재 시점 인물만 |
| V.O. | 화면에 안 보이므로 제외 |
| 대사하더라도 | 물리적 존재 별도 판단 필요 |

## visual_world_rules

### 추출 (entity_style)
- 시나리오 전문에서 LLM이 자동 추출 (2~5개)
- "이 인물이 이 장소에 물리적으로 존재하는가?" 판단 규칙만
- 하드코딩 금지, 시나리오별 다르게 생성

### 전달
- scene_director: 시스템 프롬프트에 포함
- outlook_extraction: 시스템 프롬프트에 포함
- scene_detail: 시스템 프롬프트에 포함

## 이미지 파이프라인 3단계

```
Phase 1: 기본 참조 (얼굴 1:1, 배경 16:9, 소품 1:1)
Phase 2: 아웃룩 단독 (1:1, 마네킹, 얼굴 없이)
Phase 3: 합성 (16:9, 얼굴 ref + 아웃룩 ref → 전신)
```

## 씬 이미지 생성

```
T2I 변형 N-1개 (LLM 생성, 편집 가능)
  → 참조 매칭 (합성 우선 + 이전 씬)
  → 프롬프트 번역 (Gemini Flash)
  → Gemini T2I 생성
  → GPT LVM 검증
  → GPT 앵글 추천
  → fal.ai 앵글 적용 (+1개)
  → GPT 최종 선택 (primary)
```

총 이미지: N개 (config: 3 = T2I 2 + fal.ai 1)

## 모델 배정

| 단계 | 모델 | 이유 |
|------|------|------|
| entity_style | Gemini Pro | 시나리오 전문 분석, 비용 효율 |
| scene_director | Gemini Pro | 전체 씬 일괄 맥락 분석 |
| outlook_extraction | GPT-5.5 | 물리적 존재 정밀 판단 |
| scene_detail | GPT-5.5 | T2I 프롬프트 품질 |
| LVM 검증/비교 | GPT-5.5 | Vision 판단 |
| 이미지 생성 | Gemini Image | T2I |
| 프롬프트 번역 | Gemini Flash | 비용 효율 |
