# task-317.1 완료 보고서: ThreadAuto 풀 파이프라인 테스트

**작업일**: 2026-03-06
**담당팀**: dev1-team (헤르메스 팀장)
**프로젝트**: /home/jay/projects/ThreadAuto/

---

## 작업 요약

ThreadAuto 풀 파이프라인을 업로드 전까지 테스트했습니다.
토픽 선택 → V2 콘텐츠 생성 → 5개 테마 렌더링 → 검증 항목 확인 순서로 진행.

---

## 파이프라인 단계별 결과

### Step 1: 토픽 선택 (`select_daily_topics()`)
- **결과**: 10개 토픽 정상 선택
- 카테고리 분포: 고민공감 3, 정보제공 3, 사회적증거 2, 업계동향 1, CTA 1
- `evergreen_topics.json` used_count/last_used 갱신됨

### Step 2: V2 콘텐츠 생성 (`ContentGeneratorV2`)
- **테스트 토픽**: "나이가 있는데 이직이 가능할까요?" (고민공감, eg-031)
- **생성 시간**: 40.1초
- **슬라이드 구성**: 6장 (cover → card_list → card_list → detail → card_list → cta)
- **구조 검증**: _validate_structure 통과
- **생성된 JSON**: `/home/jay/projects/ThreadAuto/output/pipeline_test/generated_content.json`

### Step 3: 5개 테마 렌더링
- **NavyGold**: 6장 렌더링 성공
- **BlackRed**: 6장 렌더링 성공
- **GreenWhite**: 6장 렌더링 성공
- **PurplePink**: 6장 렌더링 성공
- **OrangeCream**: 6장 렌더링 성공
- **총 30개 이미지** 생성 완료

---

## 검증 항목 결과

### 1. 이미지 크기 1080x1350 → PASS
- 30개 이미지 전부 (1080, 1350) 확인

### 2. 오버플로우 없음 → PASS
- FB-3 방어적 크롭 적용
- FB-7 크기 불일치 로그 없음
- 시각적 검증: 모든 테마의 detail/cover 슬라이드에서 텍스트/박스 경계 침범 없음

### 3. 인포박스 3개 표시 (임계값 120px) → PASS
- detail 슬라이드에 items 3개 (조직 스트레스 ZERO / 처음부터 다시 시작? NO / 혼자 헤매지 않아도 됩니다)
- 5개 테마 모두 인포박스 3개 정상 렌더링 확인 (시각적 검증 완료)
- min_box_h = 120px 임계값에 의해 3개 전부 표시됨

### 4. TIP 블록 표시 여부 → WARN (설계된 동작)
- 콘텐츠 JSON에 tip_text 존재: "변화는 '몇 살'이 아니라 '언제 시작하느냐'가 답입니다"
- **렌더링 시 FB-2 로직에 의해 생략됨**: `남은 공간 -104px < 최소 100px`
- 이유: 인포박스 3개가 가용 공간을 모두 사용하여 TIP 배치 불가
- 이것은 렌더러의 설계된 동작 (인포박스 우선, TIP은 공간 부족 시 생략)

### 5. pyright 체크 → PASS
```
cd /home/jay/projects/ThreadAuto && pyright renderer/ content/
→ 0 errors, 0 warnings, 0 informations
```

---

## 렌더링 로그

- `[FB-2] TIP 생략: 남은 공간 -104px < 최소 100px` (5개 테마 공통)
- FB-7 크기 불일치 로그: 없음
- FB-3 방어적 크롭: 정상 작동

---

## 렌더링 이미지 경로

```
/home/jay/projects/ThreadAuto/output/pipeline_test/
├── generated_content.json
├── pipeline_test_result.json
├── NavyGold/
│   └── cardnews_20260306_153921_{00~05}.png (6장)
├── BlackRed/
│   └── cardnews_20260306_153922_{00~05}.png (6장)
├── GreenWhite/
│   └── cardnews_20260306_153922_{00~05}.png (6장)
├── PurplePink/
│   └── cardnews_20260306_153923_{00~05}.png (6장)
└── OrangeCream/
    └── cardnews_20260306_153924_{00~05}.png (6장)
```

---

## 생성/수정 파일 목록

- 생성: `/home/jay/projects/ThreadAuto/tests/pipeline_test_full.py` (파이프라인 테스트 스크립트)
- 생성: `/home/jay/projects/ThreadAuto/output/pipeline_test/` (30개 이미지 + 2 JSON)
- 수정: `/home/jay/projects/ThreadAuto/content/evergreen_topics.json` (used_count/last_used 갱신)

---

## 완료 기준 체크

- [x] 5개 테마 렌더링 성공
- [x] 검증 항목 전부 확인
- [x] pyright 에러 0건

---

## 비고

- TIP 블록은 콘텐츠 레벨에서는 존재하나, 인포박스 3개 렌더링 후 공간 부족으로 FB-2 로직에 의해 생략됨. 인포박스 3개 표시를 우선시하는 현재 설계는 적절함.
- 모든 테마에서 동일한 FB-2 로그 발생 → 콘텐츠 구조(items 3개 + 긴 텍스트)에 따른 일관된 동작.
- 파이프라인 전체 수행 시간: 토픽 선택 ~1초, 콘텐츠 생성 ~40초, 5테마 렌더링 ~3초.

---

## QC 자동 검증 결과

```json
{
  "task_id": "task-317.1",
  "verified_at": "2026-03-06T15:41:35",
  "overall": "WARN",
  "checks": {
    "file_check": "PASS",
    "data_integrity": "WARN (timer end 호출 전 상태)",
    "pyright_check": "WARN (테스트 스크립트 sys.path import — 프로젝트 코드 0 errors)",
    "style_check": "PASS",
    "api_health": "SKIP",
    "test_runner": "SKIP",
    "schema_contract": "SKIP",
    "scope_check": "SKIP"
  }
}
```
