the-algorithm/pushservice/src/main/scala/com/twitter/frigate/pushservice/model/MagicFanoutProductLaunchPus...

96 lines
4.2 KiB
Scala

package com.twitter.frigate.pushservice.model
import com.twitter.finagle.stats.StatsReceiver
import com.twitter.frigate.common.base.MagicFanoutProductLaunchCandidate
import com.twitter.frigate.common.util.{FeatureSwitchParams => FS}
import com.twitter.frigate.magic_events.thriftscala.MagicEventsReason
import com.twitter.frigate.magic_events.thriftscala.ProductType
import com.twitter.frigate.pushservice.model.PushTypes.PushCandidate
import com.twitter.frigate.pushservice.model.PushTypes.RawCandidate
import com.twitter.frigate.pushservice.model.PushTypes.Target
import com.twitter.frigate.pushservice.predicate.magic_fanout.MagicFanoutPredicatesUtil
import com.twitter.frigate.pushservice.config.Config
import com.twitter.frigate.pushservice.ml.PushMLModelScorer
import com.twitter.frigate.pushservice.model.candidate.CopyIds
import com.twitter.frigate.pushservice.model.ibis.MagicFanoutProductLaunchIbis2Hydrator
import com.twitter.frigate.pushservice.model.ntab.MagicFanoutProductLaunchNtabRequestHydrator
import com.twitter.frigate.pushservice.predicate.PredicatesForCandidate
import com.twitter.frigate.pushservice.predicate.magic_fanout.MagicFanoutPredicatesForCandidate
import com.twitter.frigate.pushservice.predicate.ntab_caret_fatigue.MagicFanoutNtabCaretFatiguePredicate
import com.twitter.frigate.pushservice.take.predicates.BasicSendHandlerPredicates
import com.twitter.frigate.thriftscala.FrigateNotification
import com.twitter.hermit.predicate.NamedPredicate
class MagicFanoutProductLaunchPushCandidate(
candidate: RawCandidate with MagicFanoutProductLaunchCandidate,
copyIds: CopyIds
)(
implicit val statsScoped: StatsReceiver,
pushModelScorer: PushMLModelScorer)
extends PushCandidate
with MagicFanoutProductLaunchCandidate
with MagicFanoutProductLaunchIbis2Hydrator
with MagicFanoutProductLaunchNtabRequestHydrator {
override val frigateNotification: FrigateNotification = candidate.frigateNotification
override val pushCopyId: Option[Int] = copyIds.pushCopyId
override val ntabCopyId: Option[Int] = copyIds.ntabCopyId
override val pushId: Long = candidate.pushId
override val productLaunchType: ProductType = candidate.productLaunchType
override val candidateMagicEventsReasons: Seq[MagicEventsReason] =
candidate.candidateMagicEventsReasons
override val copyAggregationId: Option[String] = copyIds.aggregationId
override val target: Target = candidate.target
override val weightedOpenOrNtabClickModelScorer: PushMLModelScorer = pushModelScorer
override val statsReceiver: StatsReceiver =
statsScoped.scope("MagicFanoutProductLaunchPushCandidate")
}
case class MagicFanoutProductLaunchPushCandidatePredicates(config: Config)
extends BasicSendHandlerPredicates[MagicFanoutProductLaunchPushCandidate] {
implicit val statsReceiver: StatsReceiver = config.statsReceiver.scope(getClass.getSimpleName)
override val preCandidateSpecificPredicates: List[
NamedPredicate[MagicFanoutProductLaunchPushCandidate]
] =
List(
PredicatesForCandidate.isDeviceEligibleForCreatorPush,
PredicatesForCandidate.exceptedPredicate(
"excepted_is_target_blue_verified",
MagicFanoutPredicatesUtil.shouldSkipBlueVerifiedCheckForCandidate,
PredicatesForCandidate.isTargetBlueVerified.flip
), // no need to send if target is already Blue Verified
PredicatesForCandidate.exceptedPredicate(
"excepted_is_target_legacy_verified",
MagicFanoutPredicatesUtil.shouldSkipLegacyVerifiedCheckForCandidate,
PredicatesForCandidate.isTargetLegacyVerified.flip
), // no need to send if target is already Legacy Verified
PredicatesForCandidate.exceptedPredicate(
"excepted_is_target_super_follow_creator",
MagicFanoutPredicatesUtil.shouldSkipSuperFollowCreatorCheckForCandidate,
PredicatesForCandidate.isTargetSuperFollowCreator.flip
), // no need to send if target is already Super Follow Creator
PredicatesForCandidate.paramPredicate(
FS.EnableMagicFanoutProductLaunch
),
MagicFanoutPredicatesForCandidate.magicFanoutProductLaunchFatigue(),
)
override val postCandidateSpecificPredicates: List[
NamedPredicate[MagicFanoutProductLaunchPushCandidate]
] =
List(
MagicFanoutNtabCaretFatiguePredicate(),
)
}