기능 명세

예약 결제

  • 사용자는 방탈출 예약 생성 시, 토스 결제를 할 수 있다.

예약 대기

  • 사용자는 예약이 존재하는 날짜, 테마, 시간에 대해 예약 대기를 생성할 수 있다.
    • 사용자가 같은 날짜, 테마, 시간에 대해 이미 대기를 생성했을 경우 중복 생성 불가
    • 지나간 시간에 대한 예약 대기 생성 불가
    • 자신이 예약한 날짜, 테마, 시간에 대한 대기 생성 불가
    • 예약이 존재하지 않는 날짜, 테마, 시간에 대해 대기 생성 불가
  • 사용자는 예약 대기를 자신이 생성한 대기를 삭제할 수 있다.
  • 관리자는 예약 대기를 거절할 수 있다. (거절된 대기는 나의 예약 목록에서 확인 가능)
  • 관리자가 예약 삭제 시 자동으로 우선순위가 가장 높은 대기를 승인한다.

예약 시간

  • 관리자는 예약 시간을 추가 및 삭제할 수 있다.
  • 관리자와 사용자는 모든 예약 시간을 조회할 수 있다.
  • 예약 시간은 00:00부터 23:59까지 추가할 수 있다.
  • 중복되는 예약 시간은 추가할 수 없다.
  • 하나 이상의 예약에서 사용되는 예약 시간은 삭제할 수 없다.

예약

  • 관리자와 사용자는 예약을 추가할 수 있다.
  • 관리자는 예약을 삭제할 수 있다.
  • 관리자는 모든 예약을 조회할 수 있다.
  • 예약 생성 시 예약자명, 날짜, 시간, 테마를 지정해야만 한다.
  • 날짜, 시간, 테마가 중복되는 경우 예약을 추가할 수 없다.
  • 지나간 날짜와 시간에 대한 예약 생성은 불가능하다.
  • 관리자는 날짜, 테마, 예약자 조건으로 필터링된 예약 목록을 조회할 수 있다.
  • 나의 예약을 조회할 수 있다.
    • 예약 조회 시 예약 대기 목록도 함께 포함하여 조회

테마

  • 관리자는 테마를 추가 및 삭제할 수 있다.
  • 관리자와 사용자는 모든 테마를 조회할 수 있다.
  • 하나 이상의 예약에서 사용되는 테마는 삭제할 수 없다.
  • 중복된 이름의 테마는 추가할 수 없다.

인기 테마 출력

  • 인기 테마 : 최근 일주일 기준으로 하여 예약이 많은 순으로 정렬했을 떄, 상위 10개 테마
  • 메인 페이지에 접속하면, 인기 테마를 보여준다.
  • 인기 테마가 10개 이내면, 인기 테마가 아닌 테마도 화면에 표시된다.

사용자 로그인 기능

  • 사용자 도메인을 추가한다.
    • name: 사용자 이름
    • email: 이메일
    • password: 비밀번호
  • email(id), password로 로그인 기능을 구현한다.
  • 로그인 후 Cookie를 이용하여 사용자의 정보를 조회하는 API를 구현한다.