기존 GhiVideo 저장소 HEAD의 트래킹 소스 362개 파일을 복제. (node_modules·storage·빌드 산출물·대용량 미디어는 .gitignore 규칙대로 제외) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
AI Video Brief — 요약 보관함(좌측 목록 + DB 저장) 추가
소요 시간: 20분 Context 사용량: input 550k / output 30k tokens (추정값)
요청 내용
왼쪽에 요약된 영상의 제목 리스트를 보여주고, 클릭 시 해당 요약본을 본문에 표시. 요약 결과는 DB/파일에 저장해서, 이미 요약된 항목은 로컬 저장본을 불러와 표시.
구현 내용 (ai_video_brief 프로젝트)
백엔드
app/db.py신규 — SQLite 보관소 (storage/summaries.db, 파이썬 내장 sqlite3, 추가 의존성 없음)- summaries 테이블: id, video_id, url, title, duration, source, summary, transcript, created_at
app/main.py- 요약 파이프라인 시작 시
video_id(없으면 URL)로 저장본 조회 → 있으면 계산 없이 즉시 반환 (result.cached=true) - 요약 완료 시 DB에 자동 저장 (받아쓴 원문 포함)
- 신규 API:
GET /api/summaries(목록),GET /api/summaries/{id}(상세),GET /api/summaries/{id}/transcript(원문),DELETE /api/summaries/{id}(삭제) POST /api/jobs에force옵션 — 저장본 무시하고 재요약
- 요약 파이프라인 시작 시
웹 화면 (2단 레이아웃으로 개편)
- 좌측 사이드바: 📚 요약 보관함 — 제목/날짜/길이/출처 목록, 클릭 시 본문에 표시
- 우측 본문: URL 입력 + 진행 중 작업 + 선택된 요약 상세
- 상세 화면 버튼: 📋 복사 / 📄 원문 보기 / 🔄 다시 요약(force) / 🗑 삭제
- 요약 작업 완료 시 목록 자동 갱신 + 해당 요약 자동 표시, 저장본 사용 시 "💾 저장본에서 불러옴" 배지
테스트 결과
- ✅ 요약 → DB 저장 → 목록 노출 확인
- ✅ 같은 영상 재요청 → 2초 내 저장본 반환 (
cached: True) - ✅ 상세/원문/삭제 API 정상
- ✅ 새 2단 화면 정상 서빙
다음 에이전트 참고
pkill -f "uvicorn app.main"을 서버 재시작 명령과 한 줄에 쓰면 안 됨 — 명령 문자열 자체가 패턴에 걸려 자기 셸이 죽는다 (exit 144). 별도 호출로 분리할 것.- 서버 재시작: 구 프로세스 종료 후
cd ai_video_brief && ./run.sh또는 nohup uvicorn.