Skip to content

leesj8116/dg-cinema-backend

Repository files navigation

DG Cinema

DEV-GRAFT가 영화관 운영을 시작했습니다.
그리고 우리 DG-MOVIE.Team은 영화관 서비스에 필요한 영화 예매 플랫폼을 개발해야합니다.
사용자는 원하는 영화를 선택하고 가까운 영화관에서 상영 중인 시간대를 확인한 후 좌석을 선택하여 예매를 완료할 수 있는 서비스를 개발합니다.
결제가 완료된 사용자는 예매 내역을 확인할 수 있으며, 영화 시작 전까지 예매를 취소할 수 있습니다.
서비스는 초기 영화, 상영관, 좌석 데이터가 미리 등록되어 있는 상태에서 시작됩니다.

⛳ Goals

✅ 사용자는 원하는 영화를 검색하고, 상영 시간표와 좌석 정보를 확인할 수 있어야 합니다.
✅ 사용자는 좌석을 선택하고, 결제 및 예매를 완료할 수 있어야 합니다.
✅ 사용자는 예매 내역을 조회하고, 예매를 취소할 수 있어야 합니다.

🎭 시나리오

Case-1

사용자 A는 주말에 "모아나 2" 영화를 보려 합니다.  
A는 가장 가까운 영화관 "건대 영화관"에서 상영 중인 시간표를 확인하고, "2024년 12월1일(일)" "12시 30분" 상영을 선택합니다.  
상영관은 "8층 3관"이며, "E-8 좌석"을 선택합니다.  
좌석이 예약 가능하여 예매를 신청 후 결제를 진행하고, 성공적으로 예매를 완료합니다.  
결제 완료 후, A는 예매 내역을 확인하여 자신이 예약한 정보가 정확한지 검토합니다.  

Case-2

사용자 B는 예매한 영화를 취소하려 합니다.  
B는 예매 내역에서 예약한 영화를 확인하고, 취소 요청을 진행합니다.  
취소 요청이 성공적으로 처리되어 예약 내역에서 삭제됩니다.

📚 전제 조건

  • 🍀 사용자 계정이 존재해야 합니다.
    • 회원가입과 로그인 기능은 구현된 상태로 가정합니다.
  • 🍀 영화 데이터는 초기 설정으로 제공됩니다.
    • 영화, 상영관, 상영 시간표, 좌석 정보는 서비스 시작 시 미리 정의된 상태입니다.
  • 🍀 결제 API는 가상으로 동작한다고 가정하며, 결제 성공 또는 실패 응답만 제공합니다.
  • 🍀 예매와 상태 관리, 좌석 관리가 핵심이므로 시나리오 전체에 금액적인 부분은 제외합니다.

정책

♟️ Stage 1: 기본 기능

영화 탐색

  • 사용자는 영화 목록을 검색할 수 있어야 합니다.
  • 상영 직전까지(1분 전) 영화 목록을 검색할 수 있어야 합니다.
  • 사용자는 영화관별 상영 시간표를 확인할 수 있어야 합니다.
  • 사용자는 상영 시간대별로 예약 가능한 좌석을 조회할 수 있어야 합니다.

예매

  • 사용자는 좌석을 선택하고 결제를 완료할 수 있어야 합니다.
  • 사용자는 결제 후 예매 내역을 조회할 수 있어야 합니다.
  • 상영 직전까지(1분 전) 예매가 가능해야 합니다.

예매 취소

  • 사용자는 결제가 완료된 예매표를 취소할 수 있어야합니다.
  • 예매 후 5분 이내에 결제가 진행되지 않을 경우 예매는 취소되어야 합니다.
  • 예매표는 상영 시간 10분 전 까지 결제를 취소할 수 있어야 합니다.

♟️ Stage 2: 추가 기능

리뷰 기능

  • 사용자는 관람한 영화에 대해 리뷰를 작성할 수 있어야 합니다.

선호 영화관 설정

  • 사용자가 자주 가는 영화관을 설정하여 기본 검색 결과로 표시합니다.

♟️ Stage 3: 고급 기능

예매

  • 결제 과정에 내가 선택한 좌석을 다른 사용자가 예매할 수 없도록 제한할 수 있어야 합니다.
  • 좌석 예매 요청 완료 후 결제 전 까지 다른 사용자에게 예매 완료로 표시합니다.
  • 좌석 예매 요청 시 다른 고객이 먼저 요청이 완료되어 결제 단계로 진행 되었을 경우 해당 요청은 실패합니다.

알림 기능

  • 예매 완료 시 성공 알림을 제공합니다.
  • 영화 시작 1시간 전에 알림을 제공합니다.

About

dev-graft 활동 시작을 위한 컨벤션 조율 및 테스트

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages