# ThreadAuto 콘텐츠 자동생성 파이프라인 — 전체 통합 보고서

## 개요
- **작업**: ThreadAuto 하루 10개 카드뉴스 자동 발행 시스템 구축
- **총 소요시간**: 약 51분 (task-274.0)
- **위임 방식**: 한정 위임 (Phase 1-3 자율 체이닝)
- **테스트**: 838개 전체 PASS, 0 실패
- **완료일**: 2026-03-06

## Phase별 결과

### Phase 1: 소재 시스템 ✅
- **팀**: 1팀 (헤르메스) — task-275.1 + task-276.1
- **산출물**:
  - `content/evergreen_topics.json` — 에버그린 주제 200개 (5개 카테고리)
  - `content/topic_selector.py` — 소재 선택 엔진 (카테고리별 배분, 7일 쿨다운)
  - `crawler/rss_crawler.py` — RSS 7개 피드 수집 + 키워드 필터
  - `crawler/youtube_crawler.py` — 보험저널 유튜브 자막 크롤러
- **테스트**: 550개 PASS

### Phase 2: LLM 콘텐츠 생성 엔진 ✅
- **팀**: 2팀 (오딘) — task-277.1
- **산출물**:
  - `content/content_generator_v2.py` — Claude CLI 호출 콘텐츠 생성
  - `content/prompts_v2.py` — "서울대보험쌤" 페르소나 프롬프트 (카테고리별 톤)
  - `content/compliance_filter.py` — 금감원 규정 3단 필터 (블랙리스트/수치검증/스코어링)
  - `content/pipeline.py` — 소재선택→생성→필터→저장 파이프라인
- **테스트**: 682개 PASS (신규 132개)

### Phase 3: 스케줄러 + 전체 통합 ✅
- **팀**: 1팀 (헤르메스) — task-278.1
- **산출물**:
  - `scheduler/auto_publisher.py` — 골든타임 스케줄러 (70% 피크 + 30% 랜덤)
  - `scheduler/daily_runner.py` — 새벽 5시 전체 파이프라인 러너
  - `scheduler/publish_worker.py` — 발행 워커 (cron/데몬 모드, 3회 재시도)
  - `scripts/run_daily.sh` — 데일리 실행 스크립트
  - `scripts/run_publisher.sh` — 발행 워커 스크립트
- **테스트**: 838개 PASS (신규 156개)

## 시스템 아키텍처

```
[매일 새벽 5시] run_daily.sh
  ├── RSS 크롤링 → news_cache.json
  ├── YouTube 크롤링 → youtube_cache.json
  ├── 소재 10개 선택 (topic_selector)
  ├── Claude CLI 콘텐츠 생성 (content_generator_v2)
  ├── 금감원 필터 3단 (compliance_filter)
  ├── 에버그린 fallback 보충
  ├── 카드뉴스 이미지 렌더링 (cardnews.py)
  ├── 골든타임 스케줄 생성 (auto_publisher)
  └── daily_queue 저장

[매분] run_publisher.sh
  ├── daily_queue에서 발행 시간 확인
  ├── Carousel API 발행 (threads_publisher)
  ├── 3회 재시도 로직
  └── publish_log.json 기록
```

## 골든타임 스케줄 배분
- 오전 7~9시: 3개 (출근 시간)
- 점심 12~1시: 2개
- 저녁 7~10시: 2개 (퇴근 후)
- 비골든타임: 3개 (10~11시, 14~18시 랜덤)
- 지터: ±5~15분 (스팸 감지 방지)
- 최소 간격: 10분

## 남은 운영 작업
1. cron 스케줄 등록 (daily_runner: 매일 5시, publish_worker: 매분 또는 데몬)
2. Tailscale Funnel 상시 실행 설정 (이미지 서빙)
3. 첫 실전 테스트 실행
