요구사항 명세 - f-lab-edu/jshop GitHub Wiki

회원가입

  • 회원은 일반회원, 판매회원으로 나뉨
  • 일반회원가입에는 이메일, 이름, 비밀번호가 필요함
  • 판매회원의 회원가입도 동일함
  • 중복 이메일은 가입 불가
  • 이메일 검증 로직은 고려중

로그인

  • 회원은 자신의 이메일과 비밀번호를 사용해 로그인할 수 있다.
  • jwt를 사용해 사용자 인가
  • refresh token은 고려중

일반회원

  • 회원은 자신의 정보를 변경할 수 있음
  • 회원은 각자 잔고를 갖는다.
  • 회원은 잔고에 돈을 넣고 뺄 수 있다.
  • 회원은 자신의 장바구니를 확인할 수 있다.
  • 회원은 자신의 주문을 조회할 수 있다.

판매회원

  • 판매회원은 삼품을 등록할 수 있다.
  • 판매자는 자신의 상품을 등록취소할 수 있다.
  • 판매자는 자신의 상품정보를 변경할 수 있다.

장바구니

  • 장바구니의 상품을 선택해 장바구니에서 제거할 수 있다.
  • 장바구니의 상품을 선택해 주문할 수 있다.
  • 주문한 상품은 장바구니에서 제거된다.

상품검색

  • 모든 사용자는 (회원이 아니더라도) 상품을 검색할 수 있다.
  • 검색한 상품은 카테고리별로 필터링할 수 있다.
  • 검색한 상품은 속성별로 필터링할 수 있다.
  • 검색한 상품은 정렬을 수행할 수 있다.

상품

  • 상품은 이름, 가격등 정보를 갖는다.
  • 상품은 속성을 갖는다.
  • 상품은 하나 이상의 상세상품으로 이루어진다.
  • 상세상품은 상품에서 속성정보가 선택된 상태를 말한다 (ex 검은색, 42인치 정보등을 선택한 실제 상품단위)

주문

  • 장바구니나, 상품 상세페이지에서 주문을 할 수 있다.
  • 가격이 잔고보다 크면 주문이 불가능하다.
  • 주문 수량이 재고수량보다 적어야 주문이 가능하다.
  • 회원은 자신의 주문을 조회할 수 있다.
  • 회원은 자신의 주문을 취소할 수 있다.

배송

  • 배송은 준비, 배송, 완료 단계를 갖는다.

카테고리

  • 상품은 하나의 카테고리를 갖는다.
  • 카테고리는 여러 depth로 구성되어 있으며, 하나의 카테고리 아래에 여러개의 카테고리가 있을 수 있음
  • 카테고리를 통해 조회가 가능하다.

상품문의, 상품평

  • 회원은 상품 문의를 남길 수 있다
  • 회원은 상품 평을 남길 수 있다.