@@ -0,0 +1,150 @@
+# 🎄 크리스마스 프로모션
+
+## 🤔 패키지 구상
+
+### 1차 구상
+![스크린샷 2023-11-10 오후 3.44.35.png](..%2F..%2F..%2F%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202023-11-10%20%EC%98%A4%ED%9B%84%203.44.35.png)
+
+### 최종결과 & 다이어그램
+![스크린샷 2023-11-15 오후 2.02.20.png](..%2F..%2F..%2F%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202023-11-15%20%EC%98%A4%ED%9B%84%202.02.20.png)
+
+![스크린샷 2023-11-14 오후 8.08.45.png](..%2F..%2F..%2F%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202023-11-14%20%EC%98%A4%ED%9B%84%208.08.45.png)
+## 🚀 작동 흐름
+![스크린샷 2023-11-15 오후 2.01.12.png](..%2F..%2F..%2F%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202023-11-15%20%EC%98%A4%ED%9B%84%202.01.12.png)
+
+## 🕹이벤트 목표
+1. 중복된 할인과 증정을 허용해서, 고객들이 혜택을 많이 받는다는 것을 체감할 수 있게 하는 것
+2. 올해 12월에 지난 5년 중 최고의 판매 금액을 달성
+3. 12월 이벤트 참여 고객의 5%가 내년 1월 새해 이벤트에 재참여하는 것
+
+## 🖨 출력 예시
+```
+안녕하세요! 우테코 식당 12월 이벤트 플래너입니다.
+12월 중 식당 예상 방문 날짜는 언제인가요? (숫자만 입력해 주세요!)
+3
+주문하실 메뉴를 메뉴와 개수를 알려 주세요. (e.g. 해산물파스타-2,레드와인-1,초코케이크-1)
+티본스테이크-1,바비큐립-1,초코케이크-2,제로콜라-1
+12월 3일에 우테코 식당에서 받을 이벤트 혜택 미리 보기!
+ 
+<주문 메뉴>
+티본스테이크 1개
+바비큐립 1개
+초코케이크 2개
+제로콜라 1개
+ 
+<할인 전 총주문 금액>
+142,000원
+ 
+<증정 메뉴>
+샴페인 1개
+ 
+<혜택 내역>
+크리스마스 디데이 할인: -1,200원
+평일 할인: -4,046원
+특별 할인: -1,000원
+증정 이벤트: -25,000원
+ 
+<총혜택 금액>
+-31,246원
+ 
+<할인 후 예상 결제 금액>
+135,754원
+ 
+<12월 이벤트 배지>
+산타
+```
+
+## ⚠️ 주의 사항 & 학습 목표
+> - 클래스(객체)를 분리 (객체를 객체스럽게 사용)
+> - 메서드의 길이는 15라인을 넘지 않도록
+> - 비즈니스 로직과 UI로직 분리
+> - indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현
+> - 3항 연산자, else 사용 금지
+> - 도메인 로직에 단위 테스트를 구현
+
+## 📝 기능 구현 리스트
+- [X] : 정수 검증 클래스 생성 `[NumberValidator]`
+- [X] : 방문날짜 입력 받기
+  - [X] : 게임 안내 관련 메시지 Enum 생성 `[GuideMessage]`
+  - [X] : `VisitDate` 클래스 생성
+  - [X] : 🚨 문자 & 공백 입력시 예외발생
+  - [X] : 🚨 1~31이 아닌 경우 예외발생
+  - `[ERROR] 유효하지 않은 날짜입니다. 다시 입력해 주세요.`
+
+- [X] : 메뉴 입력 받기
+  - [X] : menu Enum 생성
+  - [X] : `Menu` 인터페이스 생성
+  - [X] : `Order` 클래스 생성
+  - [X] : 🚨 공백 입력시 예외 발생
+  - [X] : 🚨 없는 메뉴 입력할 경우 예외발생
+  - [X] : 🚨 메뉴는 1이상만 입력가능
+  - [X] : 🚨 중복으로 입력시 예외발생
+  - [X] : 🚨 음료만 주문 안됨
+  - [X] : 🚨 메뉴는 한번에 20개 까지 가능
+  - `[ERROR] 유효하지 않은 주문입니다. 다시 입력해 주세요.`
+
+- [X] : 할인 기능 구현
+  - [X] : DiscountPolicy 인터페이스 생성
+  - [X] : WeekdayDiscount 클래스 생성
+  - [X] : WeekendDisCount 클래스 생성
+  - [X] : ChristmasDdayDisCount 클래스 생성
+  - [X] : SpecialDiscount 클래스 생성
+  - [X] : DiscountService / DiscountConfig 클래스 생성
+- [X] : `Amount` 인터페이스 생성
+  - [X] : TotalOrderAmount 클래스 생성
+  - [X] : DiscountAmount 클래스 생성
+  - [X] : FinalPaymentAmount 클래스 생성
+- [X] : `PresentEvent` 클래스 생성
+- [X] : `Badge` 클래스 생성
+  - 5천 원 이상: 별
+  - 1만 원 이상: 트리
+  - 2만 원 이상: 산타
+
+- [X] : 출력
+  - [X] : 주문 메뉴
+  - [X] : 할인 전 총주문 금액
+  - [X] : 증정 메뉴
+  - [X] : 혜택 내역
+  - [X] : 총혜택 금액 내역
+  - [X] : 할인 후 예상 결제 금액
+  - [X] : 12월 이벤트 뱃지
+
+## 🛠 테스트 코드
+- `NumberValidatorTest`
+  - 정수 검증
+- `VisitDateTest`
+  - 방문 날짜 예외 검증
+  - 평일, 주말, 특별, 크리스마스 할인 적용 가능한지 검증
+- `OrderTest`
+  - 주문 예외 검증
+  - 주문 목록에 해당 카테고리 메뉴의 수 반환 검증
+  - 주문 목록에 해당 카테고리가 존재하는지 반환 검증
+- **Discount**
+  - `DiscountServiceTest`
+    - 혜택금액 반환 검증
+  - `WeekdayDiscountTest`
+    - 방문 날짜 평일인지 검증
+    - 디저트의 수량만큼 평일 할인금액 반환 검증
+  - `WeekendDiscountTest`
+    - 방문 날짜 주말인지 검증
+    - 메인음식의 수량만큼 주말 할인금액 반환 검증
+  - `SpecialDiscountTest`
+    - 방문 날짜 특별할인 날짜인지 검증
+  - `ChristmasDdayDiscountTest`
+    - 방문 날짜가 크리스마스 디데이 할인 날짜인지 검증
+    - 방문 날짜에 따라서 할인금액 반환 검증
+
+- `BadgeTest`
+  - 할인 금액에 따른 뱃지 반환 검증
+- `PresentEventTest`
+  - 총 주문금액 기준 증정품 유/무 검증
+  - 총 주문금액 기준 증정품 목록 반환 검증
+
+- **Amount**
+  - `TotalOrderAmountTest`
+    - 총 주문금액 반환 검증
+  - `FinalPaymentAmountTest`
+    - 최종 결제금액 반환 검증
+  - `TotalBenefitAmountTest`
+    - 총 혜택금액 반환 검증
+    - 혜택금액이 없을 경우 없음 반환 검증

리뷰: 세세한 부분이지만 테스트 코드에 대해서도 각자 어떤 역할을 검증하는지 나와있으니까 보기 좋은 것 같아요! 저도 README 작성할 때 참고하겠습니다!