서비스 정책 - 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

체험단 선정

  • 제한된 시간 내에 지원 자격을 충족한 응모 인원 중 랜덤으로 선정

체험단 신청

  • 인원 제한
    • 응모 인원 제한 X
    • 선발 인원 제한 O
  • 회원의 성별 데이터를 기준으로 지원 자격 제한
  • 회원의 나이를 기준으로 지원 자격 제한
  • 회원의 정보는 userId를 기준으로 user-service에 요청을 보내 정보 확인
  • 체험단 등록 시 체험단 상태 RECRUITING , 마감 시 CLOSED, 예정은 PLANED

체험단 상품 등록

  • 체험단 상품 등록 시 product-service에 상품에 대한 정보 조회 요청 후 등록

✅ Coupon-Service

쿠폰 정책

  • 관리자가 쿠폰 생성시 동일한 쿠폰이름은 사용할 수 없음.
  • 사용자가 발급 받은 쿠폰의 상태가 사용 완료 -> 사용 전으로 변경될 수 없음.

쿠폰 사용자 정책

  • 쿠폰의 재고가 없는 경우 쿠폰 발급 요청은 실패 응답 반환.
  • 사용자가 쿠폰 중복 발급 요청시 실패 처리.
  • 사용완료 쿠폰의 사용 요청시 예외처리 반환.
  • 쿠폰의 상태가 Close인 경우 사용자는 해당 쿠폰에 대해 사용 불가.
  • 쿠폰이 삭제된 경우 사용자는 해당 쿠폰에 대해 조회 및 사용 불가.