/dg-cinema-scenario

DevGraft 시네마 플랫폼 개발 시나리오 입니다.

Primary LanguageJavaApache License 2.0Apache-2.0

DEV-GRAFT Cinema

DEV-GRAFT가 영화관 운영을 시작했습니다!
그리고 우리 DG-MOVIE.Team은 영화관 서비스에 필요한 영화 예매 플랫폼을 개발해야합니다!

🎭 시나리오

🤗 사용자 인증

UseCase Desc
회원가입 사용자는 회원가입 절차를 거쳐 계정을 동록합니다.
로그인 가입한 사용자는 아이디와 패스워드를 사용해 로그인을 할 수 있습니다.

🎥 영화 조회

UseCase Desc
영화 목록 조회 사용자는 영화 목록을 조회할 수 있습니다.
영화 상세 조회 사용자는 영화의 상세 정보를 조회할 수 있습니다.

🎟 예매

UseCase Desc
예매 차트 목록 조회 사용자는 예매 가능한 영화 목록을 조회할 수 있습니다.
상영관 목록 조회 사용자는 상영관 목록을 조회할 수 있습니다.
상영 목록 조회 사용자는 [영화, 상영 시작 일자,상영 정료 일자, 상영관] 기준으로 상영 목록을 조회할 수 있습니다.
좌석 정보 조회 사용자는 [상영 정보] 기준으로 상영관의 좌석 정보를 조회할 수 있습니다.
예매 신청 사용자는 [상영 정보, 좌석 정보]를 기준으로 예매 신청할 수 있습니다.
예매 취소 사용자는 [예매 정보]를 기준으로 예매를 취소할 수 있습니다.
사용자 예매 정보 조회 사용자는 예매한 정보를 조회할 수 있습니다.
사용자 예매 내역 목록 조회 사용자는 예매내역 목록을 조회할 수 있습니다.
상영 영화 예매율 목록 조회 사용자는 상영 중인 영화의 예매율 목록을 내림차순으로 조회할 수 있습니다.

💵 결제

UseCase Desc
결제 요청 사용자는 결제를 요청할 수 있습니다.
결제 정보 확인 사용자는 결제 정보를 확인할 수 있습니다.

💬 Comment

📚 전제 조건

  • 영화, 상영관, 좌석 정보는 주어진 정보가 있다고 전제합니다!
  • 테이블 및 기본데이터 셋 제공을 위해 .sql 파일을 제공하였습니다.
  • 시나리오의 학습 목표는 외부 모듈 연동이 아니므로 실제 외부 결제 모듈을 연동하지 않습니다!
  • 결제 모듈(가짜!) 인터페이스와 구현체를 제공하였습니다.

⛳ Goals

  • ✅ 결제 과정에 내가 선택한 좌석을 다른 사용자가 예매할 수 없도록 제한할 수 있어야합니다.
  • ✅ 결제가 완료된 예매 정보를 예매율에 반영할 수 있어야합니다.
  • ✅ 대규모 트래픽을 고려하여 예매율을 실시간으로 보여줄 수 있어야합니다.
  • ✅ 요구사항을 모두 지키고자 노력해봅니다.

예매 관련 정보

  • 상영 직전까지(1분 전) 예매가 가능해야합니다.
  • 조회시간 기준으로 상영된지 2시간이상 지난 예매 데이터를 실시간 집계하여 예매율 정보로 제공합니다.
예매율 산출기준 = A(예매관객수) / B(전체 예매 관객수) * 100
- 예매 관객수(A) : 조회 시점 특정 영화의 상영이 2시간이상 지난 발권 데이터
- 전체 예매 관객수 (B) 조회 시점 모든 영화의 상영이 2시간 이상 지난 발권 데이터
- 상영 시작시간을 기준으로 2시간 이내의 발권 데이터는 집계 대상에서 제외됩니다.

Spec

📄 Schema

image

🎈 EventStorming

Image

BorisDiagram

Package 구조

프로젝트 구성

Name Version
Spring Boot 2.7.3
Java 17
Gradle 7.5

개발환경

Name Desc
DB H2