Skip to content

Files

Latest commit

67a6f61 · Apr 6, 2025

History

History
138 lines (98 loc) · 5.5 KB

01.Requirements.md

File metadata and controls

138 lines (98 loc) · 5.5 KB

E-커머스 서비스 요구사항 분석

📚 문서 목록


요약 (Summary)

다음은 E-커머스 전반적인 기능에 대한 내용을 포함하고 있다.

사용자는 잔액을 충전하거나 조회할 수 있으며, 선착순으로 제공되는 쿠폰을 발급받아 보유 쿠폰 목록을 확인할 수 있다.

사용자는 상위 상품 Top5, 상품 목록을 조회할 수 있다. 해당 상품 중 1개 혹은 여러 개의 상품을 골라 주문이 가능하다.

주문/결제 시에는, 사용자의 충전한 잔액과 쿠폰(주문 금액에 대한 할인)을 사용할 수 있다. 주문/결제 완료 시에는 외부 데이터 플랫폼으로 데이터가 전송되어야 한다.

요구사항 (Requirements)

잔고 (Balance)

✅ 기능적 요구사항

[잔액 조회]

  • 사용자는 유효해야한다. (사용자 검증)
  • 잔액이 없다면, 0을 반환한다. (empty의 개념으로 반환)
  • 잔액을 조회한다.

[잔액 충전]

  • 사용자는 유효해야한다. (사용자 검증)
  • 충전 금액은 0보다 큰 양수여야 한다. (자연수)
  • 잔고 정보가 존재하지 않으면, 새로 생성 후 충전 금액을 저장한다.
  • 잔고가 이미 존재하면, 기존 금액에 충전 금액을 더하여 업데이트한다.
  • 충전한 금액이 최대 잔액 1,000만원을 넘기면 안된다.
  • 잔액을 충전한다.
  • 잔액 충전이 완료되면 잔고 이력 테이블에 저장한다. (거래 타입, 거래 금액 - 충전, 사용)

☑️ 비기능적 요구사항

  • 동시에 충전 시, 최대금액을 초과하지 않게 동시성이 보장되어야 한다. (동시성 제어)

상품 (Product)

✅ 기능적 요구사항

[상품 조회]

  • 상품 정보 (상품 ID, 상품이름, 상품가격, 재고 수) 목록을 조회한다.
  • 조회 시, 가져오는 재고 수는 재고 테이블에서 가져온다.
  • 조회 시, 판매가능 상태의 상품만 조회된다.

☑️ 비기능적 요구사항

  • 조회 시점에, 상품별 재고수량은 정확하면 좋다. (동시성 제어, 캐싱 주의)

쿠폰 (Coupon)

✅ 기능적 요구사항

[보유 쿠폰 목록 조회]

  • 사용자는 유효해야한다. (사용자 검증)
  • 쿠폰 정보 (ID, 쿠폰이름, 할인율, 만료기간) 목록을 조회한다.
  • 이때, 사용가능한 쿠폰 정보를 조회해야 한다.

[선착순 쿠폰 발급]

  • 사용자는 유효해야한다. (사용자 검증)
  • 쿠폰이 존재해야 한다. (쿠폰 검증)
  • 이미 발급 받은 쿠폰인지 검증 한다. (쿠폰 중복 발급 검증)
  • 쿠폰은 발급 가능한 상태이여야 한다. (쿠폰 상태 검증)
  • 쿠폰 발급 가능한 수량이 있어야 한다. (쿠폰 수량 검증)
  • 현재 일자가 쿠폰 만료일자 이전이여야 한다. (쿠폰 만료 검증)
  • 사용자 식별자와 쿠폰 식별자를 받아 선착순 쿠폰을 발급하여 저장한다.

☑️ 비기능적 요구사항

  • 쿠폰 발급 시, 동시성이 보장되어야 한다. (공정모드 - 순서보장)

주문 및 결제 (Order)

✅ 기능적 요구사항

[주문 생성]

  • 사용자는 유효해야한다. (사용자 검증)
  • 상품 목록에 대한 상품 식별자에 대해서 상품이 존재하는지 검증한다. (상품 검증)
  • 쿠폰 ID 존재 시, 쿠폰이 사용 가능한지 검증한다.
  • 주문 총 금액을 계산한다.
  • 주문을 생성한다.
  • 주문상품을 생성한다.

[결제 완료]

  • 주문 총 금액 잔고가 충분한지 검증한다.
  • 잔고를 차감한다.
  • 쿠폰 ID 존재 시, 쿠폰을 사용한다.
  • 구매하려고 하는 수량 보다 큰 재고가 존재하는지 검증한다. (상품 재고 검증)
  • 상품 재고를 차감한다.
  • 결제 완료 처리한다.

[외부 플랫폼 주문 전송]

  • 주문/결제 완료 시, 외부 데이터 플랫폼으로 주문을 전송한다.

☑️ 비기능적 요구사항

  • 주문/결제 실패 시, 트랜잭션 보장이 필요하다.
  • 외부 데이터 플랫폼 주문 정보 전송은 Mock 처리 한다.
  • 재고 관리 및 잔액 차감, 쿠폰 사용이 정상적이도록 동시성 보장이 필요하다.

상품 통계 (ProductRank)

✅ 기능적 요구사항

  • 주문 및 결제가 완료된 최근 3일간 가장 많이 팔린 상위 5개 상품 정보 목록을 조회한다.
  • 일 배치를 통한 집계성 데이터 저장

☑️ 비기능적 요구사항

  • 배치 스케줄러를 통한 주문상품 통계
  • 성능으로 인한 캐싱 고려 필요 (실시간 성 데이터가 아니기 때문에)