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

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

---

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

```
[분석 Phase — order 1~12]
 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: 씬 세그먼테이션
 6. scene_split         — Gemini Flash: 긴 씬 분할
 7. scene_director      — Gemini Pro: 물리적 존재 판별 (전체 씬 일괄)
 8. scene_cinematography— GPT: 촬영 기법 선택 (전체 씬 일괄) ★NEW
 9. scene_dependency    — Gemini Pro: 씬 연관 분석
10. outlook_extraction  — GPT: 아웃룩 추출 (director 결과 기반)
11. scene_detail        — GPT: 씬 상세 분석 (병렬, 촬영 기법 지시 포함)
12. scene_verify        — Gemini Pro: 교차 검증

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

[보조 — order 100~101]
100. project_summary
101. outlook_dedup
```

---

## scene_cinematography (촬영 감독) ★NEW

### 목적
전체 에피소드의 감정 곡선을 고려하여 씬별 촬영 기법 2가지 선택.
연속 씬에서 같은 기법 반복 방지, 다양한 시각적 리듬 확보.

### 30개 촬영 기법 (DB 관리)

| 카테고리 | 기법 수 | 예시 |
|----------|---------|------|
| emotion (감정/인물) | 8 | emotional_close_up, split_lighting_duality |
| dialogue (관계/대화) | 6 | over_shoulder_dialogue, two_shot_relationship |
| tension (긴장/권력) | 6 | low_angle_dominance, dutch_angle_tension |
| action (액션/동적) | 5 | wide_action_motion, handheld_chaos |
| environment (환경/연출) | 5 | establishing_environment, bird_eye_overview |

- `shot_type` DB 테이블에 저장 (is_active로 활성/비활성 관리)
- 각 기법에 `llm_description`: LLM이 T2I 프롬프트 작성 시 참고하는 카메라 구도 설명
- 사용자가 UI에서 기법 추가/수정/비활성화 가능

### 흐름
```
scene_cinematography (전체 씬 1회 호출):
  → 30개 기법 목록 + 전체 씬 요약 전달
  → 씬별 shot_1, shot_2 선택 + focus(누구/어디 중심) + 이유
  → scene_still DB에 shot_type_1/2 저장

scene_detail (씬별 병렬):
  → 선택된 기법의 llm_description을 프롬프트에 포함
  → var_1: shot_1 기반 T2I, var_2: shot_2 기반 T2I
  → 기존 카메라 자유선택 지시 제거 (충돌 방지)
```

### UI
- 씬 모달에서 shot_type_1/2 표시
- PipelineStepsPanel에 단계 + 모델 선택

---

## scene_director (물리적 존재 판별)

### 핵심 변경 (v3에서)
- 씬별 개별 → **전체 씬 일괄 1회 호출**
- 앞쪽 씬 맥락 추적: 접속/빙의 상태 유지
- "대사하더라도 물리적 존재 별도 판단" 규칙 추가

### 검증 결과
- 씬#5 (캡슐 동기화): 김의원 NOT_PRESENT ✅ ("49번에 소울라이드, VIP룸에 있음")
- 씬#8 (야산 액션): 강의원 NOT_PRESENT ✅ ("동녘 몸에 접속 중, 본체 없음")

---

## visual_world_rules

- entity_style에서 시나리오 전문 기반 자동 추출 (2~5개)
- 하드코딩 금지 — 시나리오마다 다른 규칙 생성
- scene_director, outlook_extraction, scene_detail 시스템 프롬프트에 포함

---

## 이미지 파이프라인

### 3단계 분리
1. 얼굴 (1:1) → 2. 아웃룩 단독 (1:1, 마네킹) → 3. 합성 (16:9, 얼굴+아웃룩)

### 씬 이미지
- 참조: 합성 우선, fallback으로 얼굴+아웃룩 분리
- 이전 씬: labeled_refs에 포함 (프롬프트에 Reference image N)
- 앵글: GPT Vision 추천 (앞쪽 씬 텍스트 맥락 포함) + fal.ai 적용
- 총 N개: T2I (N-1) + fal.ai (1)

---

## 앞쪽 씬 맥락 전달

| 단계 | 이전 | 현재 |
|------|------|------|
| scene_detail (T2I 생성) | 헤딩만 | 헤딩 + **텍스트 300자** |
| 앵글 추천 (GPT Vision) | 없음 | 앞쪽 씬 **제목 + 설명** (텍스트만, 이미지 X) |
| 씬 이미지 생성 | 이미지만 | 프롬프트에 **Reference image N: continuity** |

---

## 모델 배정

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