Files
GhiVideo/docs/history/2026-07-07_1515_AI영상요약-PWA폰설치-영상mp4다운로드.md
b23042andClaude Opus 4.8 fe25ce00f1 docs: 발표·특허·AI영상요약 자료 및 작업기록 추가
- 발표자료(좌표투영·측점기반재생) 갱신 + 그림/PDF
- 특허 출원 초안 및 도면
- AI 영상요약 서비스 작업기록(docs/history)
- 관련 scripts 추가

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 11:20:03 +09:00

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 재발함).