test #340

Merged
klaus merged 11 commits from test into main 2025-09-14 08:51:12 +00:00
1 changed files with 15 additions and 7 deletions
Showing only changes of commit 4adc3e127c - Show all commits

View File

@ -23,16 +23,24 @@ object RankingWindowCalculator {
fun now(prefix: String = "popular-chat-character"): RankingWindow { fun now(prefix: String = "popular-chat-character"): RankingWindow {
val now = ZonedDateTime.now(ZONE) val now = ZonedDateTime.now(ZONE)
val todayBoundary = now.toLocalDate().atTime(BOUNDARY_HOUR, 0, 0).atZone(ZONE) val todayBoundary = now.toLocalDate().atTime(BOUNDARY_HOUR, 0, 0).atZone(ZONE)
val (start, endExclusive, nextBoundary) = if (now.isBefore(todayBoundary)) {
val start = todayBoundary.minusDays(1) // 일일 순위는 "전날" 완료 구간을 보여주기 위해, 언제든 직전 경계까지만 집계한다.
Triple(start, todayBoundary, todayBoundary) // 예) 2025-09-14 20:00:00 직후에도 [2025-09-13 20:00, 2025-09-14 20:00) 윈도우를 사용
val lastBoundary = if (now.isBefore(todayBoundary)) {
// 아직 오늘 20:00 이전이면, 직전 경계는 어제 20:00
todayBoundary.minusDays(1)
} else { } else {
val next = todayBoundary.plusDays(1) // 오늘 20:00을 지났거나 같으면, 직전 경계는 오늘 20:00
Triple(todayBoundary, next, next) todayBoundary
} }
val start = lastBoundary.minusDays(1)
val endExclusive = lastBoundary
val windowStart = start.toInstant() val windowStart = start.toInstant()
val windowEnd = endExclusive.minusNanos(1).toInstant() // [start, end] val windowEnd = endExclusive.minusSeconds(1).toInstant() // [start, end]
val cacheKey = "$prefix:${windowStart.epochSecond}" val cacheKey = "$prefix:${windowStart.epochSecond}"
return RankingWindow(windowStart, windowEnd, nextBoundary.toInstant(), cacheKey) // nextBoundary 필드는 기존 시그니처 유지를 위해 endExclusive(=lastBoundary)를 그대로 전달한다.
return RankingWindow(windowStart, windowEnd, endExclusive.toInstant(), cacheKey)
} }
} }