| Package | Class | Description |
|---|---|---|
| Container | DependencyInjectionContainer | 의존성 주입 컴포넌트 컨테이너 |
| Controller | PurchaseLottoController | 메인 로직 컨트롤러 |
| Service | AmountService | `PurchaseAmount` & `ProfitAmount` 비즈니스 로직 처리 |
| LottoService | `Lotto` & `Lottos` 비즈니스 로직 처리 | |
| Model | PurchaseAmount | 로또 구입 금액 |
| ProfitAmount | 로또 당첨 금액 | |
| Bonus | 로또의 보너스 번호 | |
| WinningLotto | 로또의 당첨 번호 & `Bonus`를 관리하는 일급 컬렉션 | |
| Lotto | 로또의 숫자를 관리하는 일급 컬렉션 | |
| PurchasedLottos | 구매한 `Lotto`(들)을 관리하는 일급 컬렉션 | |
| Command | PurchaseAmountCommand | 로또 구입 금액 입력 검증 커맨드 |
| LottoCommand | 로또의 당첨 번호 입력 검증 커맨드 | |
| BonusCommand | 로또의 보너스 번호 입력 검증 커맨드 | |
| View | View | 사용자 입/출력 처리 |
| DTO | PurchaseAmountUserInput | 로또 구입 금액 사용자 입력 |
| WinningLottoUserInput | 로또의 당첨 번호 사용자 입력 | |
| BonusUserInput | 로또의 보너스 번호 사용자 입력 | |
| MatchResult | `PurchaseLottos`의 당첨 결과 | |
| MatchResults | `MatchResult`의 일급 컬렉션 | |
| Exception | GlobalException | 전역 에러 처리 |
| 기능 | 컴포넌트 | 구현 | 브랜치 |
|---|---|---|---|
| 예외처리 | GlobalException | ✅전역 예외처리 | exception |
| InputException | ✅사용자 입력 관련 예외처리 | ||
| AmountException | ✅금액 관련 예외처리 | ||
| LottoException | ✅로또 관련 예외처리 | ||
| 로또 구입 금액 사용자 입력 | PurchaseAmountCommand | ✅`PurchaseAmount` 유효성 검증 | feat/purchase-amount-input |
| View | ✅`PurchaseAmountUserInput` 사용자 입력 처리 | ||
| PurchaseAmountCommand | ✅`PurchaseAmountUserInput` 반환 | ||
| 로또 구매 | Lotto | ✅1장 가격 상수 | feat/purchase-lottos |
| LottoService | ✅`Lotto` 1장 가격 반환 | ||
| AmountService | ✅`PurchasedLottos` 구매 | ||
| PurchasedLottos | ✅`PurchasedLottos` 생성 | ||
| LottoService | ✅`PurchasedLottos` 발행 | ||
| Lotto | ✅`Lotto` 오름차순 정렬 | ||
| 리팩토링 | View | ✅`displayOutPut` 메서드 추가 | refactor |
| ValidateCommand | ✅사용자 입력 재시도 로직 추가 | ||
| Lotto | ✅`LottoTest` 통과 하기 위한 검증 로직 추가 | ||
| 당첨 번호 입력 | LottoCommand | ✅`Lotto` 당첨 번호 유효성 검증 | feat/winning-lotto-input |
| View | ✅`WinningLottoUserInput` 당첨 번호 사용자 입력 처리 | ||
| LottoCommand | ✅`WinningLottoUserInput` 당첨 번호 반환 | ||
| LottoService | ✅`WinningLottoUserInput`를 `WinningLotto`로 변환 | ||
| 보너스 번호 입력 | BonusCommand | ✅`Bonus` 보너스 번호 유효성 검증 | feat/lotto-bonus-input |
| View | ✅`Bonus` 보너스 번호 사용자 입력 처리 | ||
| ✅`Bonus` 반환 | |||
| LottoService | ✅`WinningLotto`에 보너스 번호 추가 | ||
| 로또 당첨 조회 | LottoService | ✅`WinningLotto`와 `PurchasedLottos` 매칭 여부 | feat/match-winning-lotto |
| LottoService | ✅`MatchResults` 반환 | ||
| MatchResult | ✅`MatchResult` 생성 | ||
| MatchResults | ✅`MatchResult` 추가 | ||
| 로또 당첨 통계 출력 | ProfitRate | ✅`ProfitRate` 수익률 생성 | feat/match-winning-lotto-output |
| ProfitAmount | ✅`ProfitAmount` 수익 금액 생성 | ||
| AmountService | ✅`ProfitRate` 반환 | ||
| LottoProfitCommand | ✅`MatchResult` & `ProfitRate`당첨 금액 및 수익률 출력 커맨드 생성 | ||
| View | ✅`LottoProfitCommand`로 수익률 출력 | ||
| 출력 리팩토링 | OutputCommand | ✅출력 로직 개선 | refactor-output |
| 로또 컨트롤러 | LottoController | ✅로직 조합 | dev/controller |
| 의존성 주입 | DependencyInjectionContainer | ✅컴포넌트 의존성 주입 | dev/dependency |
| 출력 포맷 리팩토링 | ValidateCommand | ✅개행문자 추가 | refactor-output-message |
| ✅구매 금액 자료형 변경 | |||
| ✅숫자 포맷 가독성 향상 | |||
| LottoConstant | ✅상수 병합 | ||
| Command | ✅패키지 수정 | ||