- 상품을 등록할 수 있다.
- 상품의 가격이 올바르지 않으면 등록할 수 없다.
- 상품의 가격은 0원 이상이어야 한다.
- 상품의 이름이 올바르지 않으면 등록할 수 없다.
- 상품의 이름에는 비속어가 포함될 수 없다.
- 상품의 가격을 변경할 수 있다.
- 상품의 가격이 올바르지 않으면 변경할 수 없다.
- 상품의 가격은 0원 이상이어야 한다.
- 상품의 가격이 변경될 때 메뉴의 가격이 메뉴에 속한 상품 금액의 합보다 크면 메뉴가 숨겨진다.
- 상품의 목록을 조회할 수 있다.
- 메뉴 그룹을 등록할 수 있다.
- 메뉴 그룹의 이름이 올바르지 않으면 등록할 수 없다.
- 메뉴 그룹의 이름은 비워 둘 수 없다.
- 메뉴 그룹의 목록을 조회할 수 있다.
- 1 개 이상의 등록된 상품으로 메뉴를 등록할 수 있다.
- 상품이 없으면 등록할 수 없다.
- 메뉴에 속한 상품의 수량은 0 이상이어야 한다.
- 메뉴의 가격이 올바르지 않으면 등록할 수 없다.
- 메뉴의 가격은 0원 이상이어야 한다.
- 메뉴에 속한 상품 금액의 합은 메뉴의 가격보다 크거나 같아야 한다.
- 메뉴는 특정 메뉴 그룹에 속해야 한다.
- 메뉴의 이름이 올바르지 않으면 등록할 수 없다.
- 메뉴의 이름에는 비속어가 포함될 수 없다.
- 메뉴의 가격을 변경할 수 있다.
- 메뉴의 가격이 올바르지 않으면 변경할 수 없다.
- 메뉴의 가격은 0원 이상이어야 한다.
- 메뉴에 속한 상품 금액의 합은 메뉴의 가격보다 크거나 같아야 한다.
- 메뉴를 노출할 수 있다.
- 메뉴의 가격이 메뉴에 속한 상품 금액의 합보다 높을 경우 메뉴를 노출할 수 없다.
- 메뉴를 숨길 수 있다.
- 메뉴의 목록을 조회할 수 있다.
- 주문 테이블을 등록할 수 있다.
- 주문 테이블의 이름이 올바르지 않으면 등록할 수 없다.
- 주문 테이블의 이름은 비워 둘 수 없다.
- 빈 테이블을 해지할 수 있다.
- 빈 테이블로 설정할 수 있다.
- 완료되지 않은 주문이 있는 주문 테이블은 빈 테이블로 설정할 수 없다.
- 방문한 손님 수를 변경할 수 있다.
- 방문한 손님 수가 올바르지 않으면 변경할 수 없다.
- 방문한 손님 수는 0 이상이어야 한다.
- 빈 테이블은 방문한 손님 수를 변경할 수 없다.
- 주문 테이블의 목록을 조회할 수 있다.
- 1개 이상의 등록된 메뉴로 배달 주문을 등록할 수 있다.
- 1개 이상의 등록된 메뉴로 포장 주문을 등록할 수 있다.
- 1개 이상의 등록된 메뉴로 매장 주문을 등록할 수 있다.
- 주문 유형이 올바르지 않으면 등록할 수 없다.
- 메뉴가 없으면 등록할 수 없다.
- 매장 주문은 주문 항목의 수량이 0 미만일 수 있다.
- 매장 주문을 제외한 주문의 경우 주문 항목의 수량은 0 이상이어야 한다.
- 배달 주소가 올바르지 않으면 배달 주문을 등록할 수 없다.
- 배달 주소는 비워 둘 수 없다.
- 빈 테이블에는 매장 주문을 등록할 수 없다.
- 숨겨진 메뉴는 주문할 수 없다.
- 주문한 메뉴의 가격은 실제 메뉴 가격과 일치해야 한다.
- 주문을 접수한다.
- 접수 대기 중인 주문만 접수할 수 있다.
- 배달 주문을 접수되면 배달 대행사를 호출한다.
- 주문을 서빙한다.
- 접수된 주문만 서빙할 수 있다.
- 주문을 배달한다.
- 배달 주문만 배달할 수 있다.
- 서빙된 주문만 배달할 수 있다.
- 주문을 배달 완료한다.
- 배달 중인 주문만 배달 완료할 수 있다.
- 주문을 완료한다.
- 배달 주문의 경우 배달 완료된 주문만 완료할 수 있다.
- 포장 및 매장 주문의 경우 서빙된 주문만 완료할 수 있다.
- 주문 테이블의 모든 매장 주문이 완료되면 빈 테이블로 설정한다.
- 완료되지 않은 매장 주문이 있는 주문 테이블은 빈 테이블로 설정하지 않는다.
- 주문 목록을 조회할 수 있다.
한글명 | 영문명 | 설명 |
---|---|---|
상품 | Product | 매장에서 관리되는 음식의 최소 단위. 가격과 이름을 가진다. |
한글명 | 영문명 | 설명 |
---|---|---|
메뉴 그룹 | Menu Group | 메뉴의 묶음. 하나 이상의 메뉴를 포함한다. |
한글명 | 영문명 | 설명 |
---|---|---|
메뉴 | Menu | 한 개 이상의 메뉴 항목으로 구성된 주문의 단위로 하나의 메뉴 그룹에 속한다 |
노출된 메뉴 | Displayed Menu | 주문할 수 있는 상태인 메뉴 |
숨겨진 메뉴 | Hidden Menu | 주문할 수 없는 상태인 메뉴 |
메뉴 항목 | Menu Line Item | 상품과 상품의 수량으로 나타낸 메뉴의 구성요소 |
한글명 | 영문명 | 설명 |
---|---|---|
주문 테이블 | Order Table | 매장 식사 타입의 주문이 묶일 수 있는 단위 손님이 앉을 수 있는 테이블 |
빈 테이블 | Empty Order Table | 손님이 없는 주문 테이블 |
사용 중인 테이블 | Order Table In Use | 손님이 사용 중인 주문 테이블 |
방문한 손님 수 | Number of Guests | 주문 테이블을 사용 중인 손님의 수 |
한글명 | 영문명 | 설명 |
---|---|---|
주문 | Order | 한 개 이상의 주문 항목으로 구성된 주문할 수 있는 단위. |
주문 항목 | Order Line Item | 메뉴와 메뉴의 수량으로 나타낸 주문의 구성요소 |
주문 항목의 수량 | Quantity of Order Line Item | 주문 항목의 메뉴의 수량으로 매장 식사인 경우 0 미만일 수 있다. |
주문 종류 | Order Type | 주문은 포장, 매장 식사, 배달로 종류가 나뉜다. |
배달 | Delivery | 손님의 주소지로 주문한 메뉴를 배달대행사를 통해 배달해준다. |
포장 | Take out | 손님이 매장에 와서 직접 주문한 메뉴를 수령한다. |
매장 식사 | Eat In | 손님이 주문한 메뉴를 주문 테이블에서 식사한다. |
주문 상태 | Order Status | 주문이 진행되는 상태 접수 대기, 접수, 서빙, 배달, 배달 완료, 주문 완료 |
접수 대기 | Waiting | 손님의 주문을 사장님이 확인하지 않은 상태 |
접수 | Accepted | 사장님이 주문을 확인한 상태 |
서빙 | Served | 메뉴가 전달 된 상태 |
배달 중 | Delivering | 서빙된 메뉴를 배달 주문한 손님에게 배달 중인 상태 |
배달 완료 | Delivered | 배달이 완료된 상태 |
주문 완료 | Done | 주문이 완료된 상태 |
한글명 | 영문명 | 설명 |
---|---|---|
배달 대행사 | Delivery Agency | 대신 배달해주는 회사 |
배달 주소 | Delivery Address | 배달 주문이 도착되어야 하는 주소 |
한글명 | 영문명 | 설명 |
---|---|---|
금액 | Amount | 상품 또는 메뉴 가격과 수량을 곱한 금액 |
가격 | Price | 상품 또는 메뉴 하나의 가격 |
비속어 | Profanity | 부적절한 언어로 상품, 메뉴 이름과 같은 곳에 포함될 수 없다. |
속성
name(이름)
,price(가격)
을 가진다.
행위
register (추가할 수 있다)
name(이름)
은 공백이거나 비속어를 포함할 수 없다.price(가격)
0원 이상이어야 한다.
changePrice (가격을 변경할 수 있다)
- 변경될
Menu(메뉴)
의price(가격)
이Menu(메뉴)
에 속한MenuProduct(메뉴 항목)
의price(가격)
의 합보다 크면Menu(메뉴)
가hide(숨겨진다.)
- 변경될
속성
name(이름)
을 가진다.
행위
register (등록할 수 있다)
name(이름)
은 공백일 수 없다.
속성
- 1개 이상의
menuProduct(메뉴 항목)
포함해야 한다. name(이름)
,price(가격)
을 가진다.- 반드시 특정
menuGroup(메뉴 그룹)
에 속해야 한다.
행위
register (등록할 수 있다)
name(이름)
은 공백이거나 비속어를 포함할 수 없다.price(가격)
은 0원 이상이어야 하며menuProduct(메뉴 항목)
들의price(가격)
의 합은Menu(메뉴)
의price(가격)
보다 크거나 같아야 한다.menuGroup (메뉴 그룹)
이 존재하지 않는다면 추가할 수 없다.
changePrice (가격을 변경할 수 있다)
- 변경할
price(가격)
은 0원 이상이어야 하며menuProduct(메뉴 항목)
들의price(가격)
의 합은Menu(메뉴)
의price(가격)
보다 크거나 같아야 한다.
- 변경할
display (노출할 수 있다)
price(가격)
이menuProduct(메뉴 항목)
들의price(가격)
의 합보다 큰 경우 노출할 수 없다.
hide (숨길 수 있다)
속성
product (상품)
,quantity (수량)
을 포함한다.
행위
calculateAmount (금액을 계산할 수 있다)
속성
name (이름)
과numberOfGuests (방문한 손님 수)
을 가진다.
행위
register (등록할 수 있다)
name(이름)
은 공백일 수 없다.
empty (빈 테이블로 설정할 수 있다)
- 완료되지 않은 주문이 있는 주문 테이블은 빈 테이블로 설정할 수 없다.
inUse (빈 테이블을 해지할 수 있다)
changeNumberOfGuests (손님 수를 변경할 수 있다.)
- 빈 테이블은 변경할 수 없다.
속성
type(종류)
가 있다.type(종류)
에는takeOut(포장)
,eatIn(매장)
,delivery(배달)
이 있다.
- 1개 이상의
orderLineItem (주문 항목)
을 포함해야 한다. status (상태)
가 있다.waiting(접수 대기)
,accepted(접수)
,served(서빙됨)
,Delivering(배달중)
,delivered(배달 완료)
,done(완료)
가 있다.
eatIn(매장)
인 경우orderTable (주문 테이블)
를 가진다.Delivery(배달)
인 경우deliveryAddress (배달 주소)
를 가진다.- 하나 이상의
orderLineItem(주문항목)
을 가진다.
행위
-
register (등록할 수 있다)
type(종류)
가 올바르지 않으면 등록할 수 없다.hideMenu(숨겨진 메뉴)
는 주문할 수 없다.orderLineItem(주문항목)
의menu (메뉴)
의price(가격)
은 실제menu (메뉴)
의price(가격)
과 일치해야 한다.deliveryAddress(배달 주소)
가 올바르지 않으면Delivery(배달)
을 등록할 수 없다.TakeOut(포장)
,Delivery(배달)
의 경우orderLineItem(주문 항목)
의menu(메뉴)
의quantity(수량)
은 0 이상이어야 한다.emptyTable(빈 테이블)
에는EatIn(매장)
을 등록할 수 없다.EatIn(매장)
인 경우orderLineItem(주문 항목)
의menu(메뉴)
의quantity(수량)
이 0 미만일 수 있다.
-
accept (접수한다)
waiting(접수 대기)
중인 주문만 접수할 수 있다.delivery(배달)
주문을 접수되면 배달 대행사를 호출한다.
-
serve(서빙한다)
accepted(접수)
된 주문만 서빙할 수 있다.
-
delivery (배달한다)
delivery(배달)
주문만 배달할 수 있다.served(서빙됨)
주문만 배달할 수 있다.
-
delivered (배달 완료한다)
Delivering(배달 중)
인 주문만 배달 완료할 수 있다.
-
done (완료한다)
- 주문 테이블의 모든 주문이 완료되었으면 빈 테이블로 설정한다.
속성
menu (메뉴)
quantity (메뉴 수량)
행위
calculateAmount (금액을 계산할 수 있다)