Daily Coffee는 Layered Architecture 기반의 Kotlin, Spring, JPA, Gradle, MySQL, Docker 및 도메인 주도 설계(Domain
Driven Design)를 활용한 최신 웹 서비스 개발을 보여줍니다.
Daily Coffee 커피 전문점 주문 시스템을 구현한다.
- 메뉴 등록
- 메뉴 가격 변경
- 메뉴 공개
- 메뉴 숨김
- 메뉴 조회
- 주문 등록
- 주문 접수
- 주문 준비
- 주문 배달
- 주문 배달 완료
- 주문 완료
- 주문 조회
한글명 |
영문명 |
설명 |
비속어 |
profanity |
비속어를 의미한다. 욕설 또는 불편한 단어를 포함할 수 있다. |
한글명 |
영문명 |
설명 |
상품 |
product |
메뉴를 관리하는 기준이 되는 데이터 |
이름 |
displayed name |
음식을 상상하게 만드는 중요한 요소 |
가격 |
price |
상품의 가격 |
한글명 |
영문명 |
설명 |
메뉴 |
menu |
메뉴 그룹에 속하는 실제 주문 가능 단위 |
이름 |
displayed name |
음식을 상상하게 만드는 중요한 요소 |
가격 |
price |
메뉴의 가격 |
금액 |
amount |
가격 * 수량 |
메뉴 그룹 |
menu group |
각각의 메뉴를 성격에 따라 분류하여 묶어둔 그룹 |
메뉴 상품 |
menu product |
메뉴에 속하는 수량이 있는 상품 |
메뉴 옵션 |
menu option |
메뉴에 추가로 등록할 수 있는 가격이 추가되는 옵션 |
숨겨진 메뉴 |
not displayed menu |
주문할 수 없는 숨겨진 메뉴 |
한글명 |
영문명 |
설명 |
주문 |
order |
집이나 직장 등 고객이 선택한 주소로 음식을 배달한다. |
주문 상태 |
order status |
주문이 생성되면 매장에서 주문을 접수하고 고객이 음식을 받기까지의 단계를 표시한다. |
주문 항목 |
order line item |
주문에 속하는 수량이 있는 메뉴 |
접수 대기 |
waiting |
주문이 생성되어 매장으로 전달된 단계 |
접수 |
accepted |
주문을 받고 음식을 조리하는 단계 |
서빙 |
served |
조리가 완료되어 음식이 나갈 수 있는 단계 |
배달 |
delivering |
배달원이 매장을 방문하여 배달 음식의 픽업을 완료하고 배달을 시작하는 단계 |
배달 대행사 |
delivery agency |
준비한 음식을 고객에게 직접 배달하는 서비스 |
배달 완료 |
delivered |
배달원이 주문한 음식을 고객에게 배달 완료한 단계 |
완료 |
completed |
배달 및 결제 완료 단계 |
Product
는 ID
와 DisplayedName
, Price
를 가진다.
DisplayedName
에는 Profanity
가 포함될 수 없다.
Price
는 0원 이상이어야 한다.
MenuGroup
은 ID
와 Name
을 가진다.
Menu
는 특정 MenuGroup
에 속한다.
Menu
는 ID
와 Displayed Name
, Price
, MenuProducts
, Options
를 가진다.
DisplayedName
에는 Profanity
가 포함될 수 없다.
Menu
의 가격은 MenuProducts
의 금액의 합보다 적거나 같아야 한다.
Menu
의 가격이 MenuProducts
의 금액의 합보다 크면 NotDisplayedMenu
가 된다.
MenuProduct
는 Product ID
와 Price
, Quantity
를 가진다.
Options
는 Name
과 Price
를 가진다.
Order
는 ID
, OrderStatus
, orderedDateTime
, DeliveryAddress
, OrderLineItems
를 가진다.
Menu
가 노출되고 있으며 판매되는 메뉴 가격과 일치하면 Order
가 생성된다.
Order
는 접수 대기 ➜ 접수 ➜ 서빙 ➜ 배달 ➜ 배달 완료 ➜ 주문 완료 순서로 진행된다.
Order
가 접수되면 DeliveryAgency
가 호출된다.
OrderLineItem
는 Price
와 Quantity
가진다.
OrderLineItem
의 Quantity
은 1보다 커야 한다.