diff --git a/README.md b/README.md index 2db86af5..f111c0d7 100644 --- a/README.md +++ b/README.md @@ -94,10 +94,11 @@ docker compose -p kitchenpos up -d - 완료되지 않은 매장 주문이 있는 주문 테이블은 빈 테이블로 설정하지 않는다. - 주문 목록을 조회할 수 있다. -## 용어 사전 +## 모델링 ### 상품 +#### 용어 사전 | 한글명 | 영문명 | 설명 | |------|---------------|------------------------------------| | 상품 | Product | 고객에게 판매를 목적으로 보유한 물건으로 메뉴를 구성하는 단위 | @@ -105,15 +106,21 @@ docker compose -p kitchenpos up -d | 비속어 | profanity | 욕설 또는 저속한 표현. | | 상품가격 | Product Price | 상품의 가격, 0원 이상이여야 한다. | -### 메뉴그룹 +#### 속성 +- `Product`는 `UUID` `Product Name`, `Product Price`을 가지고 있다. + +#### 기능 +- `Product Price`는 0보다 큰 값이어야 한다.' +- `Product Name`에는 `profanity`가 포함될 수 없다. + +### 메뉴 +#### 용어 사전 | 한글명 | 영문명 | 설명 | |----------|-----------------|--------------------------------| | 메뉴 그룹 | Menu Group | 메뉴의 집합이며, 메뉴는 특정한 메뉴그룹에 속해야한다. | | 메뉴 그룹 이름 | Menu Group Name | 메뉴 그룹의 이름을 나타낸다. | -### 메뉴 - | 한글명 | 영문명 | 설명 | |-----------|--------------------|------------------------------------------------| | 메뉴 | Menu | 고객에게 판매를 목적으로 보유한 물건으로 메뉴를 구성하는 단위. | @@ -124,7 +131,34 @@ docker compose -p kitchenpos up -d | 메뉴 노출 상태 | Menu Displayed | 메뉴의 노출 상태를 나타낸다. | | 메뉴 미노출 상태 | Menu Not Displayed | 메뉴의 미노출 상태를 나타낸다. | -### 주문테이블 +#### 속성 +- `Menu Group`은 `UUID`, `Menu Group Name`을 가지고 있다. +- `Menu`는 `UUID` `Menu Displayed`, `Menu Price`, `Menu Product`, ` Menu Name` 를 가지고 있다. +- `Menu`는 특정 `MenuGroup`에 속한다. + +#### 기능 +- `Menu Price`는 `Menu Product`의 금액의 합보다 적거나 같아야 한다. +- `Menu Price`가 `Menu Product`의 금액의 합보다 크면 `Menu Not Displayed`가 된다. +- `Menu Product`는 가격과 수량을 가진다. +- `Menu Name`에는 `Profanity`가 포함될 수 없다. + +### 매장 주문 + +#### 용어 사전 +| 한글명 | 영문명 | 설명 | +|---------------|-----------|---------------------------------| +| 주문 | Order | 고객이 매장에서 주문한 상품정보를 나타낸다. | +| 주문 아이템 | Order Line Item | 고객이 주문한 상품 목록 정보(메뉴, 수량). | +| 주문 테이블 | order table | 매장에서 주문이 발생하는 테이블 | +| 주문 종류(매장) | EAT_IN | 매장 주문 종류. | +| 방문한 손님 수 | number of guests | 매장 테이블에 앉은 손님 수 | +| 주문 상태 | Order Status | 주문의 상태를 나타낸다. | +| 주문 상태 흐름 | WAITING, ACCEPTED, SERVED, COMPLETED | 주문의 상태 흐름 | +| 주문 상태(접수 대기중) | WAITING | 고객이 주문을 요청 한 상태 | +| 주문 상태(접수 완료) | ACCEPTED | 고객의 주문이 접수 완료된 상태. | +| 주문 상태(서빙 완료) | SERVED | 고객의 주문이 매장 주문이 주문 테이블에 서빙완료된 상태. | +| 주문 상태(주문 완료) | COMPLETED | 고객이 식사를 완료하고 `주문테이블`을 떠난 상태 | + | 한글명 | 영문명 | 설명 | |------------|------------------|-------------------------------| | 주문 테이블 | Order Table | 매장 내에서 고객이 식사할 수 있는 테이블을 나타낸다. | @@ -133,11 +167,25 @@ docker compose -p kitchenpos up -d | 테이블 점유 상태 | Occupied | 테이블의 점유 상태를 나타낸다. | | 테이블 미점유 상태 | Not Occupied | 테이블의 미점유 상태를 나타낸다. | -#### 배달 주문(Delivery Order) +#### 속성 +- `Order`는 `UUID` `Order Status`, 주문 시간, `Order Line Items`를 가지고 있다. +- `Order Table `은 `UUID` `Order Table Name`, `Number Of Guests`를 가지고 있다. +- `Order Line Items`는 가격과 수량을 가지고 있다. +- `Order`는 접수 대기중 ➜ 접수 완료 ➜ 서빙 완료 ➜ 주문 완료 순서로 진행한다. + +#### 기능 +- `Order Table `의 추가 `Order`는 `Order Table`에 쌓이며 모든 `Order`가 완료되면 `Not Occupied`이 된다. +- `Not Occupied`인 경우 `Number Of Guests`는 0이며 변경할 수 없다. +- `Order Line Item`의 `Menu`가 `Menu Displayed`이며 `Menu Price`과 일치하면 `Order`가 생성한다. + +### 배달 주문 + +#### 용어 사전 | 한글명 | 영문명 | 설명 | |---------------|-----------------------------------------------------|----------------------------------| | 주문 | order | 고객이 배달로 주문한 상품정보를 나타낸다. | | 주문 종류(배달) | DELIVERY | 배달 주문 종류. | +| 주문 상태 | Order Status | 주문의 상태를 나타낸다. | | 주문 상태 흐름 | WAITING, ACCEPTED, SERVED, DELIVERING, DELIVERED, COMPLETED | 주문의 상태 흐름 | | 주문 상태(접수 대기중) | WAITING | 배달 주문이 접수완료 되기 전 상태. | | 주문 상태(접수 완료) | ACCEPTED | 배달 주문이 접수완료된 상태. | @@ -148,30 +196,36 @@ docker compose -p kitchenpos up -d | 배달 대행사 | Delivery Agent | 주문을 배달해 주는 서비스를 제공하는 대행사. | | 배달 주소 | Delivery Address | 배달 주소. | -#### 포장 주문(TakeOut Order) +#### 속성 +- `Order`는 `UUID` `OrderStatus`, 주문 시간, `Delivery Address`, `Order Line Item`를 가진다. +- `Order Line Item`는 가격과 수량을 가진다. +- `Order Line Item`의 수량은 1보다 커야 한다. +- `Order`는 접수 대기중 ➜ 접수 완료 ➜ 준비 완료 ➜ 배달 중 ➜ 배달 완료 ➜ 주문 완료 순서로 진행된다. + +#### 기능 +- `Menu`가 `Menu Displayed`이며 메뉴 가격과 일치하면 `Order`가 생성된다. +- `Order`가 접수되면 `Delivery Agent`가 호출된다. + +### 포장 주문 + +#### 용어 사전 | 한글명 | 영문명 | 설명 | |---------------|-----------|---------------------------| | 주문 | Order | 고객이 포장 주문한 상품정보를 나타낸다. | | 주문 아이템 | Order Line Item | 고객이 주문한 상품 목록 정보(메뉴, 수량). | | 주문 종류(포장) | TAKEOUT | 포장 주문 종류. | +| 주문 상태 | Order Status | 주문의 상태를 나타낸다. | | 주문 상태 흐름 | WAITING, ACCEPTED, SERVED, COMPLETED | 주문의 상태 흐름 | | 주문 상태(접수 대기중) | WAITING | 포장 주문이 접수되기 전 상태. | | 주문 상태(접수 완료) | ACCEPTED | 포장 주문이 접수 완료된 상태. | | 주문 상태(서빙 완료) | SERVED | 포장 주문을 수령 가능한 상태. | | 주문 상태(주문 완료) | COMPLETED | 포장 주문을 수령한 상태. | -#### 매장 주문(EatIn Order) -| 한글명 | 영문명 | 설명 | -|---------------|-----------|---------------------------------| -| 주문 | Order | 고객이 매장에서 주문한 상품정보를 나타낸다. | -| 주문 아이템 | Order Line Item | 고객이 주문한 상품 목록 정보(메뉴, 수량). | -| 주문 테이블 | order table | 매장에서 주문이 발생하는 테이블 | -| 주문 종류(매장) | EAT_IN | 매장 주문 종류. | -| 방문한 손님 수 | number of guests | 매장 테이블에 앉은 손님 수 | -| 주문 상태 흐름 | WAITING, ACCEPTED, SERVED, COMPLETED | 주문의 상태 흐름 | -| 주문 상태(접수 대기중) | WAITING | 고객이 주문을 요청 한 상태 | -| 주문 상태(접수 완료) | ACCEPTED | 고객의 주문이 접수 완료된 상태. | -| 주문 상태(서빙 완료) | SERVED | 고객의 주문이 매장 주문이 주문 테이블에 서빙완료된 상태. | -| 주문 상태(주문 완료) | COMPLETED | 고객이 식사를 완료하고 `주문테이블`을 떠난 상태 | +#### 속성 +- `Order`는 `UUID`, `OrderStatus`, 주문 시간, `OrderLineItems`를 가진다. +- `Order Line Item`는 가격과 수량을 가진다. +- `Order Line Item`의 수량은 1보다 커야 한다. +- `Order`는 접수 대기중 ➜ 접수 완료 ➜ 서빙 완료 ➜ 주문 완료 순서로 진행된다. -## 모델링 +#### 기능 +- `Menu`가 `Menu Displayed`이며 메뉴 가격과 일치하면 `Order`가 생성된다.