feat(ranking): 크리에이터 랭킹 점수 정책을 추가한다

This commit is contained in:
2026-06-08 15:23:20 +09:00
parent 5019c32145
commit 6d6fa5830b
3 changed files with 146 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
package kr.co.vividnext.sodalive.v2.ranking.domain
class CreatorRankingScorePolicy {
fun calculateContentLiveScore(
liveCanAmount: Long,
contentPurchaseCanAmount: Long
): Double {
return (liveCanAmount * CreatorRankingScoreSpec.CONTENT_LIVE_CAN_WEIGHT) +
(contentPurchaseCanAmount * CreatorRankingScoreSpec.CONTENT_PURCHASE_CAN_WEIGHT)
}
fun calculateEngagementScore(
contentLikeCount: Long,
contentCommentCount: Long
): Double {
return (contentLikeCount * CreatorRankingScoreSpec.CONTENT_LIKE_COUNT_WEIGHT) +
(contentCommentCount * CreatorRankingScoreSpec.CONTENT_COMMENT_COUNT_WEIGHT)
}
fun calculateSupportScore(
channelDonationCanAmount: Long,
channelDonationCount: Long,
fanTalkCount: Long
): Double {
return (channelDonationCanAmount * CreatorRankingScoreSpec.CHANNEL_DONATION_CAN_WEIGHT) +
(channelDonationCount * CreatorRankingScoreSpec.CHANNEL_DONATION_COUNT_WEIGHT) +
(fanTalkCount * CreatorRankingScoreSpec.FAN_TALK_COUNT_WEIGHT)
}
fun calculateFanLoyaltyScore(
finalFollowerCount: Long,
followIncrease: Long
): Double {
return (finalFollowerCount * CreatorRankingScoreSpec.FINAL_FOLLOWER_COUNT_WEIGHT) +
(followIncrease * CreatorRankingScoreSpec.FOLLOW_INCREASE_WEIGHT)
}
fun calculateFinalScore(
contentLiveScore: Double,
engagementScore: Double,
supportScore: Double,
fanLoyaltyScore: Double
): Double {
return (contentLiveScore * CreatorRankingScoreSpec.CONTENT_LIVE_SCORE_WEIGHT) +
(engagementScore * CreatorRankingScoreSpec.ENGAGEMENT_SCORE_WEIGHT) +
(supportScore * CreatorRankingScoreSpec.SUPPORT_SCORE_WEIGHT) +
(fanLoyaltyScore * CreatorRankingScoreSpec.FAN_LOYALTY_SCORE_WEIGHT)
}
}

View File

@@ -0,0 +1,21 @@
package kr.co.vividnext.sodalive.v2.ranking.domain
object CreatorRankingScoreSpec {
const val CONTENT_LIVE_CAN_WEIGHT = 0.7
const val CONTENT_PURCHASE_CAN_WEIGHT = 0.3
const val CONTENT_LIKE_COUNT_WEIGHT = 0.5
const val CONTENT_COMMENT_COUNT_WEIGHT = 0.5
const val CHANNEL_DONATION_CAN_WEIGHT = 0.6
const val CHANNEL_DONATION_COUNT_WEIGHT = 0.2
const val FAN_TALK_COUNT_WEIGHT = 0.2
const val FINAL_FOLLOWER_COUNT_WEIGHT = 0.7
const val FOLLOW_INCREASE_WEIGHT = 0.3
const val CONTENT_LIVE_SCORE_WEIGHT = 0.35
const val ENGAGEMENT_SCORE_WEIGHT = 0.3
const val SUPPORT_SCORE_WEIGHT = 0.25
const val FAN_LOYALTY_SCORE_WEIGHT = 0.1
}