# AI Video Brief — 다운로드 기록 목록 + 다시 받기 기능

**소요 시간**: 12분
**Context 사용량**: input 960k / output 72k tokens (추정값)

## 요청 내용

음악이든 영화든 다운로드 받았던 것을 히스토리 목록으로 저장해 다시 받을 수 있게.

## 구현 내용 (`ai_video_brief`)

### 백엔드
- `db.py`: `downloads` 테이블 신규 (id, video_id, url, title, kind, quality, format_id, video_only, size_mb, created_at)
  - `save_download()` — 같은 (video_id/url, kind, quality)면 옛 기록 지우고 갱신(중복 방지)
  - `list_downloads()` / `get_download()` / `delete_download()`
- `main.py`:
  - 다운로드 완료 시 `_save_download_record()` 로 기록 저장 (음성/영상 파이프라인 둘 다)
  - `GET /api/downloads` — 기록 목록 + 각 항목 `file_exists`(파일이 아직 디스크에 있는지) 계산
  - `DELETE /api/downloads/{id}` — 기록 + 저장 파일 함께 삭제
  - `download_file()` 개선 — 메모리 작업이 없으면(서버 재시작 등) DB 기록에서 제목/품질 가져와 파일명 생성

### 웹 화면
- 좌측에 "⬇️ 다운로드 기록" 카드 추가 (요약 보관함 아래)
  - 항목: 🎬/🎵 + 제목 + 품질 + 날짜 + 크기, 파일 없으면 "파일없음" 표시
  - 파일 있으면 ⬇️(즉시 저장, 직접 링크), 없으면 🔄(저장했던 품질 그대로 다시 받기)
  - ✕ 버튼: 기록+파일 삭제
- 다운로드 작업 완료 시 기록 목록 자동 새로고침

## 테스트 결과

- ✅ 영상 다운로드 → 기록에 저장 (제목/품질/크기/파일있음=True)
- ✅ 파일 강제 삭제 → file_exists=False 로 전환, format_id/video_only 보존(다시받기 가능)
- ✅ DELETE → 기록·파일 삭제 확인
- ✅ 화면에 다운로드 기록 UI 정상 렌더

## 다음 에이전트 참고

- "다시 받기"는 파일이 있으면 즉시 저장, 없으면 저장된 format_id로 유튜브에서 재다운로드 (새 job id로 새 파일 생성 → 기록은 dedupe로 갱신)
- 다운로드 기록과 요약 보관함은 별도 테이블 (downloads vs summaries)
