Skip to content

woowacourse/jwp-refactoring

 
 

Repository files navigation

키친포스

요구 사항

상품 (Product)

  • 상품 생성

    • 이름과 가격을 입력받아 생성한다.
    • 가격은 음수일 수 없다.
  • 상품 전체 조회

    • 전체 상품을 조회한다.

메뉴 그룹 (MenuGroup)

  • 메뉴 그룹 생성

    • 이름을 입력받아 생성한다.
  • 메뉴 그룹 전체 조회

    • 전체 메뉴 그룹을 조회한다.

메뉴 (Menu)

  • 메뉴 생성

    • 이름, 가격, 메뉴 그룹id, 메뉴 상품들(상품id, 수량)을 입력받아 생성한다.
    • 메뉴의 가격은 필수 정보이다.
    • 메뉴의 가격은 0원 이상 이다.
    • 메뉴는 메뉴 그룹에 속해야한다.
    • 메뉴의 상품들은 이미 등록된 상품이어야한다.
    • 가격은 (상품 가격 * 수량)의 총 합보다 작거나 같아야한다.
  • 메뉴 전체 조회

    • 전체 메뉴를 조회한다.

주문 (Order)

  • 주문 생성

    • 주문 테이블 id, 주문 항목(메뉴 id, 수량) 리스트를 입력받아 생성한다.
    • 주문 항목은 비어있으면 안된다.
    • 주문 항목의 메뉴들은 모두 이미 등록된 메뉴여야한다.
    • 주문 항목에 중복된 메뉴가 포함될 수 없다.
    • 이미 등록된 주문 테이블이어야한다.
    • 주문 테이블이 비어있으면 안된다.
    • 주문의 최초 상태를 조리중(COOKING)으로 설정한다.
    • 메뉴 정보가 변경되더라도 주문 항목이 변경되지 않게 구현한다.
  • 주문 전체 조회

    • 전체 주문을 조회한다.
    • 주문 조회시 해당 주문의 주문 항목도 함께 조회된다.
  • 주문 상태 변경

    • 주문 id와 주문 상태를 입력받아 변경한다.
    • 이미 등록된 주문이어야한다.
    • 기존 주문의 상태가 계산 완료(COMPLETION)이면 예외가 발생한다.

테이블 (Table)

  • 테이블 생성

    • 손님 수, 빈 테이블 여부를 입력받아 생성한다.
  • 테이블 리스트 조회

    • 전체 테이블을 조회한다.
  • 빈 테이블 여부 변경

    • 주문 테이블 id와 빈 테이블 여부를 입력받아 변경한다.
    • 이미 등록된 주문 테이블이어야한다.
    • 이미 단체 지정된 테이블인 경우 예외아다.
    • 조리중(COOKING)이거나 식사중(MEAL)인 주문이 있으면 예외이다.
    • 주문 테이블의 빈 테이블 여부를 수정한다.
  • 손님 수 변경

    • 주문 테이블의 id와 손님 수를 입력받아 주문 테이블의 손님 수를 변경한다.
    • 손님 수는 0명 이상이어야한다.
    • 이미 존재하는 주문 테이블이어야 한다.
    • 주문 테이블이 빈 테이블이면 예외이다.

테이블 그룹 (Table Group)

  • 단체 지정

    • 주문 테이블 id 리스트를 입력받아 생성한다.
    • 주문 테이블은 2개 이상이어야한다.
    • 모든 주문 테이블은 이미 존재하는 주문 테이블이어야한다.
    • 빈 테이블이 아니면 예외가 발생한다.
    • 이미 단체 지정된 주문 테이블이면 예외가 발생한다.
    • 현재 시간을 테이블 그룹의 생성 시간으로 지정한다.
  • 테이블 그룹 해제

    • 테이블 그룹 id를 입력받아 해당 테이블 그룹을 해제한다.
    • 조리중(COOKING)이거나 식사중(MEAL)인 주문이 있으면 예외가 발생한다.

용어 사전

한글명 영문명 설명
상품 product 메뉴를 관리하는 기준이 되는 데이터
메뉴 그룹 menu group 메뉴 묶음, 분류
메뉴 menu 메뉴 그룹에 속하는 실제 주문 가능 단위
메뉴 상품 menu product 메뉴에 속하는 수량이 있는 상품
금액 amount 가격 * 수량
주문 테이블 order table 매장에서 주문이 발생하는 영역
빈 테이블 empty table 주문을 등록할 수 없는 주문 테이블
주문 order 매장에서 발생하는 주문
주문 상태 order status 주문은 조리 ➜ 식사 ➜ 계산 완료 순서로 진행된다.
방문한 손님 수 number of guests 필수 사항은 아니며 주문은 0명으로 등록할 수 있다.
단체 지정 table group 통합 계산을 위해 개별 주문 테이블을 그룹화하는 기능
주문 항목 order line item 주문에 속하는 수량이 있는 메뉴
매장 식사 eat in 포장하지 않고 매장에서 식사하는 것

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages