feat(home): AI 캐릭터 스냅샷 집계 기간을 정의한다
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package kr.co.vividnext.sodalive.v2.recommendation.domain
|
||||
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZoneId
|
||||
|
||||
class RecommendationSnapshotWindowPolicy {
|
||||
fun previousKstDayUtcWindow(nowUtc: LocalDateTime): RecommendationSnapshotWindow {
|
||||
val previousKstDate = nowUtc
|
||||
.atZone(UTC_ZONE)
|
||||
.withZoneSameInstant(KST_ZONE)
|
||||
.toLocalDate()
|
||||
.minusDays(1)
|
||||
val startUtc = previousKstDate
|
||||
.atStartOfDay(KST_ZONE)
|
||||
.withZoneSameInstant(UTC_ZONE)
|
||||
.toLocalDateTime()
|
||||
val endExclusiveUtc = previousKstDate
|
||||
.plusDays(1)
|
||||
.atStartOfDay(KST_ZONE)
|
||||
.withZoneSameInstant(UTC_ZONE)
|
||||
.toLocalDateTime()
|
||||
val snapshotAt = endExclusiveUtc.minusSeconds(1)
|
||||
|
||||
return RecommendationSnapshotWindow(
|
||||
startUtc = startUtc,
|
||||
endExclusiveUtc = endExclusiveUtc,
|
||||
snapshotAt = snapshotAt
|
||||
)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val UTC_ZONE: ZoneId = ZoneId.of("UTC")
|
||||
private val KST_ZONE: ZoneId = ZoneId.of("Asia/Seoul")
|
||||
}
|
||||
}
|
||||
|
||||
data class RecommendationSnapshotWindow(
|
||||
val startUtc: LocalDateTime,
|
||||
val endExclusiveUtc: LocalDateTime,
|
||||
val snapshotAt: LocalDateTime
|
||||
)
|
||||
Reference in New Issue
Block a user