- 발표자료(좌표투영·측점기반재생) 갱신 + 그림/PDF - 특허 출원 초안 및 도면 - AI 영상요약 서비스 작업기록(docs/history) - 관련 scripts 추가 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
44 lines
2.8 KiB
Markdown
44 lines
2.8 KiB
Markdown
# 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 재발함).
|