# task-855.1 완료 보고서: GPT Image 1 프롬프트 고도화 + 재테스트

## SCQA

**S**: task-853.1에서 GPT Image 1로 3개 시나리오(GA 리크루팅/전문성 브랜딩/전직 유도)를 medium 품질로 생성했으나, "초보 GPT 사용자 수준, 광고 업로드 불가"로 평가됨.

**C**: v1 프롬프트가 지나치게 단순하여 스톡 사진 느낌의 결과물만 생산됨. Shot composition, lighting, color theory, negative prompting 등 전문 광고 프롬프트 엔지니어링 기법이 전혀 적용되지 않았음.

**Q**: 전문 광고 프롬프트 엔지니어링 기법을 적용하고 quality=high 옵션을 추가하면, 실제 광고 업로드 가능한 수준의 이미지를 생성할 수 있는가?

**A**: V2 고도화 프롬프트(rule of thirds, rim lighting, volumetric light, cinematic composition 등) 적용 결과, quality=high에서 광고 캠페인 수준의 결과물 달성. 6개 이미지(3시나리오 × 2품질) 전체 생성 성공. 다만 한글 텍스트는 quality=medium에서 오타 발생(시나리오 C), quality=high에서만 안정적.

---

## 생성/수정 파일 목록

- **수정**: `/home/jay/workspace/tools/ai-image-gen/generate_ai_image.py`
  - V2_SCENARIOS 딕셔너리 추가 (47~93행)
  - `--prompt-version` CLI 인자 추가
  - 출력 디렉토리 v1/v2 분기 로직
  - run_generation()에 output_dir, prompt_version 파라미터 추가
- **생성**: `/home/jay/workspace/tools/ai-image-gen/output/v2-gpt-advanced/` (6개 이미지 + results.json)
  - `gpt_A_high.png` (1,616,849 bytes)
  - `gpt_A_medium.png` (1,372,953 bytes)
  - `gpt_B_high.png` (1,433,826 bytes)
  - `gpt_B_medium.png` (1,373,067 bytes)
  - `gpt_C_high.png` (1,573,770 bytes)
  - `gpt_C_medium.png` (1,336,342 bytes)
  - `results.json` (1,693 bytes)

---

## v1 vs v2 비교 분석

### 시나리오 A (GA 리크루팅)

- **v1**: 4명의 비즈니스 인물 그룹 사진, 스톡 사진 느낌, 일반적인 사무실 배경. "당신의 커리어, 새로운 시작" + "보험대리점 GA RECRUITING" 텍스트.
- **v2 high**: 100층 서울 파노라마 뷰 오피스에서 네이비 수트 입은 30대 남성 단독 포트레이트. 골든아워 역광 rim lighting, 서울 스카이라인 배경. "새로운 시작" + "100층 전망 | 보험대리점 모집" 텍스트 정상 렌더링.
- **개선점**: 스톡 사진 → 프리미엄 광고 캠페인 수준. 조명/구도/색감 모두 전문적.

### 시나리오 B (전문성 브랜딩)

- **v1**: 단순 인물 포트레이트, 사무실 창 배경, "보험의 모든 것" 텍스트. 링크드인 프로필 사진 수준.
- **v2 high**: 고급 상담실 환경(원목 책상, 서재 배경), 안경 착용 40대 컨설턴트, warm amber 톤. 텍스트 없이 이미지 품질에 집중. 프라이빗 뱅킹 광고 수준.
- **개선점**: 일반 인물 → 프리미엄 금융 브랜딩. 환경 디테일과 색감이 신뢰감 전달.

### 시나리오 C (전직 유도 감성)

- **v1**: 단순 좌우 분할 이미지(어두운 사무실 | 밝은 사무실), "지금이 기회입니다" 텍스트. 직설적이고 평면적.
- **v2 high**: 어두운 복도에서 밝은 문으로 걸어가는 실루엣. 볼류메트릭 갓레이, 영화적 연출(Nolan/Villeneuve 스타일). "지금, 당신의 차례" 텍스트 정상 렌더링. 영화 포스터 수준.
- **개선점**: 리터럴 분할 → 시네마틱 메타포. 극적 조명과 구도로 감정적 임팩트 극대화.

### quality=medium vs quality=high 비교

- **생성 시간**: high 평균 38.3초 vs medium 평균 17.6초 (high가 2.2배 소요)
- **파일 크기**: high 평균 1,541,482 bytes vs medium 평균 1,360,787 bytes (high가 13% 더 큼)
- **비용**: high $0.167 vs medium $0.042 (high가 4배)
- **한글 렌더링**: high에서 3시나리오 모두 정상, medium에서 시나리오 C 오타 발생
- **결론**: 한글 텍스트 포함 시 quality=high 필수. 텍스트 없는 이미지(시나리오 B)는 medium도 충분.

### 총 비용

- v2 high 3건: $0.167 × 3 = $0.501
- v2 medium 3건: $0.042 × 3 = $0.126
- **v2 총계: $0.627**
- 참고: v1(task-853.1) medium 3건 $0.126 → 전체 누적 $0.753

---

## 발견 이슈 및 해결

### 자체 해결 (2건)

1. **run_generation() output_dir 하드코딩** — 기존 전역 OUTPUT_DIR 직접 참조를 Optional 파라미터로 리팩터링하여 v1/v2 디렉토리 분기 지원. 기존 호출 코드 하위 호환성 유지 (기본값 = None → OUTPUT_DIR).
2. **results.json 버전 혼재 위험** — 버전별 독립 폴더(v1-gpt-poc/, v2-gpt-advanced/)에 각각 results.json 분리 저장하여 데이터 격리.

### 범위 외 미해결 (1건)

1. **GPT Image 1 한글 텍스트 정확도 불안정** — quality=medium에서 시나리오 C의 "당신의 차례"가 "망신의 치레"로 잘못 렌더링됨. GPT Image 1 API 자체 한계로 코드 수준에서 해결 불가. 범위 외 사유: OpenAI API의 한글 렌더링 품질 문제.

---

## 프롬프트 엔지니어링 고도화 요약

v2 프롬프트에 적용된 전문 기법:

- **Shot Composition**: rule of thirds, golden ratio, leading lines
- **Lighting**: rim lighting, volumetric god-rays, soft fill light, 45° key light
- **Color Theory**: complementary (navy/gold), analogous warm (amber/cream/brown), teal-and-orange cinematic
- **Camera Specs**: Phase One IQ4 150MP, Hasselblad H6D-100c, ARRI Alexa 65 (카메라/렌즈 구체적 명시)
- **Negative Prompting**: "no stock photo aesthetic, no clipart, no watermark, no generic"
- **Style Reference**: Apple/Rolex 광고, Christopher Nolan 영화
- **Typography Control**: 한글 최소화(1줄), font 스타일/위치/크기 명시

---

## 테스트 결과

- **pytest**: 24 passed, 0 failed (0.15s) — 기존 테스트 전체 통과, 회귀 없음
- **pyright**: 0 errors, 0 warnings
- **API 호출**: 6/6 성공, 0 실패

---

## 권장 사항

1. **한글 텍스트 최소화 원칙 유지**: quality=high에서도 한글은 4글자 이내가 안전
2. **텍스트 없는 이미지 + 후처리 합성**: B 시나리오처럼 이미지만 생성 → 텍스트는 Canva/Photoshop에서 합성하면 오타 0% 보장
3. **비용 최적화**: 텍스트 없는 이미지는 medium($0.042), 텍스트 포함은 high($0.167) 사용
4. **v2 프롬프트를 기본 템플릿으로 채택**: 향후 신규 시나리오 작성 시 v2 수준의 프롬프트 엔지니어링 적용

---

## QC 검증 결과

```
overall: WARN (8 PASS, 4 SKIP, 2 WARN)
- file_check: PASS (generate_ai_image.py 16,542 bytes, test 9,167 bytes)
- data_integrity: PASS
- tdd_check: PASS (테스트+구현 파일 모두 존재)
- pyright_check: WARN (test 파일의 로컬 import 경고 — 실행에 무관)
- style_check: PASS (black+isort OK)
- two_pass_audit: WARN (INFO 36건 — magic numbers, test gaps, 모두 기존 코드)
- health_score: 86/100
```
