서비스 정책 - LIMITED-TEAM25/wiki_repository GitHub Wiki
✅ Api - Gateway
- 토큰 검증
- 토큰 유효성 검사(만료시간, 토큰과 로그인한 사용자가 동일한지 체크
- 엑세스 토큰 만료시 화이트리스트에 저장된 Refresh Token 대조하여 유효하다면 auth-service의 토큰 재발급 메서드 호출
✅ Auth - Service
Access Token
- 토큰에 삽입될 데이터 : userId, username, role, 만료 시간
- 토큰 만료 시간 : 1일
Refresh Token
- 토큰에 삽입될 데이터 : userId, 만료 시간
- 토큰 만료 시간 : 7일
회원가입
- 요청시 user-service의 사용자 생성 기능 호출
- 사용자 생성 기능 호출시 보내야 할 데이터 : username, password(암호화된), gender, age, address, role
- 사용자 생성 기능에서 성공 응답과 함께 저장된 사용자 정보를 반환하고 해당 정보중 username, gender, age, address를 클라이언트에 반환
로그인
- 요청시 user-service의 username 기반 사용자 조회 기능 호출
- username기반 사용자 조회 기능 호출시 보내야 할 데이터 : username
- 받아온 사용자 정보와 클라이언트에게 받은 username, password(암호회된) 대조하여 로그인 성공 여부 확인
- 로그인 성공시 생성한 두개의 토큰을 각각 Body에 Access Token, Cookie에 Refresh Token 담아서 반환
- 생성된 Refresh Token을 화이트리스트에 저장하여 추후 Refresh Token 검증시 사용
로그아웃
- 커스텀 헤더로 받아온 Access Token과 Refresh Token을 블랙리스트에 저장
- 화이트리스트에 저장된 Refresh Token 무력화
토큰 재발급
- 사용자의 Access Toeken 만료시 Gateway 측에서 요청 송신
- 해당 요청 수신시 동작
- 헤더로 받은 refresh Token을 블랙리스트 등록
- userId 기반 사용자 조회 요청.
- 받아온 사용자 정보에서 userId, username, role 값을 사용하여 Access Token 발급
- 받아온 사용자 정보에서 userId 값을 사용하여 Refresh Token 발급
✅ User - Service
auth-service에서 사용자 생성 요청
- 사용자 생성에 필요한 데이터를 auth-service로부터 받아서 사용자 생성 후 성공 응답 반환
- 필요한 데이터 : username, password(암호화된), gender, age, address, role
- 생성한 유저의 데이터 중 username, gender, age, address를 auth-service로 반환
본인 조회
- 본인 조회시 X-User-Id 헤더로 받은 userId를 기반으로 본인 조회 후 응답 반환
타 서비스에서 사용자 정보 요청
- 타 서비스에서 사용자 정보 조회 요청 수신시 사용자의 비밀번호를 제외한 데이터 반환
- userId 기반 조회 요청 : 주로 내부 마이크로 서비스에서 요청
- username 기반 조회 요청 : 비로그인 사용자도 사용할 수 있는 서비스에서 요청 ex) auth-service
✅ Order - Service
- 한정수량 이벤트 및 경매 이벤트에서 주문이 들어온 경우 받은 정보에서 userId를 통해 사용자의 주소를 가져와서 사용합니다.
- 주문 생성 api는 각 이벤트에서 사용하는 Internal 전용 api입니다.
✅ Product - Service
- 상품이 수정된 경우 한정수량 상품, 경매 상품, 체험 상품도 함께 수정되어야함.
- 상품의 재고는 상품에서 관리하지 않고, 각 이벤트에서 관리함.
✅ Limited - Service
- 한정수량 상품관련 정책
- 한정수량 상품의 재고가 남지 않은 경우 들어오는 요청은 실패 응답 반환.
- 일반 상품의 정보가 수정된 경우, 한정수량 상품의 정보도 함께 수정되어야함.
- 한정수량 상품 재고의 경우 0보다 작아질 수 없음.
- 한정수량 이벤트 관련 정책
- 한정수량 이벤트 단건 조회의 경우 해당 이벤트 정보와 연관된 한정수량 상품의 정보가 함께 응답되어야함.
- 한정수량 이벤트의 상태값은 (PENDING,ACTIVE,CLOSED) 중 하나만 가능.
- 한정수량 이벤트 기간내의 요청은 예외처리 해야함.
- 다른 서비스와의 소통시 정책
- 주문 서비스로 값을 넘겨줄때 한정수량 상품 ID가 아닌, 상품 ID를 보내주어야함.
✅ Action - Service
- 경매 이벤트 관련 정책
- 사용자는 다른 사용자의 입찰가를 알 수 없는 블라인드 경매 형식으로 진행됩니다.
- 입찰 제한 상황
- 시작 입찰가 보다 작은 금액을 입력한 경우 실패 응답이 반환됩니다.
- 경매 진행 시간 외 입찰을 시도한 경우 실패 응답이 반환됩니다.
- 경매 이벤트 단건 조회의 경우 해당 경매 이벤트의 정보와 연관된 경매 상품 정보가 함께 응답되어야 합니다.
- 경매 상품 관련 정책
- 일반 상품의 정보가 수정된 경우, 경매 상품의 정보도 함께 수정되어야 합니다.- [ ] 제한된 시간 내에 가장 높은 가격을 입찰한 회원이 해당 경매 상품의 구매가 가능합니다.
- 경매 상품 재고의 경우 1이고, 경매가 낙찰되어 낙찰자의 주문 생성이 이루어지면 재고는 0으로 변경되어야 합니다.
- 다른 서비스와의 소통 시 정책
- 주문생성을 위해 주문 서비스에 값을 넘겨줄 때 경매 상품 ID가 아닌, 상품 ID를 보내주어야 합니다.
✅ Preuser - Service
체험단 선정
- 제한된 시간 내에 지원 자격을 충족한 응모 인원 중 랜덤으로 선정
체험단 신청
- 인원 제한
- 회원의 성별 데이터를 기준으로 지원 자격 제한
- 회원의 나이를 기준으로 지원 자격 제한
- 회원의 정보는 userId를 기준으로 user-service에 요청을 보내 정보 확인
- 체험단 등록 시 체험단 상태 RECRUITING , 마감 시 CLOSED, 예정은 PLANED
체험단 상품 등록
- 체험단 상품 등록 시 product-service에 상품에 대한 정보 조회 요청 후 등록
✅ Coupon-Service
쿠폰 정책
- 관리자가 쿠폰 생성시 동일한 쿠폰이름은 사용할 수 없음.
- 사용자가 발급 받은 쿠폰의 상태가 사용 완료 -> 사용 전으로 변경될 수 없음.
쿠폰 사용자 정책
- 쿠폰의 재고가 없는 경우 쿠폰 발급 요청은 실패 응답 반환.
- 사용자가 쿠폰 중복 발급 요청시 실패 처리.
- 사용완료 쿠폰의 사용 요청시 예외처리 반환.
- 쿠폰의 상태가 Close인 경우 사용자는 해당 쿠폰에 대해 사용 불가.
- 쿠폰이 삭제된 경우 사용자는 해당 쿠폰에 대해 조회 및 사용 불가.