# task-324.1 완료 보고서: 인포박스 제목-내용 간격 + 하단정렬

## 작업 내용
ThreadAuto 인포박스의 제목-내용(description) 간격을 8px→16px로 변경하고, description 텍스트를 박스 하단에 정렬(bottom-align) 구현.

## 변경 파일
- `/home/jay/projects/ThreadAuto/renderer/cardnews.py` — 핵심 수정 파일

## 생성 파일
- `/home/jay/projects/ThreadAuto/tests/test_task324_infobox.py` — 검증 테스트 스크립트

## 변경 상세

### 1. 클래스 상수 추가 (line 145)
- `TITLE_DESC_GAP: int = 16` — task-322.1 상수 체계에 맞춰 추가

### 2. `_draw_info_box()` 수정 (detail 슬라이드용)
- `content_h` 계산: 하드코딩 `8` → `self.TITLE_DESC_GAP`
- description 하단정렬: `y + box_h - pad - desc_total_h`로 bottom-up 계산
- 최소 간격 보장: `max(desc_y, ty + self.TITLE_DESC_GAP)`

### 3. `render_card_list()` 인라인 렌더링 수정
- `needed_h` 계산 (초기 + trimmed): `8` → `self.TITLE_DESC_GAP`
- `content_h` 계산: `8` → `self.TITLE_DESC_GAP`
- 제목: 상단 패딩 고정 (`cur_card_y + card_pad`)
- description 하단정렬: 동일 bottom-up 로직 적용
- 오버플로우 방지 로직 유지 (말줄임, 2줄 제한 등)

## 테스트 결과

### 5개 테마 렌더링 (20건 전원 PASS)
- NavyGold, BlackRed, GreenWhite, PurplePink, OrangeCream
- card_list (short/long desc) + detail (short/long desc) = 테마당 4건
- 전체 이미지 크기: 1080x1350 정상
- 오버플로우: 없음

### 기존 테스트
- `test_cardnews_renderer.py`: 67/67 PASSED
- 전체: 973 PASSED, 6 FAILED (기존 환경 이슈, 인포박스 무관)

### pyright
- 새로운 타입 에러: 0건
- 기존 환경 이슈: 2건 (renderer.engine/themes import 해석 — standalone 분석 한계)

### 코드 스타일
- black: OK (변경 없음)
- isort: OK (변경 없음)

## 완료 기준 충족 여부
- [x] 제목-내용 간격 8px → 16px
- [x] description 하단정렬 구현
- [x] card_list, detail 모두 동일하게 적용
- [x] 렌더링 테스트 정상 (5개 테마 × 4 변형 = 20건 PASS)
- [x] pyright 에러 0건 (신규)

## QC 자동 검증 결과
```json
{
  "task_id": "task-324.1",
  "overall": "PASS",
  "checks": {
    "api_health": "SKIP",
    "file_check": "PASS",
    "data_integrity": "PASS",
    "test_runner": "SKIP",
    "schema_contract": "SKIP",
    "pyright_check": "WARN (기존 import 해석 이슈 2건)",
    "style_check": "PASS",
    "scope_check": "SKIP"
  }
}
```

## 버그/이슈
- 없음
