# 이미지 파이프라인 정리: GPT Image 제거 + CLI 안정성 + Satori 인포그래픽 최적화

## 한정승인

## 작업 목표
1. GPT Image 관련 코드 전면 제거 (제이회장님 지시: OpenAI 이미지 생성 금지)
2. Claude CLI(Haiku) 빈 응답 시 안정적 재시도 메커니즘
3. Satori fallback의 인포그래픽 프롬프트 처리 능력 최적화

## 배경
- task-1650.1에서 이미지 텍스트 렌더링 근본 원인 해결 완료
- 그러나 미해결 2건 + GPT Image 제거 지시가 남아있음

## 작업 내용

### 1. GPT Image 관련 코드 전면 제거

**제이회장님 지시**: "openAI는 이미지화로는 안 썼으면 좋겠어" (2026-04-11)

제거 대상 파일 확인 후 GPT Image 관련 코드 삭제:

#### image_router.py (`/home/jay/workspace/tools/ai-image-gen/image_router.py`)
- `_generate_gpt()` 함수 제거 (있으면)
- `_FALLBACK_CHAIN`에서 gpt fallback 제거
- GPT/OpenAI 관련 import 제거
- OPENAI_API_KEY 참조 제거

#### gemini_pro_generate.py (`/home/jay/workspace/tools/ai-image-gen/gemini_pro_generate.py`)
- GPT fallback 참조 제거 (있으면)

#### server.py (`/home/jay/workspace/dashboard/server.py`)
- 이미지 생성 관련 코드에서 GPT/OpenAI 참조 제거

#### 기타
- `grep -rn "gpt.image\|openai.*image\|dall.e\|OPENAI.*IMAGE\|_generate_gpt" /home/jay/workspace/tools/ai-image-gen/ /home/jay/workspace/dashboard/` 로 전수 검색
- 발견된 모든 GPT Image 참조 제거

### 2. Claude CLI(Haiku) 빈 응답 재시도

**현재 문제**: `_prompt_to_html()`에서 Claude CLI 호출 시 간헐적으로 빈 응답 반환 → fallback HTML 트리거 → (task-1650.1에서 수정했지만) 재시도 없이 바로 실패 처리됨

**구현**:
- `_prompt_to_html()` 내 Claude CLI 호출에 **최대 2회 재시도** 추가
- 빈 응답 or HTML 미포함 응답 시 1초 대기 후 재시도
- 2회 실패 시 None 반환 → Satori fallback 트리거
- 재시도 로그 stderr 출력 (디버깅용)

### 3. Satori fallback 인포그래픽 최적화

**현재 문제**: Satori는 카드뉴스용으로 설계되어, 복잡한 인포그래픽(process_flow, comparison_table 등) 프롬프트를 잘 처리하지 못함

**구현**:
- `satori_cli.js` 또는 Satori 래퍼에서 인포그래픽 유형 프롬프트를 감지
- 인포그래픽 유형일 경우: 프롬프트를 **간소화된 레이아웃 HTML**로 변환하는 전처리 추가
  - process_flow → 단계별 화살표 레이아웃
  - comparison_table → 표 형태 레이아웃
  - infographic → 섹션 분리 레이아웃
- 변환 실패 시 기본 카드뉴스 형태로 렌더링 (graceful degradation)

## 참조 파일
- image_router.py: `/home/jay/workspace/tools/ai-image-gen/image_router.py`
- gemini_pro_generate.py: `/home/jay/workspace/tools/ai-image-gen/gemini_pro_generate.py`
- satori_cli.js: `/home/jay/workspace/tools/ai-image-gen/satori_cli.js` (존재 확인 필요)
- server.py: `/home/jay/workspace/dashboard/server.py`
- task-1650.1 보고서: `/home/jay/workspace/memory/reports/task-1650.1.md`

## 주의사항
- OpenAI/GPT Image 제거 시 기존 테스트에서 GPT 관련 mock/assertion 제거 필요
- Gemini가 유일한 photo 생성 모델 → Gemini 경로 안정성 확인
- Satori 최적화 시 기존 카드뉴스 기능 회귀 없도록 주의

## 테스트
1. `grep -rn "gpt\|openai" tools/ai-image-gen/` → 0건 확인 (이미지 관련만)
2. photo 유형 → Gemini 정상 생성 확인
3. infographic 유형 → Claude CLI → HTML → PNG 정상 확인
4. Claude CLI 빈 응답 시뮬레이션 → 재시도 후 Satori fallback 확인
5. process_flow/comparison_table → Satori 인포그래픽 레이아웃 정상 렌더링
6. pytest 전체 통과

## 보고서
`/home/jay/workspace/memory/reports/task-{TASK_ID}.md`
