- 회원에게 발급하는 쿠폰의 이름, 할인 금액, 최소 주문 금액 등 쿠폰의 설정에 해당하는 내용을 관리한다. 다음과 같은 제약사항을 갖는다.
- 이름
- 이름은 반드시 존재해야 한다. ✅
- 이름의 길이는 최대 30자 이하여야 한다. ✅
- 할인 금액
- 할인 금액 제약
- 할인 금액은 1,000원 이상이어야 한다. ✅
- 할인 금액은 10,000원 이하여야 한다. ✅
- 할인 금액은 500원 단위로 설정할 수 있다. ✅
- 할인율 제약
- 할인율은 할인금액 / 최소 주문 금액 식을 사용하여 계산하며, 소수점은 버림 한다.
- 예를 들어, 최소 주문 금액이 30,000원일 때 할인 금액이 1,000원이라면 쿠폰의 할인율은 3%(1000 / 30000 = 3.333...%)가 된다.
- 할인율은 3% 이상이어야 한다. ✅
- 할인율은 20% 이하여야 한다. ✅
- 할인율은 할인금액 / 최소 주문 금액 식을 사용하여 계산하며, 소수점은 버림 한다.
- 할인 금액 제약
- 최소 주문 금액
- 최소 주문 금액은 5,000원 이상이어야 한다. ✅
- 최소 주문 금액은 100,000원 이하여야 한다. ✅
- 카테고리
- 서비스의 카테고리는 다음과 같이 네 종류가 있고, 이 중 하나의 카테고리만 선택할 수 있다. ✅
- 패션
- 가전
- 가구
- 식품
- 서비스의 카테고리는 다음과 같이 네 종류가 있고, 이 중 하나의 카테고리만 선택할 수 있다. ✅
- 발급 기간
- 시작일은 종료일보다 이전이어야 한다. 시작일과 종료일이 같다면, 해당 일에만 발급할 수 있는 쿠폰이 된다. ✅
- 시작일 00:00:00.000000 부터 발급할 수 있다.
- 종료일 23:59:59.999999 까지 발급할 수 있다.
- 시작일은 종료일보다 이전이어야 한다. 시작일과 종료일이 같다면, 해당 일에만 발급할 수 있는 쿠폰이 된다. ✅
- 이름
- 회원에게 발급된 쿠폰 한 장을 관리한다. 다음 정보를 포함한다.
- 회원 쿠폰 PK
- 쿠폰 PK
- 회원 PK
- 사용 여부
- 발급 일시
- 만료 일시
- 회원에게 발급된 쿠폰은 발급일 포함 7일 동안 사용 가능하다. 만료 일의 23:59:59.999999 까지 사용할 수 있다.
- 쿠폰 생성, 조회 기능 구현
- 조회 기능은 부하 분산을 위해 reader DB의 데이터를 조회
- 복제 지연으로 인한 이슈 확인
- 쿠폰을 생성한 후 즉시 조회했을 때 복제 지연으로 인해 데이터 조회에 실패하는 이슈를 확인(테스트 코드)
- 복제 지연으로 인한 이슈 해결
- 쿠폰을 생성했을 때, 의도한 대로 쿠폰이 생성됐는지 검증하도록 수정(리뷰어가 이해할 수 있도록 설명)
- 회원에게 쿠폰을 발급하는 기능 구현
- 한 명의 회원은 동일한 쿠폰을 사용한 쿠폰을 포함하여 최대 5장까지 발급할 수 있다.
- 회원의 쿠폰 목록 조회 기능 구현
- 두 테이블을 조인할 수 없다.
- 회원의 쿠폰 목록 조회 시 쿠폰, 회원에게 발급된 쿠폰의 정보를 모두 보여줄 수 있어야 한다.