# task-331.1 완료 보고서
## ThreadAuto 짧은 텍스트 대응 — 폰트 동적 확대 + 콘텐츠 최소 글자 수 강제

**팀**: dev1-team (헤르메스 팀장)
**참여**: 불칸(백엔드), 아르고스(테스터)
**Worktree 브랜치**: `task/task-331.1-dev1`

---

## 작업 내용

### 수정 1: 렌더러 — 짧은 텍스트 시 폰트 동적 확대
- **대상 파일**: `renderer/cardnews.py`
- **변경 위치**: `_draw_info_box()`, `render_card_list()`, `_calc_box_heights()`

**로직**:
- description 20자 이하 → desc 44pt, title 52pt
- description 21~40자 → desc 40pt, title 50pt
- description 41자 이상 → 기존 유지 (desc 36pt, title 48pt)
- 폴백: 확대 폰트로 wrap 시 줄 수 증가하면 원래 크기로 폴백

**적용 범위**:
- `_draw_info_box()`: DETAIL 슬라이드 내부 인포박스
- `render_card_list()`: CARD_LIST 슬라이드 per-item 동적 폰트
- `_calc_box_heights()`: 사전 높이 계산에도 동적 폰트 반영

### 수정 2: 콘텐츠 생성기 — 최소 글자 수 강제
- **대상 파일**: `content/prompts_v2.py`
- **변경**: `_OUTPUT_FORMAT_BLOCK`에 텍스트 최소 글자 수 규칙 섹션 추가
  - "각 항목의 설명(description/value)은 반드시 40자 이상으로 작성하세요."
  - 구체적 예시 포함

---

## 생성/수정 파일 목록

| 파일 | 변경 내용 |
|------|----------|
| `renderer/cardnews.py` | 폰트 동적 확대 로직 (3개 메서드) |
| `content/prompts_v2.py` | 40자 최소 가이드 프롬프트 추가 |
| `tests/test_cardnews_renderer.py` | TestShortTextFontScale 8건 + TestMinCharCountPrompt 2건 추가, pyright 타입 수정 |
| `tests/test_short_text_visual.py` | 시각 검증 스크립트 (신규) |

---

## 테스트 결과

### 단위 테스트 (pytest)
- **77 passed**, 0 failed (19.0초)
- 기존 67건 전체 통과 (회귀 없음)
- 신규 10건 (짧은/중간/긴 텍스트 렌더링 + 프롬프트 검증) 전체 통과

### 시각 검증 (test_short_text_visual.py)
- 6/6 통과
- 생성 이미지 (모두 1080x1350):
  - `card_list_short_10chars.png` (56K)
  - `detail_short_10chars.png` (61K)
  - `card_list_medium_32chars.png` (71K)
  - `detail_medium_32chars.png` (76K)
  - `card_list_long_67chars.png` (94K)
  - `detail_long_67chars.png` (98K)
- 저장 경로: `/home/jay/projects/ThreadAuto/output/task-short-text/`

### pyright
- renderer/cardnews.py: 0 errors, 0 warnings
- content/prompts_v2.py: 0 errors, 0 warnings
- tests/test_cardnews_renderer.py: 0 errors, 0 warnings

### 코드 스타일
- black: OK
- isort: OK

---

## Git 커밋 이력
1. `[task-331.1] 짧은 텍스트 폰트 확대 테스트 추가 (TDD RED)`
2. `[task-331.1] 렌더러 폰트 동적 확대 + 프롬프트 최소 40자 가이드`
3. `[task-331.1] 테스트 pyright 타입 에러 수정 (getpixel 반환 타입)`

---

## QC 자동 검증 결과

```json
{
  "tdd_check": "PASS",
  "pyright_check": "PASS",
  "style_check": "PASS",
  "data_integrity": "PASS",
  "file_check": "PASS (보고서/이벤트 파일 생성 후)",
  "test_runner": "77 passed (이번 변경 관련 테스트 전체 통과)",
  "scope_check": "SKIP",
  "schema_contract": "SKIP (workers 없음)"
}
```

**비고**: `tests/test_evergreen_topics.py::test_used_count_initial_zero` 1건 실패는 기존 테스트 이슈(이번 변경과 무관).

---

## 버그 유무
- 발견된 버그 없음

---

## 완료 조건 충족 확인
1. ✅ 짧은 텍스트 시 폰트 확대 동작 확인 (테스트 이미지 저장)
2. ✅ 콘텐츠 생성 프롬프트에 40자 최소 가이드 반영
3. ✅ pyright 에러 0건
4. ✅ 테스트 이미지 `/home/jay/projects/ThreadAuto/output/task-short-text/` 에 보존
