# AI Video Brief — PWA(폰 설치형 앱) + 영상(mp4) 다운로드 기능 추가

**소요 시간**: 25분
**Context 사용량**: input 600k / output 40k tokens (추정값)

## 요청 내용

1. 안드로이드 앱으로 만들기 → 추천안(PWA 설치형 웹앱 + 네트워크 설정) 승인받아 진행
2. (작업 중 추가 요청) 영상 자체 다운로드 기능도 추가

## 구현 내용 (`ai_video_brief` 프로젝트)

### PWA (폰 홈 화면 설치형 웹앱)
- 앱 아이콘 3종 PIL로 생성 (192/512/maskable-512, 파랑→보라 그라데이션 + 재생버튼 도안)
- `manifest.json` (standalone, 한국어, short_name "영상요약")
- `sw.js` 서비스워커 — 화면은 네트워크 우선+캐시 폴백, `/api/`는 캐시 안 함
- FastAPI에 `/manifest.json`, `/sw.js` 루트 라우트 추가 (SW 범위 확보), `/static` 마운트
- index.html: manifest/theme-color/아이콘 연결, SW 등록, `beforeinstallprompt` 시 "📲 앱으로 설치" 버튼 표시
- 모바일 CSS: 폰에서 입력창이 위·보관함이 아래(order), 버튼 확대

### 폰 접속 설정
- `windows-setup/포트열기.ps1` — 관리자 PowerShell에서 1회 실행:
  WSL IP 자동 감지 → netsh portproxy(55100) + 방화벽 규칙 + 폰 접속 주소 출력
- WSL2 IP는 재부팅마다 바뀌므로 재부팅 후 접속 안 되면 스크립트 재실행 (스크립트가 자동 처리)
- README에 단계별 안내 추가: ① 포트 열기 ② 홈 화면 추가 ③ (선택) Tailscale — https 확보 시 완전한 standalone 설치 + 집 밖 접속

### 영상(mp4) 다운로드
- `config.py`: `VIDEO_DIR`, `VIDEO_MAX_HEIGHT`(기본 1080)
- `downloader.download_video()`: bestvideo(mp4)+bestaudio(m4a) → ffmpeg 병합 mp4
- `main.py`: task `"video"` 파이프라인 추가, `/api/download/{id}`가 mp3/mp4 모두 서빙
- 웹 화면: 🎬 영상 다운로드 버튼(청록색) 추가, 작업명/파일 라벨 맵 처리

## 테스트 결과

- ✅ manifest/sw.js/아이콘 모두 200 + 올바른 content-type
- ✅ 서버 재시작 후 보관함 데이터(SQLite) 유지 확인
- ✅ 영상 다운로드: 테스트 영상 → mp4 0.5MB 저장, `/api/download` 200 video/mp4

## 다음 에이전트 참고

- **PWA 설치의 한계**: `http://LAN IP` 접속은 보안 컨텍스트가 아니라 Chrome이 "바로가기" 형태로만 추가됨 (주소창 보임). 완전한 standalone 설치는 https 필요 → README의 Tailscale 3단계 (`tailscale serve`) 안내 참조.
- 윈도우 쪽 명령(관리자 netsh/방화벽)은 에이전트가 실행 불가 → 사용자가 `포트열기.ps1` 직접 실행해야 함.
- `pkill -f "uvicorn app[.]main"` 은 반드시 서버 시작 명령과 **별도 Bash 호출**로 (같은 호출에 start 명령이 있으면 그 문자열에 패턴이 걸려 자기 셸이 죽음, exit 144 재발함).
