GhiVideo 소스 복제 — v4 작업 시작 기준
기존 GhiVideo 저장소 HEAD의 트래킹 소스 362개 파일을 복제. (node_modules·storage·빌드 산출물·대용량 미디어는 .gitignore 규칙대로 제외) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user