: user 맞춤 영화 추천 알고리즘을 적용한 영화 커뮤니티 사이트
프로그램
- Python 3.9.x
- Django 3.2.x
- Node.js 16.x
- Vue 2
- Django REST Framework & Vue
movies/final-pjt-front
$ npm install
$ npm install vue-star-rating
$ npm install @egjs/vue-flicking
$ npm run serve
movies/final-pjt-back
$ pip install -r requirements.txt
$ python manage.py migrate
$ python manage.py loaddata movies.json
$ python manage.py runserver
이름 | 역할 | 업무 분담 |
---|---|---|
서형준 | 팀장 | back-end * 데이터 모델링(ERD) 설계 및 작성 * Database, Django REST API 구현 * 영화 추천 알고리즘 구현 |
오연진 | 팀원 | front-end * Prototype 설계 및 기획 * Vue Cli, Axios를 통한 REST API 구현 * 서비스 화면 구현 |
-
Content Filtering
을 통한 영화 추천 알고리즘: 유저가 입력한 평점을 기반으로
장르
,배우
,키워드
에 점수를 부과하여 평점 미입력 영화(시청 전 영화) 중 점수가 높은 영화를 추천하는 방식
- 장르 기반 영화 추천 알고리즘
: 유저가 입력한 평점을 기반으로, 많이 시청한 장르
를 확인하여, 해당 장르의 영화를 추천하는 방식
ERD Cloud
를 활용하여 ERD 기획 (링크)
Figma
을 활용하여 페이지 기획 (링크)
FigJam
을 활용하여 컴포넌트 구조 기획 (링크)
- 로그인 한 user가 평점을 제출한 영화로 추천 알고리즘을 기준
- 추천 알고리즘이 적용되기 위해서는 user가 3.5점 이상의 평점을 제출한 영화의 전체 장르의 수가 3개를 도달해야함
- 위 조건이 충족됐을 시, user가 평점을 제출한 영화들의 장르들과 동일한 장르를 가진 영화들을 추천하는 알고리즘
if
: 평점을 매긴 영화가 없거나 평점을 3.5점이상을 제출한 영화의 총 장르의 수가 3개 이상이 되지 않으면 전체 장르 중 3개를 무작위로 선정
- 무작위로 선정된 3개의 장르가 포함되어있는 모든 영화들을 데이터베이스에서 추출하여 그 중에서 랜덤으로 선정된 20개의 영화를 사용자에게 제공하는 방식
로그인
: 아이디, 패스워드를 입력하여 로그인, 로그인 오류는 알림 메세지로 user에게 알림회원가입
: 아이디, 닉네임, 비밀번호를 입력하여 회원가입, 회원가입 오류는 알림 메세지로 user에게 알림
-
🌟
영화 홈
: user 추천 영화, 인기 영화, 현재 상영 영화를 각 20편 씩 조회 가능 -
🌟
영화 검색
: 영화를 검색하여 검색을 의도한 영화가 결과에 나올 시 영화 정보 조회 페이지로 이동 -
🌟
영화 정보 조회
- 영화의 세부정보(제목, 원제, 심의 등급, 평점, 장르, 감독, 배우, 줄거리)가 제공됨
북마크
저장,리뷰
작성, user평점
입력 기능 포함
리뷰
: 영화에 대해서 리뷰를 작성, 수정, 삭제할 수 있으며, 각 영화에 대해 user별로 1개만 작성 가능마이페이지
평점 남긴 영화
조회: 평점을 제출한 영화의 포스터 목록을 카드 형식으로 조회하는 게시판 기능 (더보기
로 이동하여 평점 내역을 확인 가능)나중에 볼 영화
조회: 나중에 볼 영화의 포스터 목록을 카드형식으로 조회하는 게시판 기능 (더보기
로 이동하여 영화의 정보 목록을 확인 가능)리뷰
조회: user가 남긴 리뷰를 한번에 조회하는 게시판 기능 (더보기
로 이동하여 리뷰 내역을 조회, 수정, 삭제 가능)
- 협업을 하며 파일명, 변수명에 신경써서 작성하였고, 추후 많은 파일을 수정작업 할 때 스스로도 편리함이 있었다.
- 개발 전 기획 단계에서 피그마 작업에 시간을 많이 소모하였는데, 이 부분이 추후 사이트 구현 시 디자인 수정 없이 개발에 집중할 수 있었다.
- 손발이 척척 착착 챱챱 잘맞았다.
- 컴포넌트 구조와 ERD를 함께 작성하지 않았기 때문에, 중간에 데이터베이스 수정 작업이 반복적으로 이루어졌다.
- 큰 틀과 큰 역할만 나눈 채 프로젝트를 시작하여 시간 계획이나 자세한 to-do가 없는 상태에서 진행되어 프로젝트 전체 진행상황이 중구난방이였다.
- 1주일이라는 주어진 시간을 계산하지않고 주제에만 집중해 구현하고 싶은 페이지와 컴포넌트들을 계속 추가해나가서, 모두 구현하지 못하고 extra리스트에 쌓여만 갔다.
- 키워드에 관한 고찰 : 영화별로 키워드만 찾을 수 있어서 키워드 관련한 추천 알고리즘에 대한 고민 필요
- 절댓값을 지양하고, 반응형 웹페이지로 만들기
- 배포 예정