# task-1247.1 완료 보고서: 비너스 단독 제작 — Meta 광고 A그룹 캐러셀 (Gemini Pro 네이티브)

**작업자**: 아마테라스 (디자인 팀장) → 비너스 (횡단조직 소환)
**작성일**: 2026-03-29
**생성 엔진**: Gemini 3 Pro (`gemini-3-pro-image-preview`)

---

## SCQA

**S**: A그룹 캐러셀 카피 기획서(task-1256.1)를 기반으로, 기존 Claude팀(HTML+Playwright) 결과물과의 엔진 비교 실험을 위해 Gemini Pro 네이티브 이미지 생성으로 5장 캐러셀을 제작하는 작업이다.

**C**: Gemini Pro 네이티브 방식은 한글 텍스트를 AI가 직접 렌더링하므로, HTML/Playwright 방식 대비 텍스트 정확도와 레이아웃 제어력에 한계가 존재한다. 초기 5장 중 3장(A-1, A-4, A-5)이 하이브리드 방식으로 잘못 생성되어 재작업이 필요했고, A-5는 프롬프트 내 레이아웃 주석이 이미지에 렌더링되어 추가 재생성이 필요했다.

**Q**: 순수 Gemini Pro 네이티브만으로 5장 캐러셀을 제작할 수 있으며, 한글 텍스트 렌더링 품질은 엔진 비교 실험에 충분한가?

**A**: 5장 모두 순수 Gemini Pro 네이티브로 제작 완료. 한글 텍스트는 5장 모두 정확하게 렌더링됐다. Gemini 출력 해상도가 1024x1024로 제한되어 LANCZOS 리사이즈로 1080x1080 달성. 배경 사진 품질과 감정 전달력은 우수하나, 텍스트 크기/위치의 정밀 제어는 HTML 방식 대비 제한적. 엔진 비교 실험 데이터로서 충분한 품질.

---

## 셀프 QC 체크리스트

- [x] 1. 다른 파일 영향: 없음 (신규 이미지 생성만, 기존 파일 미변경)
- [x] 2. 엣지 케이스: Gemini 1024x1024 출력 제한 → LANCZOS 리사이즈 적용
- [x] 3. 작업 지시 일치: 5장 순수 Gemini 네이티브, HTML/Playwright 미사용 확인
- [x] 4. 에러 처리/보안: N/A (이미지 생성 작업)
- [x] 5. 테스트: N/A (이미지 생성 작업)
- [x] 6. 발견 이슈 전건 해결: 하이브리드 혼입 3건 + 주석 렌더링 1건 해결
- [x] 7. 코드 아키텍처: N/A
- [x] 8. 인터페이스 변경: N/A

---

## 슬라이드별 결과

### A-1: 훅 (Hook) — venus-A1-hook.png
- **배경**: 어두운 야간 책상, 엎드린 인물 실루엣 — 번아웃과 고립감 전달
- **한글 정확도**: "열심히 했다. 근데 왜 나만 안 되지?" — 정확
- **서브카피**: "방문 횟수, 전화 통화, 상담 건수— 숫자는 쌓이는데 통장은 그대로다." — 정확
- **인디케이터**: 1/5 — 정확
- **톤**: 가장 어두운 슬라이드 (차콜/네이비) — 기획서 부합

### A-2: 문제 (Problem) — venus-A2-problem.png
- **배경**: 비 오는 창문, 서울 야경 보케 — 시네마틱 고립감 탁월
- **한글 정확도**: "문제는 노력이 아니다. 방법이 없었던 거다." — 정확
- **포인트 컬러**: "방법이 없었던 거다" 골든 앰버 강조 — 적용 확인
- **서브카피**: 두 줄 분리, 두 번째 줄 강조 — 적용 확인
- **인디케이터**: 2/5 — 정확
- **톤**: A-1 대비 약간 밝은 다크 그레이 — 기획서 부합

### A-3: 해결 (Solution) — venus-A3-solution.png
- **배경**: 금빛 햇살이 들어오는 현대식 오피스, 데이터 시각화 — 전환점
- **한글 정확도**: "서울대 출신 팀장이 보험 영업을 다시 설계했다." — 정확
- **브랜드 뱃지**: "서울대보험쌤" 좌상단 — 적용 확인
- **골드 키워드**: "데이터", "시스템" 골드 강조 — 적용 확인
- **인디케이터**: 3/5 — 정확
- **톤**: 어둠→빛 전환 중간 — 기획서 부합

### A-4: 증거 (Proof) — venus-A4-proof.png
- **배경**: 밝은 크림/베이지 — 신뢰·투명감
- **한글 정확도**: 헤드라인, 인용문 2개, 귀속 문장 모두 정확
- **인용문 카드**: 골드 좌측 액센트바 + 인용 부호 + 이름 태그 — 적용
- **"실제 변화"** 다크 골드 강조 — 적용 확인
- **인디케이터**: 4/5 — 정확
- **톤**: 밝은 톤 — 기획서 부합

### A-5: CTA — venus-A5-cta.png
- **배경**: 가장 밝은 슬라이드, 금빛 햇살 — 희망과 새 출발
- **한글 정확도**: 헤드라인, 서브카피, CTA 버튼 텍스트, 신뢰 앵커 모두 정확
- **"딱 한 번"** 골드 강조 — 적용 확인
- **CTA 버튼**: "무료 상담 신청하기" 골드 배경 + 다크 텍스트 — 적용 확인
- **신뢰 앵커**: "조건 없음 · 무료 상담 · 팀장 직접 응대" — 적용 확인
- **인디케이터**: 5/5 — 정확
- **톤**: 가장 밝음 — 기획서 부합, 재생성 1회 (주석 렌더링 이슈 해결)

---

## 발견 이슈 및 해결

### 자체 해결 (4건)

1. **3장(A-1, A-4, A-5) 하이브리드 방식 혼입** — 초기 에이전트 위임 시 gemini-image 스킬 대신 hybrid-image가 사용됨. 순수 Gemini 네이티브 스크립트를 직접 작성하여 재생성.
   - 상세: gen_venus_a1_hook_native.py, gen_venus_a4_proof_native.py, gen_venus_a5_cta_native.py 작성

2. **A-5 레이아웃 주석 렌더링** — 프롬프트의 "10%", "35%", "~64px" 등 기술 주석이 이미지에 그대로 렌더링됨. 프롬프트에서 수치 주석 제거 후 재생성(재시도 1회).
   - 상세: PROMPT에서 괄호 내 퍼센트/px 값 제거, 자연어 레이아웃 설명으로 교체

3. **A-4 스크립트 구문 오류** — PROMPT 문자열 내 `"""` (한글 인용부호)가 Python triple-quote를 종료시킴. 해당 문자열 제거.
   - 상세: gen_venus_a4_proof_native.py:39 — `"「" or """` → 간단한 설명으로 대체

4. **Gemini 출력 1024x1024 제한** — Gemini Pro가 1080x1080 대신 1024x1024로 출력. PIL LANCZOS 리사이즈로 5장 모두 1080x1080 달성.
   - 상세: 5.5% 업스케일, LANCZOS 보간으로 품질 열화 최소화

---

## 엔진 비교 관찰 (Gemini Pro 네이티브 vs HTML+Playwright)

- **한글 텍스트 정확도**: Gemini Pro가 5장 모두 한글을 정확히 렌더링함 — 예상보다 우수
- **레이아웃 정밀도**: 텍스트 위치, 크기, 정렬이 프롬프트에 근접하나 HTML만큼 정밀하지 않음
- **배경 품질**: Gemini 네이티브는 배경+텍스트가 자연스럽게 융합됨 (HTML 오버레이의 "레이어 느낌" 없음)
- **일관성**: 5장 간 디자인 언어 통일도는 HTML 방식 대비 낮음 (각 슬라이드마다 Gemini가 독자적으로 해석)
- **해상도 제한**: 1024x1024 고정 출력은 리사이즈가 필수
- **프롬프트 민감도**: 기술적 주석(px, %)이 이미지에 렌더링되는 문제 — 프롬프트 설계에 세심한 주의 필요

---

## 산출물 파일

- `/home/jay/workspace/output/meta-ads/a-group-venus/venus-A1-hook.png`
- `/home/jay/workspace/output/meta-ads/a-group-venus/venus-A2-problem.png`
- `/home/jay/workspace/output/meta-ads/a-group-venus/venus-A3-solution.png`
- `/home/jay/workspace/output/meta-ads/a-group-venus/venus-A4-proof.png`
- `/home/jay/workspace/output/meta-ads/a-group-venus/venus-A5-cta.png`

---

## 자동 검증 (qc_verify.py)

```json
{
  "task_id": "task-1247.1",
  "overall": "PASS",
  "checks": {
    "file_check": "PASS (report 6KB+, done file exists)",
    "data_integrity": "WARN (timer status pending finish-task)",
    "critical_gap": "PASS",
    "spec_compliance": "PASS",
    "duplicate_check": "PASS (max similarity 10.0%)",
    "api_health": "SKIP (not server task)",
    "test_runner": "SKIP (image generation task)",
    "tdd_check": "SKIP",
    "schema_contract": "SKIP",
    "pyright_check": "SKIP"
  }
}
```
