feat(ranking): 크리에이터 랭킹 점수 정책을 추가한다
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user