- 메뉴 그룹을 생성할 수 있다.(
POST /api/menu-groups
) - 전체 메뉴 그룹을 조회할 수 있다.(
GET /api/menu-groups
)
- 상품을 등록할 수 있다.(
POST /api/products
)- 상품의 가격이 올바르지 않으면 상품을 등록할 수 없다.
- 상품 가격은 0 이상이어야 한다.
- 상품의 가격이 올바르지 않으면 상품을 등록할 수 없다.
- 전체 상품을 조회할 수 있다.(
GET /api/products
)
- 메뉴를 등록할 수 있다(
POST /api/menus
)- 메뉴의 가격이 올바르지 않으면 메뉴를 등록할 수 없다.
- 메뉴의 가격은 0 이상이어야 한다.
- 등록하려는 메뉴의 가격은 메뉴를 구성하는 실제 제품들을 단품으로 주문하였을 때의 가격 합과 같거나 작아야한다.
- 등록하려는 메뉴 그룹이 올바르지 않으면 메뉴를 등록할 수 없다.
- 메뉴 그룹은 존재해야 한다.
메뉴를 구성하는 실제 제품의 데이터(Product)
목록이 올바르지 않으면 메뉴를 등록할 수 없다.- 목록에 포함된 데이터들은 존재해야 한다.
- 메뉴의 가격이 올바르지 않으면 메뉴를 등록할 수 없다.
- 전체 메뉴를 조회할 수 있다(
GET /api/menus
)
- 테이블을 생성할 수 있다.(
POST /api/tables
)- 테이블 생성 직후에는 아무 그룹에도 속해있지 않아야한다.
- 전체 테이블을 조회할 수 있다.(
GET /api/tables
) - 테이블이 비어있는지를 나타내는 상태를 수정할 수 있다.(
PUT /api/tables/{orderTableId}/empty
)- 빈 상태를 수정하려는 테이블이 올바르지 않으면 상태를 변경할 수 없다.
- 테이블은 존재해야 한다.
- 테이블은 그룹에 속해있지 않아야한다.
- 테이블이 조리중(COOKING)이나 식사중(MEAL)이면 빈 상태를 변경할 수 없다.
- 빈 상태를 수정하려는 테이블이 올바르지 않으면 상태를 변경할 수 없다.
- 주문 테이블의 손님 수를 변경한다.(
PUT /api/tables/{orderTableId}/number-of-guests
)- 변경하려는 손님의 수가 올바르지 않으면 손님 수를 변경할 수 없다.
- 손님의 수는 0 이상이어야 한다.
- 손님 수를 변경하려는 테이블이 올바르지 않으면 손님 수를 변경할 수 없다.
- 테이블은 존재해야 한다.
- 테이블은 비어있지 않아야한다.
- 변경하려는 손님의 수가 올바르지 않으면 손님 수를 변경할 수 없다.
- 주문을 등록할 수 있다.(
POST /api/orders
)- 주문하려는 메뉴 목록이 올바르지 않으면 주문을 등록할 수 없다.
- 메뉴 목록은 하나이상 있어야한다.
- 메뉴 목록에 포함된 메뉴들은 모두 등록된 메뉴여야한다.
- 주문하려는 테이블이 올바르지 않으면 주문을 등록할 수 없다.
- 테이블은 존재해야 한다.
- 테이블은 비어있지 않아야한다.
- 주문이 등록되면 해당 주문은 조리중(COOKING) 상태가 된다.
- 주문하려는 메뉴 목록이 올바르지 않으면 주문을 등록할 수 없다.
- 전체 주문을 조회할 수 있다.(
GET /api/orders
) - 주문 상태를 변경할 수 있다.(
PUT /api/orders/{orderId}/order-status
)- 주문이 올바르지 않으면 주문 상태를 변경할 수 없다.
- 주문은 존재해야 한다.
- 주문 상태는 조리중(COOKING)이나 식사중(MEAL)이어야한다.
- 주문이 올바르지 않으면 주문 상태를 변경할 수 없다.
- 테이블을 묶어 그룹을 지정할 수 있다.(
POST /api/table-groups
)- 그룹을 지정하려는 테이블 목록이 올바르지 않으면 그룹으로 지정할 수 없다.
- 목록에 둘 이상의 테이블이 포함되어야한다.
- 목록에 포함된 테이블들은 모두 등록된 테이블이여야 한다.
- 목록에 포함된 테이블들은 모두 비어있어야 한다.
- 목록에 포함된 테이블들은 모두 소속된 다른 그룹이 없어야한다.
- 그룹이 지정된 테이블들은 비어 있지 않은 상태가 된다.
- 그룹을 지정하려는 테이블 목록이 올바르지 않으면 그룹으로 지정할 수 없다.
- 묶여있는 테이블 그룹을 해제할 수 있다.(
DELETE /api/table-groups/{tableGroupId}
)- 그룹에 속한 테이블 목록이 올바르지 않으면 그룹을 해제할 수 없다.
- 목록에 포함된 테이블들의 상태가 하나라도 조리중(COOKING)이나 식사중(MEAL)인 경우 그룹을 해제할 수 없다.
- 그룹이 해제된 테이블들은 비어 있지 않은 상태가 된다.
- 그룹에 속한 테이블 목록이 올바르지 않으면 그룹을 해제할 수 없다.
한글명 | 영문명 | 설명 |
---|---|---|
상품 | 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 | 포장하지 않고 매장에서 식사하는 것 |