■ JITHub 개발일지 82일차
□ TIL(Today I Learned) ::
가까?마까?(GaggaMagga) 프로젝트
가까?마까?(GaggaMagga) 프로젝트
📌 프로젝트 개요
기획 의도
- 누구나 여행을 떠나서 음식점을 가거나, 점심 식사 메뉴를 정할 때 고민이 있었던 경험이 있을 것 입니다.
- 본 서비스는 '제주도' 라는 특정 지역에서 먹고자 하는 음식의 종류나 장소를 선택하면 사용자에게 맛집을 추천하고 있습니다.
- 추천 기능은 머신러닝 유저기반 추천 기능을 활용하여 사용자와 가장 유사한 경험을 갖고 있는 사용자의 데이터들를 통해 음식점을 추천합니다.
- 방문한 맛집은 다른 사용자와 후기를 공유하고, 후기에는 별점을 넣어 장소별 평가점수를 관리할 수 있습니다.
- 각 후기에는 댓글과 대댓글 기능으로 유저간 경험을 공유할 수 있는 플랫폼을 제공합니다.
- 마음에 드는 장소는 북마크하여 저장하고, 성향이 잘 맞는 유저는 팔로우하여 해당 유저의 경험을 공유받을 수 있는 서비스를 구성하였습니다.
개발기간 : '22.11.30 ~ 12.29'
🥘 서비스 시연 영상
⚙ 기능 명세서
- 사용자 환경(회원가입, 로그인, 회원정보 관리, 팔로우, 비활성화, 아이디/비밀번호 찾기 등등)
- 맛집 후기(리뷰) 작성/수정/삭제, 조회수 카운트, 좋아요, 검색 기능
- 후기 댓글 작성/수정/삭제
- 후기 댓글의 대댓글 작성/수정/삭제 기능
- 유저간 댓글 알림 기능
🔨 개발 포지션 구성
🛠 사재혁
- 유저 관리, 프로필, 개인설정 및 추가 기능
- user 테스트 코드
- Docker, AWS 배포
- CI/CD 구축
- 코드 리팩토링/Swagger 적용
🛠 장진
- 머신러닝 장소 추천 기능, 후기 조회수, 페이지네이션
- place 테스트 코드
- CI/CD 구축
🛠 나웅주
- 리뷰 조회 페이지, Best 리뷰 페이지
🛠 이지영
- 북마크 기능, 좋아요 기능, 댓글/대댓글 기능
- review 테스트 코드
🛠 이금빈
- 리뷰 생성 페이지, 팔로우 기능, 알림 기능, 검색 기능
- notification 테스트 코드
- Docker, AWS 배포
⛓ Tech Stack
Backend :
Server :
Management :
Database :
📚 Used API, Dataset
- 소셜로그인 : KAKAO Oauth2 API
- 계정 찾기 : NAVER Cloud SMS API
- 지도 App : NAVER Web Dynamic Map API
- 검색 App : ALGOLIA API
- IP 정보 확인 : Whois API
- 맛집 Data : NAVER Map v5.0 crawling Data
🧱 Project Architecture
🕸 Wireframe
🛢 Database ERD
🎯 Notion API | Swagger API Docs
USER API
PLACE API
REVIEW API
NOTIFICATION API
🤙 Test Code Case
USER TEST CODE
회원가입
- 회원가입 성공
- 회원가입 실패(이메일 빈칸)
- 회원가입 실패(이메일 형식)
- 회원가입 실패(이메일 중복)
- 회원가입 실패(아이디 빈칸)
- 회원가입 실패(아이디 유효성검사)
- 회원가입 실패(아이디 중복)
- 회원가입 실패(비밀번호 빈칸)
- 회원가입 실패(전화번호 중복)
- 회원가입 실패(비밀번호확인 빈칸)
- 회원가입 실패(비밀번호, 비밀번호 확인 일치 )
- 회원가입 실패(비밀번호 유효성 검사(simple))
- 회원가입 실패(비밀번호 유효성검사(동일))
- 회원가입 실패(약관동의)
회원정보 수정/비활성화
- 회원정보 수정 성공
- 회원정보 수정 실패(이메일 빈칸)
- 회원정보 수정 실패(이메일 중복)
- 회원정보 수정 실패(이메일 형식)
- 회원정보 수정 실패(휴대폰번호 중복)
- 회원 비활성화
로그인
- (access token)로그인 성공
- (access token)로그인 실패
- (access token 여러번 시도)로그인 실패
- (refresh_token)로그인 성공
- (refresh_token)로그인 실패(refresh 입력안했을 때)
- (refresh_token)로그인 실패(access 토큰 넣었을 때)
로그아웃
- (refresh_token)로그아웃 성공
- (refresh_token)로그아웃 실패(refresh 입력안했을 때)
- (refresh_token)로그아웃 실패(access 토큰 넣었을 때)
- 일괄 로그아웃 성공
토큰 유효 확인
- access 토큰 유효 (성공)
- refresh 토큰 유효 (성공)
- 토큰 유효하지 않음 (실패)
이메일 인증 확인
- 이메일 인증 확인 성공
- 이메일 인증 확인 실패
이메일 재인증
- 이메일 재인증 성공
- 이메일 재인증 실패
아이디 찾기(인증번호)
- 인증번호 보내기 성공
- 인증번호 보내기 실패
- 인증번호 확인 성공
- 인증번호 확인 실패
프로필
- 개인 프로필 조회
- 개인 프로필 수정 성공
- 개인 프로필 수정 실패(닉네임 유효성검사)
- 개인 프로필 수정 실패(닉네임 중복)
- 공개 프로필 조회
- 로그인 기록
- IP 국가코드 차단 읽기 성공
- IP 국가코드 차단 성공
- IP 국가코드 차단 실패 (국가 코드 중복)
- IP 국가코드 차단 실패 (국가 코드 빈칸)
- IP 국가코드 차단 삭제
비밀번호 변경
- 비밀번호 변경 성공
- 비밀번호 변경 실패(현재 비밀번호 빈칸)
- 비밀번호 변경 실패(현재 비밀번호 불일치)
- 비밀번호 변경 실패(비밀번호 빈칸)
- 비밀번호 변경 실패(비밀번호 확인 빈칸)
- 비밀번호 변경 실패(비밀번호 현재비밀번호와 동일시)
- 비밀번호 변경 실패(비밀번호 유효성검사(simple))
- 비밀번호 변경 실패(비밀번호 유효성검사(동일))
- 비밀번호 변경 실패(비밀번호, 비밀번호 확인 일치)
비밀번호 찾기
- 비밀번호 찾기 실패(존재하지 않는 이메일전송)
- 비밀번호 찾기 실패(형식에 맞지 않는 이메일 전송)
- 비밀번호 찾기 실패(이메일 빈칸일 때 이메일 전송)
비밀번호 토큰 인증
- 비밀번호 토큰 인증 성공
- 비밀번호 토큰 인증 실패비밀번호 분실시 재설정
- 비밀번호 분실시 재설정 성공
- 비밀번호 분실시 재설정 실패(비밀번호 빈칸)
- 비밀번호 분실시 재설정 실패(비밀번호 확인 빈칸)
- 비밀번호 분실시 재설정 실패(비밀번호 유효성검사(simple))
- 비밀번호 분실시 재설정 실패(비밀번호 유효성검사(동일))
- 비밀번호 분실시 재설정 실패(비밀번호, 비밀번호 확인 일치)
- 토큰이 다를 경우
비밀번호 만료
- 비밀번호 만료시 확인
- 비밀번호 만료시 다음에 변경
- 비밀번호 만료시 변경 성공
- 비밀번호 만료시 변경 실패(현재 비밀번호 빈칸)
- 비밀번호 만료시 변경 실패(현재 비밀번호 불일치)
- 비밀번호 만료시 변경 실패(비밀번호 빈칸)
- 비밀번호 만료시 변경 실패(비밀번호 확인 빈칸)
- 비밀번호 만료시 변경 실패(비밀번호 유효성검사(simple))
- 비밀번호 만료시 변경 실패(비밀번호 유효성검사(동일))
- 비밀번호 만료시 변경 실패(비밀번호, 비밀번호 확인 일치)
팔로우 성공
- 팔로우 기능 성공
- 팔로우 기능 실패(본인 팔로우 했을 때)
PLACE TEST CODE
맛집 카테고리 선택
- 카테고리 선택(음식 선택 - 비로그인 계정)
- 카테고리 선택(장소 선택 - 비로그인 계정)
맛집 리스트 추천
- 맛집 리스트 불러오기(음식 선택 - 비로그인 계정)
- 맛집 리스트 불러오기(장소 선택 - 비로그인 계정)
- 맛집 리스트 불러오기(음식 선택 - 로그인 계정)
- 맛집 리스트 불러오기(장소 선택 - 로그인 계정)
맛집 상세페이지
- 맛집 상세페이지 조회
- 맛집 삭제(관리자 계정)
- 맛집 삭제 실패(비관리자 계정)
- 맛집 북마크(유저일 때)
- 맛집 검색
REVIEW TEST CODE
비로그인 계정, 로그인 계정(리뷰X), 카카오계정(리뷰X)
- 리뷰 전체 조회(Best리뷰)
- 맛집 리뷰 조회
리뷰 작성
- 리뷰 작성(이미지X)
- 리뷰 작성(이미지O)
- 리뷰 작성 실패(비로그인 유저)
- 리뷰 작성 실패(리뷰 내용이 빈칸)
- 리뷰 작성 실패(리뷰 평점이 빈칸)
리뷰 수정
- 리뷰 수정 내용 조회
- 리뷰 수정(이미지X)
- 리뷰 수정(이미지O)
- 리뷰 수정 실패(비로그인 유저)
- 리뷰 수정 실패(리뷰 내용이 빈칸)
- 리뷰 수정 실패(리뷰 평점이 빈칸)
- 리뷰 수정 실패(리뷰 작성자 불일치(작성자 user1))
리뷰 삭제
- 리뷰 삭제 실패(비로그인 유저)
- 리뷰 삭제 실패(리뷰 작성자 불일치(작성자 user1))
리뷰 신고
- 리뷰 신고
- 리뷰 신고 실패(비로그인 유저)
- 리뷰 신고 실패(작성자가 신고)
- 리뷰 신고 실패(중복 데이터)
- 리뷰 신고 실패(신고 내용 빈칸)
- 리뷰 신고 실패(신고 카테고리 빈칸)
리뷰 좋아요
- 리뷰 좋아요
- 리뷰 좋아요 실패(비로그인 유저)
댓글 조회/작성
- 해당 리뷰의 댓글 조회 성공
- 댓글 작성 성공
- 로그인 안된 유저가 시도했을때 에러나오는지
- 댓글 작성 실패(댓글 내용이 빈칸)
댓글 수정
- 댓글 수정 성공
- 댓글 수정 실패(비로그인 유저)
- 댓글 수정 실패(댓글 수정 내용이 빈칸)
- 댓글 수정 실패(리뷰 작성자 불일치(작성자 user1))
댓글 삭제
- 댓글 삭제
- 댓글 삭제 실패(비로그인 유저)
- 댓글 삭제 실패(댓글 작성자(user1)와 삭제 유저(user2)불일치)
댓글 신고
- 댓글 신고
- 댓글 신고 실패(비로그인 계정)
- 댓글 신고 실패(작성자가 신고)
- 댓글 신고 실패(중복 데이터)
- 댓글 신고 실패(신고 내용 빈칸)
- 댓글 신고 실패(신고 카테고리 빈칸)
댓글 좋아요
- 댓글 좋아요
- 댓글 좋아요 실패(비로그인 계정)
대댓글 조회/작성
- 해당 댓글의 대댓글 조회 성공
- 대댓글 작성 성공
- 로그인 안된 유저가 시도했을때 에러나오는지
- 대댓글 작성 실패(대댓글 내용이 빈칸)
대댓글 수정
- 대댓글 수정
- 대댓글 수정 실패(비로그인 유저)
- 대댓글 수정 실패(댓글 수정내용이 빈칸)
- 대댓글 수정 실패(리뷰 작성자 불일치(작성자 user1))
대댓글 삭제
- 대댓글 삭제
- 대댓글 삭제 실패(비로그인 유저)
- 대댓글 삭제 실패(대댓글작성자(user1)와 삭제유저(user2)불일치)
대댓글 신고
- 대댓글 신고
- 대댓글 신고 실패(비로그인 유저)
- 대댓글 신고 실패(작성자가 신고)
- 대댓글 신고 실패(중복 데이터)
- 대댓글 신고 실패(신고 내용 빈칸)
- 대댓글 신고 실패(신고 카테고리 빈칸)
대댓글 좋아요
- 대댓글 좋아요
- 대댓글 좋아요 실패(비로그인 유저)
NOTIFICATION TEST CODE
알람 기능
- 알람 리스트 조회
- 알람 읽음 처리
🔗 Link
Front-end Repository
Notion 현황판 & 트러블 슈팅
배포 사이트
프로젝트 회고
Keep:
- Test코드를 모든 케이스가 포함될 수 있도록 세심하게 작성한 점
- 팀원들과 깃 컨벤션, 파이썬 코드 컨벤션을 지키며 작성하려 노력한 점
- 깃허브 이슈를 활용하려 노력했던 점
- 현황판을 활용하여 진행한 작업일정을 관리했던 점
- CI/CD를 구현하기 위해 진행하려 했던 점
Problem:
- 배포나 다른 팀원들의 코드를 아직 100%이해하지 못한 부분이 남아있다.
- 처음에 코드를 작성할 때 발생하는 문제점을 예상하지 못하여 나중에 문제가 발생한 후 코드를 고치는데 부담이 되어 개선하지 못한 문제가 남아있다. (사용자 추천서비스에서 GET으로 페이지네이션을 가져올 때 마다 머신러닝을 진행하는 코드를 수정하지 못한 점)
- 한 달간의 프로젝트를 마무리하였지만 아직 서비스는 보완할 점이 남아있다. 실제로 시중에 서비스되는 서비스들도 계속 보수/보완/개선작업이 이루어지기 때문에 100%완벽한 서비스는 거의 없을 것이라고 생각된다.
Try:
- 프로젝트가 완료되었지만 아직 부족한 부분이 많다. 코드를 다시보며 내재화하는 것이 필요하다.
- TIL을 살펴보며 지금껏 해왔던 프로젝트들을 다시 회고하고 내 것이 되도록 해야겠다.
Feel:
- 지나왔던 프로젝트들과 이번 프로젝트를 통해 회고해보면 정말 단기간에 많은 것을 해 볼 수 있었다고 생각된다. 책으로 혼자 익히기보다는 프로젝트를 통해 고민하고 찾아보면서 내재화할 수 있었던 면이 많았다. 또, 같이 진행해던 팀원들로부터 긍정적인 영향도 많이 받을 수 있었다.
- 이번 프로젝트에서 Django, DRF, Javascript 그리고 노력을 가장 많이 쏟았던 머신러닝과 웹 크롤링 부문에서 조금 더 성장할 수 있었던 것 같다. 아직 부족한 것은 사실이나, 앞으로의 허들을 넘기 위해 디딤돌이 되지 않았을까 싶다.
- TIL들을 하나씩 돌아보았는데 그 순간은 작성하는게 쉽지 않았지만, 지금 보면 정말 재미있는 일기장이 되어있다. 아쉬운 점, 부족한 점들을 지금은 되돌아볼 수 있는 시간이 되었다. 자주 들여다보고, 새로운 TIL들을 앞으로 써나가야 겠다.
- 앞으로도 프로젝트는 계속해나가야 한다. 정해진 시간 내에서 시간안배를 어떻게 계획하고 해나갈지 고민해봐야하지만, 지금 이제 연말이니 가장 적기이지 않을까 싶다.
- 마지막으로 프로젝트를 마무리하는데 도움을 준 모든 분들에게 정말 솔직한 감사의 말을 전달드리고 싶다. 한 분 한 분 서로를 배려하고 맡은 일에 성실히 진행해주셔서 프로젝트가 잘 마무리되었다고 생각한다.
'DEV > Web 개발' 카테고리의 다른 글
[TIL] Jira Software, Google Colab package setting (1) | 2023.09.01 |
---|---|
Web 개발 :: 12월 다섯째주 WIL18 (0) | 2022.12.29 |
Web개발 :: Code 기능 리뷰(검색), Deploy _TIL81 (1) | 2022.12.28 |
Web개발 :: Code Review _ Review CRUD 기능 _TIL80 (1) | 2022.12.28 |
Web개발 :: Code Review _ Place 추천 기능 _TIL79 (0) | 2022.12.28 |
댓글