# AI Video Brief — 다운로드 파일명이 제목으로 안 나오는 문제 수정

**소요 시간**: 10분
**Context 사용량**: input 1000k / output 78k tokens (추정값)

## 문제

저장은 되는데 파일명이 영상/음원 제목이 아니라 작업 id로 저장됨.

## 원인 (재현으로 확인)

- Starlette `FileResponse(filename=...)`는 한글 등 비ASCII 파일명일 때
  `Content-Disposition: attachment; filename*=utf-8''<인코딩>` **한 형식만** 출력하고
  구형/모바일 브라우저·다운로드관리자·curl이 인식하는 기본 `filename="..."` 형식을 빠뜨림
- `filename*`만 있으면 이를 못 읽는 클라이언트는 **URL 마지막 경로(작업 id)로 저장** → 문제 발생
- `curl -OJ` 재현: 파일이 `099fe812f033` 로 저장됨 (제목 아님)

## 수정 (`ai_video_brief/app/main.py`)

- `_content_disposition()` 헬퍼 추가 — RFC 6266 방식으로 **두 형식 모두** 출력:
  `attachment; filename="<ASCII대체>"; filename*=utf-8''<UTF-8>`
  - `filename*` : 최신 브라우저가 사용 → 완전한 한글 제목
  - `filename` : ASCII 대체(한글은 빠지고 스펙/확장자는 유지) → 구형/모바일/curl용, 최소한 작업 id는 아님
- `download_file()`이 `filename=` 대신 이 헤더를 직접 지정

## 테스트 결과

```
헤더: content-disposition: attachment; filename="1 DJI 5 _144p24fps.mp4"; filename*=utf-8''1%EC%8B%9C...설명서_144p24fps.mp4
curl -OJ 저장: "1 DJI 5 _144p24fps.mp4"   (예전엔 "099fe812f033")
```
- ✅ 최신 브라우저(Chrome/Edge/Firefox)는 filename* 우선 → "1시간으로 끝내는 DJI 미니 5 프로 사용 설명서_144p24fps.mp4" 전체 한글 제목으로 저장
- ✅ filename*를 못 읽는 클라이언트도 읽을 수 있는 ASCII 이름으로 저장 (작업 id 아님)
