96 lines
4.2 KiB
Scala
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(),
|
|
)
|
|
}
|