본문 바로가기
DEV-LOG/Lottomate

[Project Lottomate] 개발일지(6)

by DahnDellDev 2025. 4. 25.

29. 사용자 로또 응모 기록 저장 기능 구현 완료
목표: 사용자가 추천 받은 번호 또는 직접 선택한 번호를 응모 기록으로 DB에 저장
테이블: lotto_user_history
구현 내용:

  • LottoUserHistoryRequest DTO 설계 (번호 6개 + drawRound 등 포함)
  • 컨트롤러: POST /api/lotto/user/history
  • 서비스: saveUserLottoHistory(userId, request)로 DB에 저장
  • 중복 저장 방지를 위해 복합 유니크 제약(userId + drawRound)

📌 사용자가 응모한 번호를 기반으로 당첨 여부 평가, 마이페이지 기록에 활용 가능


30. 당첨 결과 자동 평가 기능 구현 완료
목표: 저장된 사용자 응모 번호에 대해 당첨 등수/금액 자동 계산
DTO: LottoUserWinningUpdateRequest
주요 로직:

  • 기존 응모 기록과 실제 회차 당첨번호 비교
  • 일치 개수 및 보너스 번호 포함 여부 기반으로 등수 계산
  • 등수별 당첨 금액 조회 후 DB 업데이트

결과 반영 항목:

  • winningRank: 1~5등
  • winningAmount: 금액
  • isClaimed: false (초기 상태)

📌 등수 계산 후 마이페이지에서 당첨 여부를 확인 가능하게 됨


31. 사용자 응모 기록 조회 API 구현 완료
경로: GET /api/lotto/user/history
파라미터: userId, sort, limit, drawRound 등
기능:

  • 사용자별 응모 기록을 리스트로 반환
  • 최신순 정렬 및 페이징/필터 지원
  • 반환 DTO: LottoUserHistoryResponse (번호, 회차, 당첨 여부 등 포함)

📌 마이페이지 구현을 위한 핵심 API 완성!


32. 관리자용 수동 평가 API 구현 완료
경로: POST /api/lotto/admin/evaluate
설명:

  • 특정 회차를 기준으로 전체 사용자 응모 기록을 평가
  • 크롤링 완료 후 누락된 회차를 수동으로 반영할 수 있음
  • Swagger에서 테스트 가능

📌 회차 누락, 수동 정산 등의 상황에 대응 가능한 유틸성 기능


33. 사용자 인증 기반 요청 처리 흐름 완성
관련 파일: AuthContext.jsx, UseAxios.jsx
기능 요약:

  • 로그인 시 이메일, token, refreshToken 저장
  • 전역 인증 상태 관리 (isLoggedIn 포함)
  • useAxios 훅을 통한 Authorization 자동 삽입
  • multipart 요청 대응도 가능

📌 모든 민감 API 요청은 토큰 기반으로 보안 강화됨


34. 공통 응답/에러 포맷 완성 및 Swagger 연동
클래스: CommonResponse, ErrorResponse
Swagger 어노테이션:

  • 각 필드에 @Schema를 통해 메시지, 예시, 구조 명시
  • 에러 포맷 구조(code, message, errors) 문서화

📌 클라이언트 협업 시 명확한 응답/에러 포맷 공유 가능


35. 공통 로깅 AOP 흐름 전면 적용
클래스: CommonLogger
적용 대상: 모든 Controller, Service 계층
기능:

  • 진입 시 파라미터 출력
  • 반환 시 결과 요약 로그 출력 (70자 이상 시 길이만 표시)

📌 모든 추천, 응모, 평가 흐름의 트래킹 로그 자동화


36. 회차별 번호 등장 여부 히트맵 API 구현 완료
목표: 회차별로 1~45번 번호 중 어떤 번호가 등장했는지 시각화하기 위한 히트맵 데이터 제공
경로: GET /api/lotto/stats/history-heatmap
응답 구조: SortedMap<Long, Map<Integer, Boolean>>

  • key: 회차 번호
  • value: Map<번호, 등장여부(true/false)>

📌 Chart.js Matrix 플러그인을 활용한 히트맵 구현 기반 API로, 시각화 완성도 향상


37. 프론트엔드 LottoHeatmap 컴포넌트 구현 완료
기능 요약:

  • Chart.js 기반 매트릭스(히트맵) 차트 구성
  • 사용자 입력으로 시작 회차, 끝 회차 설정 가능
  • Fallback 예외 처리 및 로딩 상태 관리 포함

📌 시각적으로 전체 회차의 번호 출현 패턴을 한눈에 보여주는 통계 시각화 컴포넌트 완성


📌 다음 작업 예정 차트 항목

  • 번호 출현 빈도 막대그래프 통계 API 및 차트 구현
  • 당첨 등수 분포 차트 (1~5등)
  • 사용자 응모 히스토리 기반 필터링 및 시각화 확장

 

'DEV-LOG > Lottomate' 카테고리의 다른 글

[Project Lottomate] 개발일지(5)  (0) 2025.04.22
[Project Lottomate] 개발일지(4)  (0) 2025.04.21
[Project Lottomate] 개발일지(3)  (0) 2025.04.20
[Project Lottomate] 개발일지(2)  (0) 2025.04.18
[Project Lottomate] 개발일지(1)  (0) 2025.04.16