Files
sodalive-backend-spring-boot/docs/20260303_기부목록조회월범위한국시간수정.md

2.8 KiB

20260303_기부목록조회월범위한국시간수정

구현 항목

  • ChannelDonationService.ktgetChannelDonationList 내 조회 범위 수정
    • UTC 현재 시각을 기준으로 한국 시간(KST) 월 경계를 계산
    • KST 월 경계(해당월 1일 00:00:00 ~ 다음달 1일 00:00:00)를 UTC 조회 구간으로 변환
  • 채널 후원 조회 UTC 전달값 검증 테스트 보강
    • ChannelDonationServiceTest에서 전달된 UTC 범위를 KST로 역변환했을 때 월 경계가 유지되는지 검증

검증 결과

1차 구현

  • 무엇을: 기부 목록 조회 시 사용되는 시간 범위를 한국 시간 기준으로 변경
  • 왜: 현재 UTC 기준으로 1일~말일이 설정되어 있어 한국 사용자의 기대와 다름
  • 어떻게: ZoneId.of("Asia/Seoul")을 사용하여 현재 한국 시간을 구하고, 해당 월의 시작일 자정을 계산하도록 수정함.
    val kstZoneId = ZoneId.of("Asia/Seoul")
    val nowKst = ZonedDateTime.now(kstZoneId)
    val startDateTime = nowKst
        .with(TemporalAdjusters.firstDayOfMonth())
        .toLocalDate()
        .atStartOfDay()
    val endDateTime = startDateTime.plusMonths(1)
    
  • 결과: 기존 단위 테스트(ChannelDonationServiceTest) 4건 모두 통과 확인.
    • ./gradlew test --tests kr.co.vividnext.sodalive.explorer.profile.channelDonation.ChannelDonationServiceTest 실행 결과 성공.

2차 수정

  • 무엇을: getChannelDonationList에서 월 조회 시작/종료 시각을 KST 기준으로 계산한 뒤 UTC LocalDateTime으로 변환해 repository에 전달하도록 수정
  • 왜: KST 타임존만 적용하고 조회 파라미터를 UTC로 변환하지 않으면 조회 날짜가 기존과 동일하게 남아 월 경계가 의도대로 이동하지 않음
  • 어떻게:
    • ChannelDonationService.kt
      • ZonedDateTime.now(ZoneId.of("UTC"))로 현재 시각을 얻고 withZoneSameInstant(ZoneId.of("Asia/Seoul"))로 KST 변환
      • KST 월 시작/종료(startDateTimeKst, endDateTimeKst)를 각각 UTC로 변환해 startDateTime, endDateTime 생성
    • ChannelDonationServiceTest.kt
      • 캡처한 UTC 조회 파라미터를 KST로 역변환해 1일 00:00:00+1개월 월 경계를 검증하도록 수정
    • 정적 진단: lsp_diagnostics 실행 시 .kt 확장자 LSP 미구성으로 진단 불가(환경 제약)
    • 검증 명령:
      • ./gradlew test --tests "kr.co.vividnext.sodalive.explorer.profile.channelDonation.*" 실행: 성공
      • ./gradlew build 실행: 성공
      • ./gradlew tasks --all 실행: 성공
  • 결과: KST 월 경계가 UTC 조회 구간으로 반영되어 예시와 같은 형태(예: 2026-03-01 00:00:00 KST → 2026-02-28 15:00:00 UTC 시작)로 조회 조건이 구성됨