# task-358.1: 자동포스팅 테마 선택 개선 (연속 중복 방지)

## 배경
- `get_random_theme()`은 가중치 기반 랜덤이지만 이전 테마를 추적하지 않아 연속 중복 가능
- `run_full_pipeline.py`는 NavyGold 고정 (수동 테스트용이지만 랜덤 옵션도 있어야 함)
- `daily_runner.py`는 `get_random_theme()` 사용 중 (361번 줄)

## 수정 대상 파일
1. `/home/jay/projects/ThreadAuto/renderer/themes.py`
2. `/home/jay/projects/ThreadAuto/scheduler/daily_runner.py` (필요 시)
3. `/home/jay/projects/ThreadAuto/run_full_pipeline.py` (필요 시)

## 요구사항

### 1. themes.py — `get_random_theme()` 개선
- **히스토리 파일**: `/home/jay/projects/ThreadAuto/data/theme_history.json`
  - 형식: `{"last_theme": "NavyGold", "recent": ["NavyGold", "BlackRed", ...], "updated": "2026-03-07T..."}`
  - `recent` 리스트: 최근 5개까지 저장
- **로직 변경**:
  - 기존 가중치(dark 75%, light 25%) 유지
  - 직전 테마(`last_theme`)와 같은 테마는 **제외**하고 선택
  - 5개 테마 중 1개만 제외하므로 가중치 재분배 (제외된 테마의 가중치를 나머지에 비례 배분)
  - 선택 후 히스토리 파일 업데이트
- **data 디렉토리**: 없으면 자동 생성 (`mkdir -p`)
- **히스토리 파일 없을 때**: 그냥 기존 로직대로 (첫 실행)

### 2. run_full_pipeline.py — NavyGold 고정 제거
- Step 3에서 `get_theme("NavyGold")` → `get_random_theme()` 변경
- import도 `get_theme` → `get_random_theme`으로 수정
- Step 4의 `theme_name="NavyGold"` → 선택된 테마의 `.name` 사용

### 3. daily_runner.py — 확인
- 이미 `get_random_theme()` 사용 중이므로 자동 적용됨
- 추가 수정 불필요 (확인만)

## 제약
- `get_random_theme()` 함수 시그니처 유지 (외부 호출 호환)
- 히스토리 파일 I/O 실패 시 fallback: 기존 랜덤 로직 (에러로 인한 서비스 중단 방지)
- 테마 5개 전체 기존 정의 수정 금지

## 검증
- `get_random_theme()`을 10번 연속 호출해서 연속 중복이 없는지 확인
- 히스토리 파일이 정상 생성/업데이트되는지 확인
- 히스토리 파일 없는 상태에서도 에러 없이 동작하는지 확인