Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] 랭킹 조회를 위한 WeekNumberCalculator 구현 #175

Open
wants to merge 5 commits into
base: develop
Choose a base branch
from

Conversation

librarywon
Copy link
Contributor

resolved #174

AS-IS

기존 랭킹을 불러오는 로직은 아래와 같습니다.

  1. 오늘날짜를 서버에 보내 weekNumber를 받는다
  2. weekNumber를 서버에 보내 랭킹 정보를 받는다
  3. 저번주 혹은 다음주로 이동한다면 weekNumber에 +-1 를 해주어 이동한다.

해당 로직에는 2가지 문제점이 있습니다.

  1. 예를 들어 25년도 1번째 주차에서 지난주로 이동한다면 24년도 마지막 주차로 넘어갈 때 1년에는 52주 혹은 53주이기 때문에 어떤 값이 옳은지 알 수 없습니다. 현재 로직은 그저 +- 1만 하는 로직이기 때문입니다.
  2. 24년도 마지막 주차에서 25년도 첫번째 주차로 넘어가는 것도 현재 주차가 마지막 주차인지 인식할 수 없기 때문에 넘어갈 수 없습니다.
  3. 불필요한 API 통신이 발생한다 최초 랭킹을 가져오는데 최소 2회 API 통신 필요

TO-BE

  • 문제 해결을 위해 weekNumber를 계산하는 WeekNumberCalculator를 구현하였습니다.
  • 랭킹에서 중요한 도메인 로직이라고 판단하여 domain에 구현하였고 WeekNumberCalculator Test 코드도 작성하였습니다.
  • 현재 주차가 최신 주차라면 다음주로 넘어가는 버튼을 비활성화하고 색상을 변경하는 기능을 추가하였습니다.

WeekNumberCalculator

weekNumber를 구분하는 기준(ISO기준)은 아래와 같습니다.

  • 주는 월요일~일요일 단위.
  • 해당 달의 최소 4일 포함 되어야 합니다.
    • 예를 들어 아래 사진같이25년 12월 31일은 12월이 3일 밖에 속하지 않았기 때문에 26년도 1주차에 포함됩니다. (테스트 코드에 존재합니다)
스크린샷 2025-02-27 오후 5 38 13 - 해당 주의 weekNumber는, 지정 연도(weekBasedYear)의 첫 주(ISO 기준)부터 몇 번째 주인지를 의미합니다.

예상 문제점

  • 서버가 주차를 계산하는 로직이 달라진다면 클라이언트도 같이 변경을 해주어야 합니다.

KEY-POINT

  • 궁금한점은 언제든 질문 주세요!

SCREENSHOT (Optional)

Screen_recording_20250227_174016.mp4

@librarywon librarywon requested a review from no1msh February 27, 2025 08:41
@librarywon librarywon self-assigned this Feb 27, 2025
Copy link
Contributor

@no1msh no1msh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

작은 PR이라 보기좋았습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature] 랭킹 조회를 위한 weekNumber를 계산하는 로직 개발
2 participants