NetPlus는 영상 시청 중 사용자가 놓친 맥락을 스포일러 없이 설명하고 요약을 제공하는 타임라인 기반 시청 보조 챗봇입니다.
- 끊어보기/이어보기: 출퇴근/이동 중 짧게 보다가 다시 켜면 “여기까지 무슨 내용이었지?”가 반복됨
- 순간 놓침: 소음/알림/대화/딴짓으로 대사 한두 줄만 놓쳐도 맥락이 끊기고, 이후 장면이 이해가 어려워짐
- 즉시 복구의 부재: “방금 왜 화난 거야?”, “저 사람 누구였지?” 같은 질문이 생겨도 바로 해결하기 어려움
- 되감기 비용: 되감기/자막 다시보기/이전 회차 재생은 시간이 들고 몰입이 끊김
- 검색의 스포일러 리스크: 커뮤니티/리뷰/위키 검색은 정보는 빠르지만 스포일러 위험이 큼
- 답변/요약은 현재 시점까지만 근거로 사용 (스포일러 구조적 차단)
- 근거(자막/대사)와 타임라인을 함께 제시해 신뢰 확보
- 시청 시간(
current_time_ms) 기반 QA/RAG - 내용 요약(20초/1분/3분 프리셋)
- 질문 스타일(친구/비서/평론가) 반영
- 일상 질문 vs 작품 질문 의도 분류
- 질문별 기준 시점 타임라인 표시 (채팅 메시지 상단)
- 채팅 히스토리 저장/복원/초기화
- 에피소드 선택 시 Redis 캐시 warmup
- 관리자 인제스트(작품/에피소드/자막/영상 URL/썸네일)
cd be
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Copy-Item .env.example .env
alembic upgrade head
uvicorn app.main:app --reload백엔드 기본 주소:
http://127.0.0.1:8000- Docs:
http://127.0.0.1:8000/docs
cd fe
npm install
npm run dev프론트 기본 주소:
http://127.0.0.1:5173
Vite 프록시가 /api를 http://localhost:8000으로 전달합니다.
cd be
docker compose up -d --build포함 서비스:
postgres(5432)api(8000)
api 컨테이너는 시작 시 alembic upgrade head를 자동 수행합니다.
GET /api/healthPOST /api/auth/signupPOST /api/auth/loginGET /api/auth/me
GET /api/titlesGET /api/titles/{titleId}GET /api/titles/{titleId}/episodesGET /api/episodes/{episodeId}/subtitlesPOST /api/episodes/{episodeId}/cache/warmup
POST /api/qaPOST /api/qa/streamPOST /api/recapGET /api/qa/historyDELETE /api/qa/history
GET /api/characters/{characterId}GET /api/characters/{characterId}POST /api/resolve-entity
POST /api/ingest/titlesPOST /api/ingest/episodesPOST /api/ingest/subtitle-lines:bulkDELETE /api/ingest/episodes/{episode_id}/subtitle-linesPOST /api/ingest/video-upload-signaturePATCH /api/ingest/episodes/{episode_id}/video-urlDELETE /api/ingest/episodes/{episode_id}/video-urlPOST /api/ingest/image-upload-signaturePATCH /api/ingest/titles/{title_id}/thumbnail-urlDELETE /api/ingest/titles/{title_id}/thumbnail-urlDELETE /api/ingest/titles/{title_id}