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개 이상이어야 한다.
- 보이지 않는
메뉴
를 포함할 수 없다.
한글명 | 영문명 | 설명 |
---|---|---|