Skip to content

woowacourse/jwp-refactoring

 
 

Repository files navigation

키친포스

요구 사항

❌요청 실패

🤔 개선할 사항

상품

  • 상품을 생성할 수 있다.
    • 🔑 상품의 아이디를 지정할 수 있다
      • ❌ 만약 해당 아이디를 가진 상품이 있다면 예외가 발생한다.
    • 상품은 이름을 갖는다.
    • 상품은 가격을 갖는다.
  • 상품의 목록을 조회할 수 있다.

메뉴 상품

  • 메뉴 상품은 메뉴 생성을 통해서만 생성할 수 있다.
    • 구성이 똑같은 메뉴 상품이더라도 메뉴1, 메뉴2에 포함된 메뉴 상품은 다른 것이다.
    • 🔑seq 라는 식별자를 갖는다.
      • ❌ 만약 이미 존재하는 식별자일 시 예외가 발생한다.
      • 값을 명시해주지 않으면 자동으로 값이 생성된다.
    • 메뉴의 아이디를 갖는다.
      • 메뉴 상품은 메뉴 생성을 통해서만 만들 수 있다. 메뉴 아이디는 해당 메뉴의 아이디를 따른다.
    • 상품의 아이디를 갖는다.
      • ❌존재하지 않는 상품의 아이디라면 예외가 발생한다.

메뉴 그룹

  • 메뉴 그룹을 생성할 수 있다.
  • 🔑 아이디를 지정해줄 수 있다.
    • ❌이미 존재하는 아이디면 예외가 발생한다.
    • 지정해주지 않는다면 자동으로 생성된다.
  • 메뉴 그룹 목록을 조회할 수 있다.

메뉴

  • 메뉴를 생성할 수 있다.

    • 메뉴 아이디를 지정해줄 수 있다.
      • ❌ 만약 해당 아이디 값이 이미 존재하면 예외가 발생한다.
      • 값을 명시해주지 않으면 자동으로 값이 생성된다.
    • 🤔메뉴 이름을 가질 수 있다.
      • 해당 값은 null 로 넣을 수 있다.
      • null 일 경우 이름을 가지지 않는다.
    • 가격을 가진다.
      • ❌가격은 꼭 메뉴 상품들의 합보다 클 수 없다.
      • ❌가격이 없다면 예외가 발생한다.
      • ❌가격이 음수라면 예외가 발생한다.
    • 메뉴 그룹을 가져야한다.
      • ❌존재하지 않는 메뉴 그룹이라면 예외가 발생한다
    • 메뉴 상품들을 가진다.
  • 메뉴의 목록을 조회할 수 있다.

주문 테이블

  • 주문 테이블을 생성할 수 있다.

    • 🔑주문 테이블의 아이디를 지정해주더라도 무시되고 자동으로 생성된다.
    • 테이블 그룹을 지정해주더라도 무시된다. 테이블 그룹은 별개로 지정해주어야 한다.
    • 주문 테이블에 손님의 수를 지정해줄 수 있다.
      • 🤔음수의 손님도 지정해줄 수 있다.
    • 테이블이 비었는지 여부를 지정해줄 수 있다.
      • 🤔주문 테이블을 생성할 당시에는 빈 테이블로도 지정할 수 있다.
  • 주문 테이블을 비우거나 찬 상태로 만들 수 있다.

    • 🤔 손님 수, 테이블 그룹을 보내더라도 해당 값은 무시한다.
    • 존재하지 않는 주문 테이블이면 예외가 발생한다.
      • 주문 테이블은 URL 에 포함된 주문 테이블 아이디로 식별한다.
        • 🤔주문 테이블 속 주문 테이블 아이디는 무시된다.
    • ❌ 만약 주문 테이블이 테이블 그룹에 포함되어있다면 변경할 수 없다
    • ❌ 만약 주문 테이블에 조리 중이거나 식사 중인 주문이 포함되어 있으면 변경할 수 없다.
  • 손님 수를 바꿀 수 있다.

    • 🤔 테이블이 빈 테이블인지에 대한 값, 테이블 그룹 값은 무시된다.
    • 존재하지 않는 주문 테이블이면 예외가 발생한다.
      • 주문 테이블은 URL 에 포함된 주문 테이블 아이디로 식별한다.
        • 🤔주문 테이블 속 주문 테이블 아이디는 무시된다.
    • ❌주문 수가 음수면 예외가 발생한다.
    • ❌만약 빈 테이블에 손님 수를 바꾸려하면 예외가 발생한다.
  • 주문 테이블의 목록을 조회할 수 있다.

테이블 그룹

  • 테이블 그룹을 생성할 수 있다.
    • 테이블 그룹은 2개 이상의 주문 테이블로 구성된다
      • ❌1 이하일 경우 생성할 수 없다.
      • ❌주문 테이블이 하나라도 존재하지 않는 테이블이라면 예외가 발생한다.
      • ❌주문 테이블이 하나라도 빈 테이블이 아니라면 예외가 발생한다.
      • ❌주문 테이블이 하나라도 이미 테이블 그룹에 포함되어 있다면 예외가 발생한다.
    • 🤔테이블의 생성 시간값은 무시되고 요청한 시간으로 자동 생성된다.
  • 테이블 그룹을 해제할 수 있다.
    • ❌ 만약 테이블 그룹의 주문 테이블들에 포함된 주문중 하나라도 요리 중이거나 식사 중이면 해제할 수 없다.

주문

  • 주문을 생성할 수 있다.

    • 🔑 주문의 아이디를 지정하더라도 무시한 후에 자동으로 생성된다.
    • 주문은 주문 테이블에 포함된다.
      • ❌ 만약 주문 테이블이 존재하지 않는다면 예외가 발생한다.
      • ❌ 빈 테이블에서 주문하면 예외가 발생한다. 주문 테이블을 먼저 생성한 후 주문이 생성 가능하다.
    • 주문은 조리 -> 식사 -> 계산 순으로 진행되는 상태가 있다.
      • 주문은 초기에 조리 상태로 생성된다.
    • 주문은 주문된 시간을 가진다.
    • 주문은 주문 항목들로 이루어진다.
      • 🔑 주문 항목들은 주문 아이디가 항상 포함된 주문의 아이디로 저장된다.
      • ❌ 주문 항목들이 비어있다면 예외가 발생한다.
      • ❌ 주문 항목들의 메뉴는 고유해야한다. 에를 들어 무 2개, 무 3개는 같은 주문에 묶일 수 없다.
  • 주문의 상태를 바꿀 수 있다.

    • ❌존재하지 않는 주문이면 예외가 발생한다.
    • ❌주문이 완료 상태의 주문을 바꾸면 예외가 발생한다.
  • 주문 목록을 조회할 수 있다.

용어 사전

한글명 영문명 설명
상품 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