Repository files navigation
메뉴 그룹 (Menu Group)
메뉴 (Menu)
한글명
영문명
설명
상품
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
포장하지 않고 매장에서 식사하는 것
kitchenpos 패키지 코드를 분석하여 요구사항을 README.md에 작성한다.
모든 Business Object에 대한 테스크 코드를 @SpringBootTest 를 이용한 통합 테스트 코드 또는 @ExtendWith(MockitoExcention.class)를 이용한 단위 테스트 코드를 작성한다.
Lombok 없이 미션을 진행한다.
단위 테스트하기 어려운 코드와 단위 테스트 가능한 코드를 분리해 단위 테스트 가능한 코드에 대해 단위 테스트를 구현한다.
메뉴의 이름과 가격이 변경되면 주문 항목도 함께 변경된다. 메뉴 정보가 변경되더라도 주문 항목이 변경되지 않게 구현한다.
클래스 간의 방향도 중요하고 패키지 간의 방향도 중요하다. 클래스 사이, 패키지 사이의 의존 관계는 단방향이 되도록 해야 한다.
다른 패키지의 엔티티 직접참조 -> 간접참조
도메인 이벤트 활용
Validator 주입
Gradle의 멀티 모듈 개념을 적용해 자유롭게 서로 다른 프로젝트로 분리해 본다.
컨텍스트 간의 독립된 모듈로 만들 수 있다.
계층 간의 독립된 모듈로 만들 수 있다.
의존성 주입, HTTP 요청/응답, 이벤트 발행/구독 등 다양한 방식으로 모듈 간 데이터를 주고받을 수 있다.
module-main
module-common
module-product
module-menu
module-order
You can’t perform that action at this time.