override def isEnabled()

in cr-mixer/server/src/main/scala/com/twitter/cr_mixer/source_signal/UssSourceSignalFetcher.scala [34:122]


  override def isEnabled(query: FetcherQuery): Boolean = true

  override def fetchAndProcess(
    query: FetcherQuery,
  ): Future[Option[Seq[SourceInfo]]] = {
    // Fetch raw signals
    val rawSignals = ussStore.get(UssStore.Query(query.userId, query.params, query.product)).map {
      _.map {
        _.map {
          case (signalType, signals) =>
            trackUssSignalStatsPerSignalType(query, signalType, signals)
            (signalType, signals)
        }
      }
    }

    /**
     * Process signals:
     * Transform a Seq of USS Signals with signalType specified to a Seq of SourceInfo
     * We do case match to make sure the SignalType can correctly map to a SourceType defined in CrMixer
     * and it should be simplified.
     */
    rawSignals.map {
      _.map { nestedSignal =>
        val sourceInfoList = nestedSignal.flatMap {
          case (signalType, ussSignals) =>
            signalType match {
              case SignalType.TweetFavorite =>
                convertSourceInfo(sourceType = SourceType.TweetFavorite, signals = ussSignals)
              case SignalType.Retweet =>
                convertSourceInfo(sourceType = SourceType.Retweet, signals = ussSignals)
              case SignalType.Reply =>
                convertSourceInfo(sourceType = SourceType.Reply, signals = ussSignals)
              case SignalType.OriginalTweet =>
                convertSourceInfo(sourceType = SourceType.OriginalTweet, signals = ussSignals)
              case SignalType.AccountFollow =>
                convertSourceInfo(sourceType = SourceType.UserFollow, signals = ussSignals)
              case SignalType.RepeatedProfileVisit180dMinVisit6V1 |
                  SignalType.RepeatedProfileVisit90dMinVisit6V1 |
                  SignalType.RepeatedProfileVisit14dMinVisit2V1 =>
                convertSourceInfo(
                  sourceType = SourceType.UserRepeatedProfileVisit,
                  signals = ussSignals)
              case SignalType.NotificationOpenAndClickV1 =>
                convertSourceInfo(sourceType = SourceType.NotificationClick, signals = ussSignals)
              case SignalType.TweetShareV1 =>
                convertSourceInfo(sourceType = SourceType.TweetShare, signals = ussSignals)
              case SignalType.RealGraphOon =>
                convertSourceInfo(sourceType = SourceType.RealGraphOon, signals = ussSignals)
              case SignalType.GoodTweetClick | SignalType.GoodTweetClick5s |
                  SignalType.GoodTweetClick10s | SignalType.GoodTweetClick30s =>
                convertSourceInfo(sourceType = SourceType.GoodTweetClick, signals = ussSignals)
              case SignalType.VideoView90dPlayback50V1 =>
                convertSourceInfo(
                  sourceType = SourceType.VideoTweetPlayback50,
                  signals = ussSignals)
              case SignalType.VideoView90dQualityV1 =>
                convertSourceInfo(
                  sourceType = SourceType.VideoTweetQualityView,
                  signals = ussSignals)
              case SignalType.GoodProfileClick | SignalType.GoodProfileClick20s |
                  SignalType.GoodProfileClick30s =>
                convertSourceInfo(sourceType = SourceType.GoodProfileClick, signals = ussSignals)
              // negative signals
              case SignalType.AccountBlock =>
                convertSourceInfo(sourceType = SourceType.AccountBlock, signals = ussSignals)
              case SignalType.AccountMute =>
                convertSourceInfo(sourceType = SourceType.AccountMute, signals = ussSignals)
              case SignalType.TweetReport =>
                convertSourceInfo(sourceType = SourceType.TweetReport, signals = ussSignals)
              case SignalType.TweetDontLike =>
                convertSourceInfo(sourceType = SourceType.TweetDontLike, signals = ussSignals)
              // Aggregated Signals
              case SignalType.TweetBasedUnifiedEngagementWeightedSignal |
                  SignalType.TweetBasedUnifiedUniformSignal =>
                convertSourceInfo(sourceType = SourceType.TweetAggregation, signals = ussSignals)
              case SignalType.ProducerBasedUnifiedEngagementWeightedSignal |
                  SignalType.ProducerBasedUnifiedUniformSignal =>
                convertSourceInfo(sourceType = SourceType.ProducerAggregation, signals = ussSignals)

              // Default
              case _ =>
                Seq.empty[SourceInfo]
            }
        }
        sourceInfoList
      }
    }
  }