feat(home): 크리에이터 랭킹 fallback job 집계를 추가한다

This commit is contained in:
2026-07-10 14:44:29 +09:00
parent 1f944329f4
commit 10020b03d6
4 changed files with 73 additions and 1 deletions
@@ -138,4 +138,43 @@ class DefaultCreatorRankingSnapshotJobRepositoryTest @Autowired constructor(
assertEquals(LocalDateTime.of(2026, 6, 8, 7, 30), unchanged?.processingStartedAt)
assertEquals(LocalDateTime.of(2026, 6, 8, 7, 31), unchanged?.processedAt)
}
@Test
@DisplayName("fallback 제한 count는 같은 기간의 FALLBACK trigger만 계산한다")
fun shouldCountFallbackJobsByPeriodAndTriggerOnly() {
val startAt = LocalDateTime.of(2026, 5, 31, 15, 0)
val endAt = LocalDateTime.of(2026, 6, 7, 15, 0)
adapter.save(job(startAt, endAt, CreatorRankingSnapshotJobTrigger.FALLBACK))
adapter.save(job(startAt, endAt, CreatorRankingSnapshotJobTrigger.FALLBACK))
adapter.save(job(startAt, endAt, CreatorRankingSnapshotJobTrigger.SCHEDULED))
adapter.save(job(startAt, endAt, CreatorRankingSnapshotJobTrigger.MANUAL))
adapter.save(job(startAt.minusWeeks(1), endAt.minusWeeks(1), CreatorRankingSnapshotJobTrigger.FALLBACK))
val count = adapter.countByRankingTypeAndPeriodAndTrigger(
rankingType = CreatorRankingType.WEEKLY,
aggregationStartAtUtc = startAt,
aggregationEndAtUtc = endAt,
trigger = CreatorRankingSnapshotJobTrigger.FALLBACK
)
assertEquals(2L, count)
}
private fun job(
startAt: LocalDateTime,
endAt: LocalDateTime,
trigger: CreatorRankingSnapshotJobTrigger
): CreatorRankingSnapshotJobRecord {
return CreatorRankingSnapshotJobRecord(
rankingType = CreatorRankingType.WEEKLY,
aggregationStartAtUtc = startAt,
aggregationEndAtUtc = endAt,
visibleFromAtUtc = endAt.plusHours(9),
trigger = trigger,
status = CreatorRankingSnapshotJobStatus.FAILED,
lastError = null,
processingStartedAt = null,
processedAt = null
)
}
}