-
모든 도메인을 기준으로 아래의 기준이 충족 되어야 합니다.
- [ ] 모든 도메인은 CRUD 와 Search 가 구현 되어야 합니다.
- [x] 서치에는 검색조건 및 정렬기능이 추가되어 있어야 합니다.
- [x] 정렬기능은 기본적으로 생성일순, 수정일순을 기준으로 합니다.
- [x] 서치 기능에는 10건, 30건, 50건 기준으로 페이지에 노출 될 수 있습니다. 이외의 건수는 제한하여 기본 10건씩으로 고정합니다.
- [ ] 모든 도메인의 컨트롤러 끝단은 접근 권한 및 로그인 체크가 진행되어야 합니다.
- [ ] 접근 권한이 관리자, 가게주인, 구매자에 맞춰 동작해야 함을 주의 합니다.
- 각 도메인 수정에서 수정할 수 있는 필드 또한 관리자, 가게주인, 구매자에 맞춰 동작해야 함을 주의 합니다. 예를들어 주문에서 주문 상태는 구매자가 수정 할 수 없어야 할것입니다.
- 도메인이 총 몇개가 필요할까요? 힌트입니다. 우리는 사용자, 가게, 상품, 주문, 결제 등의 테이블이 필요합니다. 테이블을 기준으로 도메인을 생성하면 되겠죠?
-
사용자 인증 기능
- [ ] 회원가입
- [x] 유저의 이름, 패스워드를 전달 받아 회원가입을 진행합니다.
- [x] username은
최소 4자 이상, 10자 이하이며 알파벳 소문자(a~z), 숫자(0~9)로 구성
- [x] password는
최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9), 특수문자
- [ ] 사용자 권한 (
CUSTOMER, OWNER, MANAGER, MASTER)도 필요합니다.
- [ ] 로그인 기능
- [x] 유저 아이디와 패스워드를 입력받아 로그인을 진행합니다.
- [x] 로그인 성공 시, 로그인에 성공한 유저의 정보와 JWT를 활용하여 토큰을 발급합니다.
- [x] 발급한 토큰을 사용하여 사용자 정보를 조회 해봅니다.
-
AI API 연동하기
-
[x] https://aistudio.google.com/ 에 들어가서 API 키를 발급 받습니다.
-
[x] API 테스터를 통해 확인해봅니다.
-
[x] 실제 코드를 구현하고 응답의 문장만 DB에 저장합니다.
-
만약 실제 google cloud에 결제가 연동되어있다면 잦은요청으로 실제 비용이 발생할 수 있으니 주의합니다!
-
[ ] 입력 텍스트의 글자수를 제한합니다. 또한 실제 요청 텍스트 마지막에 “답변을 최대한 간결하게 50자 이하로” 라는 텍스트를 요청시에 삽입하여 사용량을 줄이는 처리를 추가합니다.
-
클라우드에 서비스 배포해보기
- [ ] aws 또는 Oracle cloud의 프리티어를 사용해 해당 애플리케이션을 배포해 봅니다.
- 배포 방법은 자유입니다. 파일을 업로드하여 배포해도 되고 도커를 사용하여 배포해도 됩니다.
- 실제 업무에서도 환경에 맞춰 배포작업을 하기 때문에 수동적인 방법을 학습하는것도 의미가 있습니다.
-
Spring Security (권한 부여 혹은 고도화)
- [ ] 가게 추가 시 “관리자” 권한의 유저만 가게를 추가할 수 있도록 설정하세요.
-
리뷰 및 평점 기능
- [x] 주문을 통해 가게의 리뷰 및 평점을 저장합니다.
- [ ] 주문 검색 조회 시 음식점 고유값을 통해 호출하면 리뷰 리스트를 볼 수 있습니다.
- [x] 평점은 1 - 5점으로 계산합니다.
- [ ] 가게 목록을 조회시 평점을 노출하려면 어떻게 구현해야 할지 고민해봅니다(가게 목록을 호출시에 평점을 계산하면 n+1 문제가 발생할 수 있습니다.)
<aside>
📈 도전 기능 : 경쟁력있는 포트폴리오 쌓으러 오신 분들이니, 당연히 하시겠죠?😎
</aside>
- API 문서화
- [ ] Swagger, RestDoc 등을 사용하여 구현한 API 들을 문서화 해보세요.
- [ ] 전체 API 중 몇개 API 에 대한 명세를 작성하였는지 확인합니다.
- 테스트 코드 작성
- [ ] 각 도메인에서 주요 API 최소 1개에 대해 통합 테스트 코드를 작성해보세요.
- [ ] 주요 API에 대한 성공 테스트를 작성해보세요.
- [ ] 주요 API에 대한 실패 테스트를 작성해보세요. (다양할 수록 좋습니다! 👍)
- QueryDSL 구현하기
- [ ] QueryDSL 을 사용하여 지점 검색 시 카테고리, 지점 이름이 복합적으로 필터되어 노출되게 해주세요.
- [ ] 쿼리 파라미터로 카테고리만 입력되면 해당 카테고리의 모든 지점이 노출되도록 구성하세요.
- [ ] 카테고리와 지점 이름이 입력되면 해당 카테고리에 포함되어있으며, 검색한 지점 이름을 포함하는 지점들이 노출되도록 구성하세요.
1) 산출물
- 기획
- 설계
- ERD
- 아키텍쳐 설계도(옵션)
- 시퀀스 다이어그램(옵션)
- Flow Chart(옵션)
- 개발
- 배포
2) 발표 내용
- 프로젝트 개요 & 목표
- 팀 구성 및 역할
- 프로젝트 진행 프로세스(어떻게 협업하고 있는지)