# task-311.1: ThreadAuto 풀 파이프라인 테스트 (업로드 전까지)

## 개요
ThreadAuto의 전체 파이프라인을 실제 실행하여 테스트한다.
토픽 선택 → V2 콘텐츠 생성 → 렌더링까지. **Threads 업로드는 하지 않는다.**

## 테스트 절차

### Step 1. 토픽 선택
```python
from content.topic_selector import select_daily_topics
topics = select_daily_topics()
topic = topics[0]  # 첫 번째 토픽 사용
```

### Step 2. V2 콘텐츠 생성
```python
from content.content_generator_v2 import ContentGeneratorV2
gen = ContentGeneratorV2()
content = gen.generate(topic)
```
- 슬라이드 수 확인 (5~7장 범위)
- cover → card_list/detail → cta 구조 확인
- JSON 저장: `/tmp/test_pipeline_final.json`

### Step 3. 렌더링 (5개 테마 전부)
```python
from renderer.cardnews import CardNewsRenderer
from renderer.themes import THEMES

for theme in THEMES:
    renderer = CardNewsRenderer()
    paths = renderer.render_from_slides(content['slides'], theme)
```
- 5개 테마 × N장 = 전부 렌더링
- 이미지 저장: `output/pipeline_test_final/<테마명>/`

### Step 4. 검증 항목
1. **이미지 크기**: 전부 1080x1350 (PIL로 확인)
2. **오버플로우 없음**: FB-7 로그 확인, crop 발생 여부
3. **줄바꿈 품질**: 커버 타이틀, 블록 제목에서 단어 중간 잘림 없는지 확인
4. **동그라미 align**: 블록 제목 첫줄과 정렬되었는지
5. **description 들여쓰기**: card_list, detail 모두 30px 인덴트 확인
6. **TIP 블록**: 겹침 없이 표시 또는 안전하게 생략
7. **URL 확인**: CTA에 `incar-top1.tistory.com` 포함
8. **서울대보험크루**: 커버 좌측 상단에 표시
9. **서울대보험쌤 중복 없음**: 커버에서 1회만 표시
10. **코너 장식(ㄴ/ㄱ) 제거**: 모든 슬라이드에서 없어야 함

### Step 5. pyright 체크 (LSP 규칙)
```bash
pyright renderer/cardnews.py renderer/engine.py content/content_generator_v2.py
```
- 에러 수 확인, 보고서에 기록

### Step 6. 결과 정리
- 검증 항목별 PASS/FAIL 표
- 대표 이미지 5장(테마별 커버) 경로 기록
- 발견된 이슈 목록

## 프로젝트 경로
- `/home/jay/projects/ThreadAuto/`
- 환경변수: `source /home/jay/workspace/.env.keys`

## 산출물
- 테스트 결과 이미지: `output/pipeline_test_final/`
- 보고서: `memory/reports/task-311.1.md`

## 완료 기준
- [ ] 5개 테마 전부 렌더링 성공
- [ ] 검증 항목 10개 전부 PASS
- [ ] pyright 체크 결과 기록
- [ ] 대표 이미지 경로 보고서에 포함

## task-timer
- task_id: task-311.1
- 완료 시: `python3 /home/jay/workspace/memory/task-timer.py end task-311.1`