# task-312.1: ThreadAuto 풀 파이프라인 테스트 결과 보고서

**작업자**: 헤르메스(dev1-team 팀장)
**수행일**: 2026-03-06
**작업 유형**: 테스트 (코드 수정 없음)

---

## 1. 테스트 개요

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

## 2. 파이프라인 실행 결과

### Step 1. 토픽 선택 — 성공
- **토픽 ID**: eg-014
- **카테고리**: 고민공감
- **타이틀**: 마케팅을 잘 못하는데 따라갈 수 있을까요?
- **card_type**: E
- **keywords**: 마케팅, 역량, 두려움

### Step 2. V2 콘텐츠 생성 — 성공
- **슬라이드 수**: 6장 (정상 범위 5~7장)
- **구조**: cover → card_list → card_list → detail → detail → cta
- **JSON 저장**: `/tmp/test_pipeline_final.json`
- **해시태그**: 10개 생성

### Step 3. 렌더링 (5개 테마) — 성공
- **총 이미지**: 30장 (5테마 × 6장)
- **출력 경로**: `/home/jay/projects/ThreadAuto/output/pipeline_test_final/`

렌더링 중 FB 로그 (5개 테마 공통):
- `[FB-7]` 인포박스 3번 생략 (남은 공간 128px < 최소 140px)
- `[FB-2]` TIP 블록 생략 (남은 공간 -54px < 최소 100px)
→ 안전 생략 로직 정상 작동, 겹침/오버플로우 없음

### 대표 이미지 경로 (테마별 커버)
- NavyGold: `output/pipeline_test_final/NavyGold/cardnews_20260306_144646_00.png`
- BlackRed: `output/pipeline_test_final/BlackRed/cardnews_20260306_144646_00.png`
- GreenWhite: `output/pipeline_test_final/GreenWhite/cardnews_20260306_144646_00.png`
- PurplePink: `output/pipeline_test_final/PurplePink/cardnews_20260306_144646_00.png`
- OrangeCream: `output/pipeline_test_final/OrangeCream/cardnews_20260306_144646_00.png`

## 3. 검증 항목 (10개)

| # | 검증 항목 | 결과 | 비고 |
|---|-----------|------|------|
| 1 | 이미지 크기 1080x1350 | **PASS** | PIL로 전 이미지 확인 |
| 2 | 오버플로우 없음 (FB-7) | **PASS** | crop 후 크기 일치, FB-7 로그에 크기 불일치 없음 |
| 3 | 줄바꿈 품질 | **PASS** | 커버 타이틀 원문 줄바꿈 사용, 단어 잘림 없음 |
| 4 | 동그라미 align | **PASS** | FB-4-v2 로직: textbbox 세로 중앙 정렬 확인 (코드 L824-832, L1051-1059) |
| 5 | description 들여쓰기 30px | **PASS** | card_list, detail 모두 desc_indent=30 적용 (코드 L554, L882, L959) |
| 6 | TIP 블록 | **PASS** | 공간 부족 시 안전 생략 (FB-2 로그 확인), 겹침 없음 |
| 7 | URL 확인 | **PASS** | CTA에 `incar-top1.tistory.com` 포함 |
| 8 | 서울대보험크루 표시 | **PASS** | 커버 좌측 상단 pill badge로 표시 (코드 L668-722) |
| 9 | 서울대보험쌤 중복 없음 | **PASS** | 커버에서 하단 브랜드 1회만 표시, 워터마크 생략 (FB-5, 코드 L765) |
| 10 | 코너 장식 제거 | **PASS** | `_draw_corner_decoration` 메서드 정의만 존재, 호출부 없음 (FB-3-v2, 코드 L763) |

**전체 결과: 10/10 PASS**

## 4. pyright 타입 체크 결과

**총 11개 에러** (0 warnings)

### Import 해결 에러 (5개) — 프로젝트 구조 이슈
pyright가 ThreadAuto를 패키지로 인식하지 못하여 상대 import 해결 실패. pyrightconfig.json 미설정.
- `content/content_generator_v2.py:14` — Import "content.prompts_v2"
- `renderer/cardnews.py:25` — Import "renderer.engine"
- `renderer/cardnews.py:26` — Import "renderer.themes"
- `renderer/engine.py:9` — Import "renderer.colors"
- `renderer/engine.py:10` — Import "renderer.fonts"

### 타입 불일치 에러 (6개) — float ↔ int
- `renderer/cardnews.py:430` — `tuple[float, float]` → `tuple[int, int]` (reportReturnType)
- `renderer/cardnews.py:738` — float → int `_draw_divider` y 파라미터 (reportArgumentType)
- `renderer/cardnews.py:748` — float → int `_draw_pill_badge` y 파라미터 (reportArgumentType)
- `renderer/engine.py:135` — float → int 할당 (reportAssignmentType)
- `renderer/engine.py:205` — float → int `draw_rect` x, w 파라미터 (reportArgumentType) ×2

### 판정
- Import 에러: pyrightconfig.json 설정으로 해결 가능 (실행에는 문제 없음)
- 타입 에러: int() 명시적 변환 또는 시그니처 수정 필요 (실행에는 문제 없음, 런타임 안전)

## 5. 셀프 QC

- [x] 1. 다른 파일 영향: 없음 (테스트만 수행, 코드 수정 없음)
- [x] 2. 엣지 케이스: 렌더러의 방어적 생략 로직(FB-7, FB-2)이 정상 동작
- [x] 3. 작업 지시 일치: 토픽→생성→렌더링→검증→pyright 전 절차 완료
- [x] 4. 에러/보안: 코드 수정 없으므로 해당 없음
- [x] 5. 테스트 커버리지: 10개 검증 항목 전체 수행, 전부 PASS
- 1-B (데이터 계약): workers/ 변경 없음 → 해당 없음

## 6. qc_verify.py 자동 검증

```json
{
  "task_id": "task-312.1",
  "verified_at": "2026-03-06T14:49:00",
  "overall": "PASS (조건부)",
  "checks": {
    "api_health": "SKIP (서버 작업 아님)",
    "file_check": "PASS (보고서/done 생성 후 재검증 완료)",
    "data_integrity": "PASS",
    "test_runner": "SKIP (별도 테스트 디렉토리 없음)",
    "schema_contract": "SKIP (workers 없음)",
    "pyright_check": "FAIL (11 errors — Import 5개는 설정 이슈, 타입 6개는 기존 코드)"
  },
  "summary": "pyright 에러는 기존 코드의 타입 이슈이며, 이번 테스트 작업에서 코드 수정 없음"
}
```

## 7. 발견된 이슈 목록

1. **[경미]** 인포박스 3번 항목이 공간 부족으로 생략됨 (5개 테마 공통) — 콘텐츠 양 조절 또는 레이아웃 임계값 조정 권고
2. **[경미]** TIP 블록이 공간 부족으로 생략됨 (detail 슬라이드) — 동일 원인
3. **[개선]** pyrightconfig.json 미설정으로 import 해결 에러 5건 발생 — 설정 파일 추가 권고
4. **[개선]** renderer/cardnews.py, engine.py에서 float/int 타입 불일치 6건 — int() 명시적 변환 권고

## 8. 완료 기준 충족 여부

- [x] 5개 테마 전부 렌더링 성공 (30장)
- [x] 검증 항목 10개 전부 PASS
- [x] pyright 체크 결과 기록 (11 errors)
- [x] 대표 이미지 경로 보고서에 포함
