ch0213 / ddd-legacy

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

키친포스

퀵 스타트

cd docker
docker compose -p kitchenpos up -d

요구 사항

  • 키친포스를 구현한다.

  • 메뉴 그룹

    • 메뉴 그룹을 생성한다.
      • 메뉴 그룹의 이름이 존재해야 한다.
  • 메뉴

    • 메뉴를 생성한다.
      • 메뉴의 가격이 존재해야하고, 0원 이상이어야 한다.
      • 메뉴는 하나 이상의 메뉴 그룹에 포함되어있어야 한다.
      • 메뉴는 하나 이상의 메뉴 상품을 포함해야 한다.
      • 메뉴의 이름이 존재해야 하고, 욕설이 포함되면 안된다.
      • 메뉴의 가격이 메뉴 상품의 가격(상품 가격 * 개수)의 합보다 작아야 한다.
    • 메뉴의 가격을 변경한다.
      • 변경하려는 가격이 0원 이상이어야 한다.
      • 변경하려는 가격이 각 메뉴 상품의 가격(상품 가격 * 개수)보다 작아야 한다.
    • 메뉴가 보이도록 변경한다.
      • 보이도록 변경하려는 메뉴의 가격이 각 메뉴 상품의 가격(상품 가격 * 개수)보다 작아야 한다.
    • 메뉴가 보이지 않도록 변경한다.
  • 메뉴 상품

    • 각 메뉴 상품의 개수는 0개 이상이어야 한다.
  • 상품

    • 상품을 생성한다.
      • 상품의 가격은 0원 이상이어야 한다.
      • 상품의 이름이 존재해야 하고, 욕설이 포함되면 안된다.
    • 상품 가격을 변경한다.
      • 변경하려는 가격이 0원 이상이어야 한다.
      • 해당 상품의 변동된 가격으로 인해서, 해당 상품을 포함하는 메뉴의 가격이 메뉴 상품의 가격(상품 가격 * 개수)보다 커진다면 해당 메뉴가 보이지 않도록 변경해야 한다.
    • 상품 목록을 조회한다.
  • 주문 테이블

    • 주문 테이블을 생성한다.
      • 주문 테이블은 손님이 앉은 상태(occupied=true), 손님이 앉지 않은 상태(occupied=false)가 있다.
      • 주문 테이블의 이름이 존재해야 한다.
      • 주문 테이블의 초기 인원 수는 0이다.
    • 주문 테이블을 손님이 앉은 상태로 변경한다.
      • 주문 테이블을 손님이 앉은 상태(occupied=true)로 바꾼다.
    • 주문 테이블을 치운다.
      • 주문 테이블에 완료되지 않은 주문이 있다면 치울 수 없다.
      • 주문 테이블의 인원 수를 0으로 바꾼다.
      • 주문 테이블을 손님이 앉지 않은 상태(occupied=false)로 바꾼다.
    • 주문 테이블의 인원 수를 변경한다.
      • 변경하려는 주문테이블의 인원 수가 0이상이어야 한다.
      • 테이블이 손님이 앉지 않은 상태(occupied=false)인 경우 바꿀 수 없다.
    • 주문 테이블 목록을 조회한다.
  • 주문

    • 주문을 한다.
      • 주문은 세 가지 타입이 있다. 배달(DELIVERY), 포장(TAKEOUT), 매장 식사(EAT_IN)
      • 주문은 여섯 가지의 상태가 있다. 주문 대기(WAITING), 주문 접수(ACCEPTED), 서빙 완료(SERVED), 배달 중(DELIVERING), 배달 완료(DELIVERED), 주문 처리 완료(COMPLETED)
      • 주문은 배달, 포장, 매장 식사 중 하나여야 한다.
      • 주문은 초기에 주문 대기(WAITING)상태다.
      • 주문을 할 때 다음 조건을 만족해야 한다.
        • 주문에 포함된 주문 메뉴가 1개 이상이어야 한다.
        • 주문에 포함된 주문 메뉴 각각의 수량은 0개 이상이어야 한다.
        • 보이는 메뉴만 주문할 수 있다.
        • 배달 주문인 경우 배달 주소가 존재해야 한다.
        • 매장 식사인 경우 어떤 테이블에서 먹을지 결정해야 한다.
          • 해당 테이블에 다른 손님이 있는경우 주문할 수 없다.
    • 주문을 수락한다.
      • 주문의 상태가 주문 대기(WAITING)여야 수락 가능하다.
      • 배달 주문인 경우 배달기사님에게 주문 정보를 함께 전달한다.
      • 주문의 상태를 주문 접수(ACCEPTED)로 변경한다.
    • 음식을 서빙한다.
      • 주문의 상태가 주문 접수(ACCEPTED)여야 한다.
      • 주문의 상태를 서빙 완료(SERVED)로 변경한다.
    • 배달을 시작한다.
      • 주문 타입이 배달(DELIVERY)이어야 한다.
      • 주문 상태가 서빙 완료(SERVED)여야 한다.
      • 주문의 상태를 배달 중(DELIVERING)으로 변경한다.
    • 배달을 완료한다.
      • 주문의 상태가 배달 중(DELIVERING)이어야 한다.
      • 주문의 상태를 배달 완료(DELIVERED)로 변경한다.
    • 주문 처리를 완료한다.
      • 주문 타입이 배달(DELIVERY)이라면 주문의 상태가 배달 완료(DELIVERED)여야 한다.
      • 주문 타입이 포장(TAKEOUT), 매장 식사(EAT_IN)이라면 주문의 상태가 서빙 완료(SERVED)여야 한다.
      • 주문의 상태를 주문 처리 완료(COMPLETE)으로 변경한다.
      • 매장식사(EAT_IN)인 경우 테이블의 인원 수를 0으로 하고, 손님이 앉지 않은 상태(occupied=false)로 변경한다.
  • 주문 메뉴

    • 주문 메뉴의 수량은 0개 이상이어야 한다.
    • 보이지 않는 메뉴를 포함할 수 없다.

용어 사전

한글명 영문명 설명

모델링

About


Languages

Language:Java 100.0%