프로젝트 소개
•
영화 리뷰 뉴스피드 서비스
•
리뷰마다 장르 해시태그가 있고, 특정 장르 해시태그를 선택하면 그 해시태그가 들어간 리뷰들을 보여준다.
프로젝트 의의
•
Github Flow 를 이용하여 이슈, 풀리퀘스트 및 협업에 익숙해지기
•
코드에 의도를 담기 (직관적 명명, 가독성 향상, 읽기 적당한 메서드 길이, 1작업당 1커밋, 근거있게 작성 등)
기술스택
•
백엔드
◦
Spring Boot
◦
JPA
◦
MySQL
◦
Spring Security
유스케이스 모델링
1. 시스템 상황 분석
•
무비토크는 영화 리뷰를 작성해서 해시태그로 원하는 장르의 리뷰를 볼 수 있는 서비스다.
•
무비토크는 회원가입을 할 수 있다.
◦
loginId, password, nickname, description(한줄소개)
•
무비토크는 로그인 없이도 리뷰를 조회할 수 있다.
•
작성과 댓글, 좋아요는 로그인 유저만 할 수 있다.
•
사용자가 장르 해시태그를 클릭하면 해당 해시태그가 걸린 리뷰만을 조회.
•
로그인 사용자는
◦
리뷰를 작성할 수 있다.
◦
리뷰를 수정할 수 있다.
◦
리뷰를 삭제할 수 있다.
◦
댓글을 작성할 수 있다.
◦
댓글을 수정할 수 있다.
◦
댓글을 삭제할 수 있다.
◦
좋아요를 누를 수 있다.
◦
자신의 프로필을 수정할 수 있다.
▪
닉네임이나 한줄 소개는 바로 수정 가능하다.
▪
비밀번호 수정은 한번 더 비밀번호를 검증한다.
•
로그인 사용자는 프로필에서
◦
자신의 닉네임과 한줄 소개, 작성한 리뷰들, 좋아요 누른 리뷰을 볼 수 있다.
◦
메인 화면에서는
▪
장르 해시태그를 선택할 수 있다. (기본값 - 전체)
▪
최신순으로 리뷰를 볼 수 있다. (기본값)
▪
좋아요순으로도 볼 수 있다.
•
좋아요순으로는 오늘, 일주일, 한달, 올해를 기준으로 표시할 수 있다.
▪
검색을 할 수 있다. - 다른 페이지로 이동
•
검색 시 검색어를 기준으로 글제목, 글내용을 모두 검사한다.
•
가져온 결과는 리뷰 리스트와 리뷰 개수를 포함한다.
◦
영화 리뷰 단순 조회는
▪
제목, 내용, 생성일자, 댓글 수, 작성자, 좋아요 수, 별점을 표시한다.
◦
영화 리뷰 세부 조회는
▪
제목, 생성일자, 작성자, 해시태그들, 좋아요 수, 별점, 글내용, 유저 프로필, 댓글리스트
◦
영화 리뷰 작성 시
▪
글제목, 글내용, 장르 해시태그들, 별점을 포함해야 한다.
◦
리뷰를 삭제하면
▪
유저의 작성 목록도 삭제된다.
▪
그 리뷰에 작성된 댓글도 다 삭제된다.
▪
좋아요 누른 것도 삭제된다.
▪
별점도 삭제된다.
2. 액터 식별
•
무비토크에 회원가입 유무에 따라 비회원과 회원이 있다.
3. 유스케이스 식별
•
로그인
•
회원가입
•
프로필 조회
◦
프로필 수정
▪
닉네임과 한줄소개 수정
▪
비밀번호 수정
•
특정 정렬 순서로 리뷰 조회
◦
특정 장르 해시태그로 리뷰 검색
◦
특정 검색어로 리뷰 검색
◦
좋아요 클릭
◦
댓글 조회
▪
댓글 작성
▪
댓글 수정
▪
댓글 삭제
•
리뷰 작성
•
리뷰 수정
•
리뷰 삭제
4. 유스케이스 다이어그램 작성
API 명세서
Table
Search
수정 사항
•
댓글 생성 부분에서 /{reviewId} 제거하고
•
리뷰 전체 목록 조회에서 쿼리스트링을 이용하여 정렬 및 검색
•
좋아요 버튼 클릭은 PATCH 로 변경
•
리뷰 조회
◦
메인홈피
▪
전체 or 해시태그 → 해시태그가 포함된 리뷰 가져오기 ~~~~/{hashtagName}
◦
검색
▪
검색어 → 글제목+글내용에 검색어 포함되는 리뷰 가져오기 ~~~~/query/{queryName}?sort=정렬방식
◦
최신순 or 좋아요순 → 정렬 순서
▪
sort
•
정렬 순서
◦
recent
◦
likeToday
◦
likeWeek
◦
likeMonth
◦
likeYear
프로젝트 관련 사진.
정책
•
사용자
◦
login_id
▪
4이상 20이하
▪
a~z, A~Z, 0~9 만 포함
◦
password
▪
8이상 20이하
▪
a-z, A-Z, 0-9, !@#$ 포함
▪
BCrypt 암호화로 DB에는 60글자로 저장
◦
nickname
▪
2이상 20이하
▪
a-z, A-Z, 0-9, 가-힣
◦
description
▪
nullable
▪
40이하
•
댓글
◦
content
▪
3자 이상 100자 이하
•
리뷰
◦
title
▪
1 ~ 50자
◦
content
▪
1000자 이하
◦
rating_score
▪
0 ~ 10 (1당 별 반 개)
◦
movie_name
▪
100자 이하
•
해시태그
◦
name
▪
공백 X
▪
a-z, A-Z, 가-힣
▪
1자 이상 15자 이하