Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎬 최씨듀오 (Choi's Duo) - AI 기반 영화 큐레이션 서비스

OpenAI API와 TMDB API를 활용한 개인화 영화 추천 플랫폼
개발 기간: 2024.05.01 ~ 2024.05.20 (SSAFY 1학기 관통 프로젝트)


🛠 Tech Stack

Python Django DRF SQLite Vue.js


1. 프로젝트 개요 및 R&R

단순한 영화 검색을 넘어, 사용자의 취향을 입력받아 생성형 AI(ChatGPT)가 영화를 추천해주는 하이브리드 큐레이션 서비스입니다.

👨‍💻 팀원 및 역할 (Team Size: 2명)

[공동 핵심 기여 - Backend & Data]

  • RESTful API 설계 및 구현: 리소스 중심의 API URI 설계 및 Status Code 표준화
  • DB 모델링 및 최적화: N+1 문제 해결을 위한 select_related 적용 및 정규화/비정규화(JSONField) 전략 수립
  • 데이터 파이프라인 구축: TMDB 데이터 수집, 가공, 적재(ETL) 프로세스 자동화

[개별 담당 영역]

이름 담당 역할 (Role) 상세 내용
최진오 Frontend Lead &
API Integration
SPA 전반 아키텍처 설계 및 구현
• 페이지네이션(Pagination) 및 복합 필터링 로직 구현
• Axios 인터셉터를 활용한 에러 핸들링 및 데이터 시각화
최형우 AI Logic &
Community
• OpenAI API 프롬프트 엔지니어링 및 추천 알고리즘 구현
• 게시판(CRUD) 및 댓글 기능 구현

2. 시스템 아키텍처 및 DB 모델링

📊 ERD (Entity Relationship Diagram)

영화 데이터의 효율적인 적재를 위해 정규화된 테이블 구조와 유연한 JSON 필드를 혼합하여 설계했습니다.

ERD 이미지 (이미지 설명: User, Movie, Comment 간의 관계 및 확장성을 고려한 스키마 설계)


3. 핵심 기술 및 구현 기능

🚀 1. 외부 API 연동 기반 데이터 파이프라인 (Common)

  • TMDB API: 영화 메타 데이터 대량 수집 및 전처리 로직 구현
  • OpenAI API: 사용자 선택 키워드 기반 추천 로직 구현
  • 프로세스: User InputOpenAI PromptingJSON ParsingTMDB SearchClient Response

⚡ 2. 대용량 데이터 조회 최적화 (Backend)

  • Query Optimization: Django ORM의 select_relatedprefetch_related를 적재적소에 사용하여 쿼리 수를 획기적으로 감소시키며 DB 부하 최소화.
  • JSONField 활용: 영화별 상이하고 가변적인 속성 데이터(장르, 태그 등)를 효율적으로 담기 위해 NoSQL적 요소를 도입하여 스키마 유연성 확보.

🎨 3. 사용자 경험 중심의 UI/UX (Frontend)

  • Pagination & Filtering: 다량의 데이터 전송 시 발생할 수 있는 네트워크 리소스를 절약하기 위해, 서버 사이드 페이지네이션과 연동된 클라이언트 필터링 구현.

4. 트러블 슈팅 (Troubleshooting)

⚠️ 비동기 데이터 처리와 레이턴시 이슈

  • 문제: 외부 API(OpenAI, TMDB)를 연속으로 호출하는 과정에서 응답 지연(Latency) 발생 및 실행 순서 보장 실패 이슈.
  • 해결: 비동기 처리 흐름을 제어하고, 프론트엔드에서 로딩 상태(Skeleton UI)를 관리하여 UX 저하 방지.

🔐 인증/인가 및 커스텀 유저 모델 이슈

  • 이슈: 소셜 로그인 구현 과정에서 JWT 토큰 발급과 기존 Custom User Model 간의 필드 충돌 발생.
  • 대응: 프로젝트 마감 기한 준수를 위해 소셜 로그인은 MVP 범위에서 제외하고, 자체 인증 시스템의 보안성 강화(Password Hashing 등)에 집중하여 배포 안정성 확보.

5. 프로젝트 회고 (Retrospective)

  • Full-Stack 관점의 이해: 백엔드 API 설계부터 프론트엔드 연동까지 전 과정을 경험하며, API 명세서가 협업에 미치는 중요성을 체감함.
  • 데이터 흐름 파악: 데이터가 수집되어 DB에 저장되고, API를 통해 클라이언트에 뿌려지기까지의 파이프라인을 직접 구축하며 시스템 이해도를 높임.

6. 설치 및 실행 (How to Run)

# 1. Repository Clone
git clone [레포지토리 주소]

# 2. Install Dependencies
pip install -r requirements.txt

# 3. Migration & Run Server
python manage.py migrate
python manage.py runserver

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages