✅ 17. 공통 로깅 AOP 적용 완료
목표: 서비스 및 컨트롤러 계층의 진입/반환 시점에 대한 자동 로그 기록을 통해 디버깅 및 흐름 파악 용이성 확보
클래스: aop.CommonLogger
기능 요약:
- @Aspect 기반 AOP 적용
- @Before: 메서드 진입 시 메서드명 및 파라미터 자동 로깅
- @AfterReturning: 반환값 자동 로깅 (70자 초과 시 요약 처리)
- 예외 처리는 GlobalExceptionHandler에서 별도 처리
- 적용 대상: com.eeerrorcode.lottomate.controller..*, service..* 전역 적용
📌 Postman 테스트 및 추천 알고리즘 디버깅 시 서비스 흐름을 자동으로 추적 가능해졌음
✅ 18. 추천 번호 API 1차 버전 구현 완료
목표: 통계 기반 알고리즘을 통해 사용자가 설정한 옵션에 맞는 로또 번호 6개 추천
클래스: LottoRecommendServiceImpl
주요 기능:
- recommendNumbers(RecommendOption option) 메서드 구현
- LottoRange ENUM 기반 회차 범위 지정
- 번호 출현 빈도 통계 기반으로 상위 번호 추출
- 동일 빈도 시 Collections.shuffle()로 무작위성 부여
- 짝홀 혼합 여부, 보너스 포함 여부 옵션 처리
- 결과는 TreeSet<Long>으로 정렬하여 반환
DTO 구성:
- RecommendOption: 회차 범위, 짝홀 필터, 보너스 포함 여부 등의 사용자 선택 옵션
- RecommendResponse: 추천된 번호 6개와 관련 정보 포함
✅ 19. Postman 테스트 및 Swagger 문서화 진행
- /recommend API Postman 테스트 완료 (모든 옵션 정상 작동 확인)
- Swagger 문서화 진행 중
- @Operation, @ApiResponse 어노테이션 적용
- 응답은 공통 DTO 형식인 CommonResponse<RecommendResponse>로 통일
✅ 20. 최신 회차 자동 크롤링 스케줄러 구현 완료
목표: 매주 토요일 오전 11시에 최신 로또 회차 정보를 자동으로 수집 및 저장
구현 방식:
- @Scheduled(cron = "0 0 11 ? * SAT") 사용
- LottoCrawlerService.crawlLatest() 실행
- 최신 회차 중복 여부 확인 후 데이터 저장 (lotto_results, lotto_result_details)
✅ 21. 관리자용 수동 크롤링 API 추가
경로: GET /api/lotto/crawl/latest
기능: 관리자 또는 테스트용으로 수동으로 최신 회차 데이터를 수집하는 엔드포인트
- Swagger 테스트 가능
- 이미 저장된 회차일 경우, 저장 없이 스킵
- 응답: CommonResponse<String> (성공 or 중복 안내 메시지)
✅ 22. 추천 알고리즘 모드별 로직 분리 완료
목표: 다양한 번호 추천 전략 제공을 위해 추천 모드를 분리
ENUM: RecommendMode
- HIGH_FREQUENCY: 출현 빈도가 높은 번호 추천
- LOW_FREQUENCY: 출현 빈도가 낮은 번호 추천
- MIXED: 고빈도 + 저빈도 조합 추천
구현 방식:
- recommendNumbers() 메서드 내 switch 분기 처리
- 모드별 추출 방식 분리 및 무작위성 보장 (shuffle())
✅ 23. Swagger 문서화 병행 진행
문서화 대상 API:
- /recommend: 로또 추천 API
- /stats/distribution: 번호 출현 통계
- /lotto/crawl/latest: 수동 크롤링 API
공통 사항:
- 모든 API에 @Operation, @ApiResponse 적용 중
- 응답 구조는 CommonResponse<T>로 통일하여 일관성 유지
✅ 24. 고정 번호 / 회피 번호 필터 기능 구현 완료
목표: 사용자가 지정한 번호를 강제로 포함하거나 제외할 수 있도록 옵션 확장
구현 방식:
- RecommendOption DTO에 fixedNumbers, avoidNumbers 리스트 필드 추가
- 추천 로직 내부에서 다음 처리 수행:
- fixedNumbers: 결과에 우선 포함되도록 처리
- avoidNumbers: 후보군에서 제거
- 필터 후 조건에 따라 남은 번호로 6개까지 채움
유의사항:
- 고정 번호와 회피 번호 중복 시 자동 필터링
- 고정 번호가 6개 이상일 경우 상위 6개만 반영
검증:
- Postman 테스트에서 모든 필터 조건 정상 작동 확인
- Swagger 문서에 필드 설명 추가 예정
📌 다음 작업 예정 항목 (업데이트)
- Swagger 문서 예제 및 설명 보강
- 추천 API 파라미터 유효성 검증 (@Valid, 커스텀 Validator)
- JavaDoc 주석 추가 (Service 계층 중심)
- 추천 기능 및 크롤링 기능에 대한 단위 테스트 작성
- 추천 결과 저장 기능 (추천 이력 저장, 마이페이지 연동 등)
'DEV-LOG > Lottomate' 카테고리의 다른 글
| [Project Lottomate] 개발일지(6) (0) | 2025.04.25 |
|---|---|
| [Project Lottomate] 개발일지(5) (0) | 2025.04.22 |
| [Project Lottomate] 개발일지(3) (0) | 2025.04.20 |
| [Project Lottomate] 개발일지(2) (0) | 2025.04.18 |
| [Project Lottomate] 개발일지(1) (0) | 2025.04.16 |