# 로키(레드팀) 지적 선결과제 4건 해결

## 배경
task-867.1 에이전트 미팅에서 로키(레드팀)가 지적한 선결과제 4건.
이미지 생성 파이프라인 자동화 전에 반드시 해결해야 할 항목들.

## 작업 내용

### 1. gcloud 인증 영구화 (자동화 전제조건)
- 현재: `gcloud auth print-access-token --scopes=generative-language`로 임시 토큰 발급
- 문제: 토큰 만료 시 자동화 파이프라인 중단
- 해결 방안:
  - Service Account 키 파일 방식 (권장)
  - 또는 `gcloud auth application-default login` + 환경변수 설정
  - 또는 토큰 자동 갱신 스크립트
- **토큰 갱신이 자동으로 이루어져야 함** — cron이나 스크립트로 만료 전 갱신
- `.env.keys`에 인증 정보 저장 (하드코딩 금지)
- Gemini API 호출하는 모든 스크립트가 영구 인증을 사용하도록 수정

### 2. AI 생성 이미지 Meta 광고 라벨링 정책 확인
- Meta 광고 정책에서 AI 생성 이미지 사용 시 필요한 라벨링/고지 요건 조사
- 2024~2026년 최신 정책 확인 (Meta AI-generated content policy)
- 필요한 라벨/태그가 있으면 이미지 메타데이터 또는 광고 설정에 자동 적용하는 방안 설계
- 조사 결과를 `memory/research/meta-ai-image-policy.md`에 정리
- 준수해야 할 체크리스트 작성

### 3. design-tokens.json 멀티 브랜드 초안
- 현재: 단일 브랜드(서울대보험쌤)용 디자인 토큰만 존재
- 필요: 멀티 브랜드 지원 (서울대보험쌤, 서울대연금쌤, 기타 향후 브랜드)
- 구조 설계:
  ```json
  {
    "brands": {
      "insurance": { "colors": {...}, "fonts": {...}, "logo": "..." },
      "pension": { "colors": {...}, "fonts": {...}, "logo": "..." },
      "default": { ... }
    },
    "shared": { "sizes": {...}, "spacing": {...} }
  }
  ```
- 기존 design-tokens.json 위치 확인 후 멀티 브랜드 구조로 확장
- 각 브랜드별 컬러 팔레트, 폰트, 로고 경로 정의

### 4. image_router.py + fallback 구현
- `image_router.py` 위치 확인 (task-867.1에서 생성됨)
- 라우터 로직 검증:
  - 용도별 최적 방법 자동 선택 (포토리얼 → Gemini, 카드뉴스 → Satori, 한글+사진 → 하이브리드)
- **fallback 로직 필수**:
  - Gemini API 실패 시 → GPT Image v2 (high) 자동 전환
  - Satori 실패 시 → HTML 캐러셀 fallback
  - 하이브리드 실패 시 → Gemini 단독 + 텍스트 없이
- fallback 시도 횟수 제한 (최대 2회)
- 각 fallback 시 로그 기록
- 통합 테스트 작성

## 산출물
- gcloud 영구 인증 설정 + 관련 스크립트
- `memory/research/meta-ai-image-policy.md`
- design-tokens.json 멀티 브랜드 버전
- image_router.py fallback 구현 + 테스트
- 보고서: `memory/reports/task-{task_id}.md`

## 주의사항
- API 키/토큰을 코드에 하드코딩 금지 — `.env.keys`에서 로드
- 기존 이미지 출력 폴더(v1~v7) 건드리지 말 것
- Meta 정책은 최신 정보 기준 (2026년)