- 상품을 등록할 수 있다.
- 상품의 가격이 올바르지 않으면 등록할 수 없다.
- 상품의 가격은 0원 이상이어야 한다.
- 상품의 이름이 올바르지 않으면 등록할 수 없다.
- 상품의 이름에는 비속어가 포함될 수 없다.
- 상품의 가격을 변경할 수 있다.
- 상품의 가격이 올바르지 않으면 변경할 수 없다.
- 상품의 가격은 0원 이상이어야 한다.
- 상품의 가격이 변경될 때 메뉴의 가격이 메뉴에 속한 상품 금액의 합보다 크면 메뉴가 숨겨진다.
- 상품의 목록을 조회할 수 있다.
- 메뉴 그룹을 등록할 수 있다.
- 메뉴 그룹의 이름이 올바르지 않으면 등록할 수 없다.
- 메뉴 그룹의 이름은 비워 둘 수 없다.
- 메뉴 그룹의 목록을 조회할 수 있다.
- 1 개 이상의 등록된 상품으로 메뉴를 등록할 수 있다.
- 상품이 없으면 등록할 수 없다.
- 메뉴에 속한 상품의 수량은 0 이상이어야 한다.
- 메뉴의 가격이 올바르지 않으면 등록할 수 없다.
- 메뉴의 가격은 0원 이상이어야 한다.
- 메뉴에 속한 상품 금액의 합은 메뉴의 가격보다 크거나 같아야 한다.
- 메뉴는 특정 메뉴 그룹에 속해야 한다.
- 메뉴의 이름이 올바르지 않으면 등록할 수 없다.
- 메뉴의 이름에는 비속어가 포함될 수 없다.
- 메뉴의 가격을 변경할 수 있다.
- 메뉴의 가격이 올바르지 않으면 변경할 수 없다.
- 메뉴의 가격은 0원 이상이어야 한다.
- 메뉴에 속한 상품 금액의 합은 메뉴의 가격보다 크거나 같아야 한다.
- 메뉴를 노출할 수 있다.
- 메뉴의 가격이 메뉴에 속한 상품 금액의 합보다 높을 경우 메뉴를 노출할 수 없다.
- 메뉴를 숨길 수 있다.
- 메뉴의 목록을 조회할 수 있다.
- 주문 테이블을 등록할 수 있다.
- 주문 테이블의 이름이 올바르지 않으면 등록할 수 없다.
- 주문 테이블의 이름은 비워 둘 수 없다.
- 빈 테이블을 해지할 수 있다.
- 빈 테이블로 설정할 수 있다.
- 완료되지 않은 주문이 있는 주문 테이블은 빈 테이블로 설정할 수 없다.
- 방문한 손님 수를 변경할 수 있다.
- 방문한 손님 수가 올바르지 않으면 변경할 수 없다.
- 방문한 손님 수는 0 이상이어야 한다.
- 빈 테이블은 방문한 손님 수를 변경할 수 없다.
- 주문 테이블의 목록을 조회할 수 있다.
- 1개 이상의 등록된 메뉴로 배달 주문을 등록할 수 있다.
- 1개 이상의 등록된 메뉴로 포장 주문을 등록할 수 있다.
- 1개 이상의 등록된 메뉴로 매장 주문을 등록할 수 있다.
- 주문 유형이 올바르지 않으면 등록할 수 없다.
- 메뉴가 없으면 등록할 수 없다.
- 매장 주문은 주문 항목의 수량이 0 미만일 수 있다.
- 매장 주문을 제외한 주문의 경우 주문 항목의 수량은 0 이상이어야 한다.
- 배달 주소가 올바르지 않으면 배달 주문을 등록할 수 없다.
- 배달 주소는 비워 둘 수 없다.
- 빈 테이블에는 매장 주문을 등록할 수 없다.
- 숨겨진 메뉴는 주문할 수 없다.
- 주문한 메뉴의 가격은 실제 메뉴 가격과 일치해야 한다.
- 주문을 접수한다.
- 접수 대기 중인 주문만 접수할 수 있다.
- 배달 주문을 접수되면 배달 대행사를 호출한다.
- 주문을 서빙한다.
- 접수된 주문만 서빙할 수 있다.
- 주문을 배달한다.
- 배달 주문만 배달할 수 있다.
- 서빙된 주문만 배달할 수 있다.
- 주문을 배달 완료한다.
- 배달 중인 주문만 배달 완료할 수 있다.
- 주문을 완료한다.
- 배달 주문의 경우 배달 완료된 주문만 완료할 수 있다.
- 포장 및 매장 주문의 경우 서빙된 주문만 완료할 수 있다.
- 주문 테이블의 모든 매장 주문이 완료되면 빈 테이블로 설정한다.
- 완료되지 않은 매장 주문이 있는 주문 테이블은 빈 테이블로 설정하지 않는다.
- 주문 목록을 조회할 수 있다.
한글명 | 영문명 | 설명 |
---|---|---|
식별자 | id | 데이터를 식별하는 고윳값 |
가격 | price | 상품 및 메뉴에 매겨진 금액 |
이름 | name | 데이터를 지칭하는 단어 |
비속어 | profanity | 이름으로 사용할 수 없는 단어 |
수량 | quantity | 특정 데이터에 속하는 단위 데이터의 개수 |
한글명 | 영문명 | 설명 |
---|---|---|
상품 | product | 메뉴를 관리하는 기준이 되는 데이터 |
한글명 | 영문명 | 설명 |
---|---|---|
메뉴 그룹 | menu group | 메뉴를 성격에 따라 분류하여 묶어둔 그룹 |
한글명 | 영문명 | 설명 |
---|---|---|
메뉴 | menu | 메뉴에 속한 상품과 가격 데이터 |
메뉴에 속한 상품 | menu product | 상품과 그 상품의 수량 데이터 |
노출된 메뉴 | displayed menu | 주문할 수 있는 메뉴 |
숨겨진 메뉴 | non-displayed menu | 주문할 수 없는 메뉴 |
한글명 | 영문명 | 설명 |
---|---|---|
주문 테이블 | order table | 매장 주장을 위해 선점해야 하는 데이터 |
빈 테이블 | empty table | 선점할 수 있는 주문 테이블 |
채운 테이블 | non-empty table | 선점할 수 없는 주문 테이블 |
방문한 손님 수 | number of guests | 현재 주문 테이블을 선점하고 있는 손님의 수 |
한글명 | 영문명 | 설명 |
---|---|---|
주문 | order | 손님의 메뉴 요청 데이터 |
주문 항목 | order line item | 주문 대상 메뉴, 가격 및 수량 데이터 |
주문 일시 | order date time | 주문이 요청된 날짜와 시간 |
배달 주소 | delivery address | 배달 주문 시 주문 항목이 전달될 목적지 |
배달 대행사 | kitchen riders | 배달 주문 시 배달을 대행하는 서비스 |
한글명 | 영문명 | 설명 |
---|---|---|
주문 유형 | order type | 요청되는 방식에 따른 주문 분류 데이터 |
배달 주문 | delivery | 배달 주소에서 요청되는 주문 |
포장 주문 | takeout | 매장에서 주문 테이블 없이 요청되는 주문 |
매장 주문 | eat in | 주문 테이블에서 요청되는 주문 |
한글명 | 영문명 | 설명 |
---|---|---|
주문 상태 | order status | 주문의 현재 진행 단계 데이터 |
접수 대기 | waiting | 주문의 초기 상태 |
접수 | accepted | 주문 항목을 준비하는 상태 |
서빙 | served | 주문 항목이 손님 또는 배달 대행사에 전달된 상태 |
배달 | delivering | 배달 중인 상태 |
배달 완료 | delivered | 배달이 완료된 상태 |
주문 완료 | complete | 주문이 완료된 상태 |
- 속성
- 식별자(
id
) - 이름(
name
) - 가격(
price
)
- 식별자(
- 기능 및 조건
- 상품을 등록한다(
create
)- 상품의 이름에는 비속어가 포함될 수 없다.
- 상품의 가격은 0원 이상이어야 한다.
- 상품의 가격을 변경한다(
changePrice
)- 상품의 가격은 0원 이상이어야 한다.
- 상품의 가격이 변경될 때 메뉴의 가격이 메뉴에 속한 상품 금액의 합보다 크면 메뉴가 숨겨진다.
- 상품을 조회한다(
findAll
)
- 상품을 등록한다(
- 속성
- 식별자(
id
) - 이름(
name
)
- 식별자(
- 기능 및 조건
- 메뉴 그룹을 등록한다(
create
)- 메뉴 그룹의 이름의 길이는 1 자 이상이어야 한다.
- 메뉴 그룹을 조회한다(
findAll
)
- 메뉴 그룹을 등록한다(
- 속성
- 식별자(
id
) - 이름(
name
) - 가격(
price
) - 메뉴 그룹 식별자(
menuGroupId
) - 노출 여부(
display
) - 메뉴에 속한 상품(
menuProduct
) 목록- 상품 식별자(
productId
) - 수량(
quantity
)
- 상품 식별자(
- 식별자(
- 기능 및 조건
- 메뉴를 등록한다(
create
)- 1 개 이상의 등록된 상품으로 메뉴를 등록할 수 있다.
- 상품이 없으면 등록할 수 없다.
- 메뉴에 속한 상품의 수량은 0 이상이어야 한다.
- 메뉴의 가격은 0원 이상이어야 한다.
- 메뉴에 속한 상품 금액의 합은 메뉴의 가격보다 크거나 같아야 한다.
- 메뉴는 특정 메뉴 그룹에 속해야 한다.
- 메뉴의 이름에는 비속어가 포함될 수 없다.
- 메뉴의 가격을 변경한다(
changePrice
)- 메뉴의 가격은 0원 이상이어야 한다.
- 메뉴에 속한 상품 금액의 합은 메뉴의 가격보다 크거나 같아야 한다.
- 메뉴를 노출한다(
display
)- 메뉴의 가격이 메뉴에 속한 상품 금액의 합보다 높을 경우 메뉴를 노출할 수 없다.
- 메뉴를 숨긴다(
hide
) - 메뉴를 조회한다(
findAll
)
- 메뉴를 등록한다(
- 속성
- 식별자(
id
) - 이름(
name
) - 방문한 손님 수(
numberOfGuests
) - 빈 테이블 여부(
empty
)
- 식별자(
- 기능 및 조건
- 주문 테이블을 등록한다(
create
)- 주문 테이블의 이름은 0 자 이상이어야 한다.
- 주문 테이블을 채운다(
sit
) - 주문 테이블을 비운다(
clear
)- 완료되지 않은 주문이 있는 주문 테이블은 빈 테이블로 설정할 수 없다.
- 주문 테이블의 방문한 손님 수를 변경한다(
changeNumberOfGuests
)- 방문한 손님 수는 0 명 이상이어야 한다.
- 빈 테이블은 방문한 손님 수를 변경할 수 없다.
- 주문 테이블을 조회한다(
findAll
)
- 주문 테이블을 등록한다(
- 속성
- 식별자(
id
) - 주문 유형(
type
) - 주문 상태(
status
) - 주문 일시(
orderDateTime
) - 주문 항목(
orderLineItem
) 목록- 메뉴 식별자(
menuId
) - 가격(
price
) - 수량(
quantity
)
- 메뉴 식별자(
- 배달 주소(
deliveryAddress
) - 주문 테이블 식별자(
orderTableId
)
- 식별자(
- 기능 및 조건
- 배달 주문을 등록한다(
createDelivery
)- 1개 이상의 등록된 메뉴로 배달 주문을 등록할 수 있다.
- 주문 유형이 올바르지 않으면 등록할 수 없다.
- 메뉴가 없으면 등록할 수 없다.
- 매장 주문을 제외한 주문의 경우 주문 항목의 수량은 0 이상이어야 한다.
- 배달 주소는 비워 둘 수 없다.
- 숨겨진 메뉴는 주문할 수 없다.
- 주문한 메뉴의 가격은 실제 메뉴 가격과 일치해야 한다.
- 포장 주문을 등록한다(
createTakeout
)- 1개 이상의 등록된 메뉴로 포장 주문을 등록할 수 있다.
- 주문 유형이 올바르지 않으면 등록할 수 없다.
- 메뉴가 없으면 등록할 수 없다.
- 매장 주문을 제외한 주문의 경우 주문 항목의 수량은 0 이상이어야 한다.
- 숨겨진 메뉴는 주문할 수 없다.
- 주문한 메뉴의 가격은 실제 메뉴 가격과 일치해야 한다.
- 매장 주문을 등록한다(
createEatIn
)- 1개 이상의 등록된 메뉴로 매장 주문을 등록할 수 있다.
- 주문 유형이 올바르지 않으면 등록할 수 없다.
- 메뉴가 없으면 등록할 수 없다.
- 매장 주문은 주문 항목의 수량이 0 미만일 수 있다.
- 빈 테이블에는 매장 주문을 등록할 수 없다.
- 숨겨진 메뉴는 주문할 수 없다.
- 주문한 메뉴의 가격은 실제 메뉴 가격과 일치해야 한다.
- 주문을 접수한다(
accept
)- 접수 대기 중인 주문만 접수할 수 있다.
- 배달 주문을 접수되면 배달 대행사를 호출한다.
- 주문을 서빙한다(
serve
)- 접수된 주문만 서빙할 수 있다.
- 주문을 배달한다(
startDelivery
)- 배달 주문만 배달할 수 있다.
- 서빙된 주문만 배달할 수 있다.
- 주문 배달을 완료한다(
completeDelivery
)- 배달 중인 주문만 배달 완료할 수 있다.
- 주문을 완료한다(
complete
)- 배달 주문의 경우 배달 완료된 주문만 완료할 수 있다.
- 포장 및 매장 주문의 경우 서빙된 주문만 완료할 수 있다.
- 주문 테이블의 모든 매장 주문이 완료되면 빈 테이블로 설정한다.
- 완료되지 않은 매장 주문이 있는 주문 테이블은 빈 테이블로 설정하지 않는다.
- 주문을 조회한다(
findAll
)
- 배달 주문을 등록한다(