configurable ublog rank factor

pull/9822/head
Thibault Duplessis 2021-09-16 21:39:05 +02:00
parent da6d24dc36
commit 2f9ce9e8b7
3 changed files with 19 additions and 2 deletions

View File

@ -20,6 +20,7 @@ final class Dev(env: Env) extends LilaController(env) {
env.rating.ratingFactorsSetting,
env.plan.donationGoalSetting,
env.plan.paymentMethodsSetting,
env.ublog.rankFactorSetting,
env.apiTimelineSetting,
env.noDelaySecretSetting,
env.featuredTeamsSetting,

View File

@ -2,6 +2,7 @@ package lila.ublog
import com.github.blemale.scaffeine.AsyncLoadingCache
import com.softwaremill.macwire._
import com.softwaremill.tagging._
import scala.concurrent.duration._
import lila.common.config._
@ -17,6 +18,7 @@ final class Env(
relationApi: lila.relation.RelationApi,
captcher: lila.hub.actors.Captcher,
cacheApi: lila.memo.CacheApi,
settingStore: lila.memo.SettingStore.Builder,
net: NetConfig
)(implicit
ec: scala.concurrent.ExecutionContext
@ -26,6 +28,12 @@ final class Env(
private val colls = new UblogColls(db(CollName("ublog_blog")), db(CollName("ublog_post")))
val rankFactorSetting = settingStore[Int](
"ublogRankFactor",
default = 5,
text = "Ublog rank factor".some
).taggedWith[UblogRankFactor]
val topic = wire[UblogTopicApi]
val rank = wire[UblogRank]
@ -53,3 +61,4 @@ final class Env(
}
final private class UblogColls(val blog: Coll, val post: Coll)
trait UblogRankFactor

View File

@ -1,6 +1,8 @@
package lila.ublog
import cats.implicits._
import com.softwaremill.tagging._
import org.joda.time.DateTime
import play.api.i18n.Lang
import reactivemongo.api._
@ -8,9 +10,14 @@ import scala.concurrent.ExecutionContext
import lila.db.dsl._
import lila.hub.actorApi.timeline.{ Propagate, UblogPostLike }
import lila.memo.SettingStore
import lila.user.User
final class UblogRank(colls: UblogColls, timeline: lila.hub.actors.Timeline)(implicit ec: ExecutionContext) {
final class UblogRank(
colls: UblogColls,
timeline: lila.hub.actors.Timeline,
factor: SettingStore[Int] @@ UblogRankFactor
)(implicit ec: ExecutionContext) {
import UblogBsonHandlers._
@ -112,7 +119,7 @@ final class UblogRank(colls: UblogColls, timeline: lila.hub.actors.Timeline)(imp
val tierLikes = likes.value + ((tier - 2) * 5).atLeast(0) // initial boost
val likeHours =
if (tierLikes < 1) 0
else (5 * math.log(tierLikes) + 1).toInt.atMost(tierLikes) * 5
else (5 * math.log(tierLikes) + 1).toInt.atMost(tierLikes) * factor.get()
val topicsMultiplier = topics.count(t => UblogTopic.chessExists(t.value)) match {
case 0 => 0.3
case 1 => 1