# task-436.2: ThreadAuto Remotion Phase 2 — 카드뉴스 전체 전환

## 한시적 승인
제이회장님 한시적 승인 유지. Phase 2 완료 후 Phase 3~4도 자율 체이닝.
Phase 완료 시 .done 통보 → 아누가 다음 Phase 위임.

## Phase 1 결과물 (반드시 확인)
- 보고서: `/home/jay/workspace/memory/reports/task-436.1.md`
- Remotion 프로젝트: `/home/jay/projects/ThreadAuto/remotion/`
- Phase 1 구현물:
  - 테마: `src/themes/types.ts`, `src/themes/navy-gold.ts`
  - 컴포넌트: `src/components/BrandBar.tsx`, `BrandFooter.tsx`, `GlassCard.tsx`, `PillBadge.tsx`
  - 슬라이드: `src/slides/CoverSlide.tsx`, `CardListSlide.tsx`
  - 컴포지션: `src/compositions/CardNews/index.tsx`
  - Python 브릿지: `render_bridge.py`

## 참고 문서
- 마이그레이션 계획: `/home/jay/workspace/memory/plans/threadauto-remotion/migration-draft.md`
- 기존 Pillow 카드뉴스: `/home/jay/projects/ThreadAuto/card_news/`
- 기존 테마: `/home/jay/projects/ThreadAuto/card_news/themes/`

## Phase 2 작업 내용: 카드뉴스 전체 전환

### 2-1. 기존 슬라이드 타입 전수 분석
- `/home/jay/projects/ThreadAuto/card_news/` 코드를 읽어서 모든 슬라이드 타입 파악
- 각 슬라이드의 입력 props, 레이아웃, 스타일 기록
- Phase 1에서 이미 구현된 CoverSlide, CardListSlide 제외

### 2-2. 나머지 슬라이드 전부 Remotion 컴포넌트로 구현
- 각 슬라이드 타입별 `src/slides/<SlideType>.tsx` 생성
- Phase 1의 디자인 패턴 유지 (GlassCard, BrandBar/Footer, PillBadge 재사용)
- 한글 폰트: @remotion/google-fonts의 Noto Sans KR
- 출력 규격: 1080x1350 PNG

### 2-3. 테마 시스템 확장
- 기존 Pillow 테마 전부 Remotion 테마로 이식
- `/home/jay/projects/ThreadAuto/card_news/themes/` 참고
- `src/themes/` 디렉토리에 각 테마 파일 생성
- Theme 인터페이스(types.ts) 확장 필요 시 하위호환 유지

### 2-4. SLIDE_MAP 업데이트
- `src/compositions/CardNews/index.tsx`의 SLIDE_MAP에 새 슬라이드 타입 전부 등록

### 2-5. render_bridge.py 호환성 확보
- 기존 파이프라인에서 render_bridge.py로 전환 가능하도록 인터페이스 정리
- 기존 card_news 모듈의 함수 시그니처와 호환되는 wrapper 함수 제공

### 2-6. 테스트
- 모든 슬라이드 타입 × 모든 테마 조합으로 렌더링 테스트
- 깨지는 조합 없이 전부 PNG 생성 확인
- pytest + tsc --noEmit 에러 0건

## 산출물
- 보고서: `memory/reports/task-436.2.md`
- 렌더링 샘플: `remotion/output/samples/` 디렉토리에 각 슬라이드×테마 샘플 저장

## 완료 시
1. 보고서 작성
2. `memory/events/task-436.2.done` 생성
3. task-timer end

## 프로젝트 경로 규칙
- 코드: `/home/jay/projects/ThreadAuto/remotion/` (기존 Phase 1 위에 추가)
- 기존 card_news/ 코드 수정 금지 (병행 운영 유지)
