# task-314.1: ThreadAuto pyright 타입 정리 + 공간 임계값 조정

## 개요
task-312.1 파이프라인 테스트에서 발견된 2가지 이슈를 해결한다:
1. pyright 타입 에러 11개 전부 해소 (에러 0건 목표)
2. 렌더러 공간 임계값 조정 (인포박스/TIP 생략이 너무 공격적)

## 프로젝트 경로
- `/home/jay/projects/ThreadAuto/`

## 이슈 1: pyright 타입 에러 11개

### Import 해결 에러 (5개) — pyrightconfig.json 설정으로 해결
pyright가 ThreadAuto를 패키지로 인식하지 못함. 프로젝트 루트에 pyrightconfig.json 생성.

**파일**: `/home/jay/projects/ThreadAuto/pyrightconfig.json` (신규)
**내용**:
```json
{
  "include": ["."],
  "extraPaths": ["."],
  "pythonVersion": "3.11",
  "reportMissingImports": "warning"
}
```

에러 위치:
- `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개) — int() 명시적 변환
float → int 변환이 필요한 위치. `int()` 래핑으로 해결.

에러 위치:
1. `renderer/cardnews.py:430` — return 타입 `tuple[float, float]` → `tuple[int, int]` 필요. int() 래핑.
2. `renderer/cardnews.py:738` — `_draw_divider` y 파라미터에 float 전달. int() 래핑.
3. `renderer/cardnews.py:748` — `_draw_pill_badge` y 파라미터에 float 전달. int() 래핑.
4. `renderer/engine.py:135` — float 값을 int 변수에 할당. int() 래핑.
5. `renderer/engine.py:205` — `draw_rect`의 x, w 파라미터에 float 전달. int() 래핑.

**주의**: 단순히 int()로 래핑만 하고, 로직은 변경하지 말 것. 기존 동작을 보존해야 함.

## 이슈 2: 공간 임계값 조정

### 현상
- 인포박스 3번 항목: 남은 공간 128px < 최소 140px → 생략됨 (5개 테마 공통)
- TIP 블록: 남은 공간 -54px < 최소 100px → 생략됨

### 조정 방향
임계값을 낮추면 더 많은 콘텐츠가 표시되지만 오버플로우 위험. 적절한 밸런스를 찾아야 함.

1. **인포박스 최소 공간 임계값**: 140px → **120px**로 조정
   - 128px 남아서 생략되었으므로, 120px이면 표시 가능
   - 코드에서 해당 임계값 상수를 찾아서 수정

2. **TIP 블록 최소 공간 임계값**: 100px → **80px**로 조정
   - -54px이면 TIP이 본래 154px를 차지하는데 공간이 100px 미만이라 생략
   - TIP 블록 자체 높이가 있으므로 더 줄이기는 어려움
   - TIP 블록은 현재 임계값 유지해도 됨 (실제로 -54px이면 공간 자체가 부족)
   - 대신 **TIP 블록의 폰트를 줄이거나 패딩을 줄여서 TIP 블록 자체 높이를 낮추는 방향** 검토

3. **FB-7 관련 코드**: cardnews.py에서 "FB-7" 또는 "남은 공간" 로그가 있는 부분을 찾아서 임계값 조정

### 조정 원칙
- 1080x1350 캔버스 내에서 오버플로우 절대 발생하면 안 됨
- 임계값 조정 후 반드시 **실제 렌더링 테스트**로 겹침/오버플로우 없는지 확인
- 조정이 위험하다고 판단되면 현재값 유지하고 보고서에 사유 기재

## 테스트
1. pyright 실행 → 에러 0건 확인: `~/.nvm/versions/node/v24.14.0/bin/pyright /home/jay/projects/ThreadAuto/renderer/ /home/jay/projects/ThreadAuto/content/`
2. 렌더링 테스트 → 임계값 조정 후 인포박스 3번이 정상 표시되는지 확인
3. 오버플로우 없는지 이미지 크기 1080x1350 확인

## 완료 기준
- [ ] pyright 에러 0건
- [ ] pyrightconfig.json 생성
- [ ] float/int 타입 에러 6건 해소
- [ ] 인포박스 임계값 조정 (합리적 수준)
- [ ] TIP 블록 임계값 검토 (조정 또는 유지 판단 + 사유)
- [ ] 렌더링 테스트 겹침/오버플로우 없음

## task-timer
- task_id: task-314.1
- 완료 시: `python3 /home/jay/workspace/memory/task-timer.py end task-314.1`
