Browse Source

str rov model

丁云鹏 1 year ago
parent
commit
af18ecd4ee

+ 1 - 1
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/AdConfig.java

@@ -15,6 +15,6 @@ public class AdConfig {
     }
 
     public static void setAdIds(List<Long> adIds) {
-        adIds = Collections.unmodifiableList(adIds);
+        AdConfig.adIds = Collections.unmodifiableList(adIds);
     }
 }

+ 1 - 11
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/BaseLRModelScorer.java

@@ -3,14 +3,9 @@ package com.tzld.piaoquan.ad.engine.commons.score;
 import com.tzld.piaoquan.ad.engine.commons.score.model.LRModel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
 
 
-public abstract class BaseLRModelScorer extends AbstractScorer implements ApplicationContextAware {
-
-    protected ApplicationContext applicationContext;
+public abstract class BaseLRModelScorer extends AbstractScorer {
 
     private static Logger LOGGER = LoggerFactory.getLogger(BaseLRModelScorer.class);
 
@@ -22,9 +17,4 @@ public abstract class BaseLRModelScorer extends AbstractScorer implements Applic
     public void loadModel() {
         doLoadModel(LRModel.class);
     }
-
-    @Override
-    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
-        this.applicationContext = applicationContext;
-    }
 }

+ 3 - 1
ad-engine-server/src/main/java/com/tzld/piaoquan/ad/engine/server/Application.java

@@ -20,7 +20,9 @@ import org.springframework.scheduling.annotation.EnableScheduling;
  */
 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,SecurityAutoConfiguration.class})
 @ComponentScan({
-        "com.tzld.piaoquan.ad.engine.*","com.tzld.piaoquan.recommend.feature.*"
+        "com.tzld.piaoquan.ad.engine.*",
+        "com.tzld.piaoquan.recommend.feature.*",
+        "com.tzld.piaoquan.recommend.server.*"
 })
 @EnableEurekaClient
 @EnableAspectJAutoProxy

+ 2 - 0
ad-engine-server/src/main/resources/application.yml

@@ -123,4 +123,6 @@ xxl:
 grpc:
   client:
     recommend-feature:
+      negotiationType: PLAINTEXT
+    recommend-server:
       negotiationType: PLAINTEXT

+ 8 - 4
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/predict/model/threshold/ScoreV2ThresholdPredictModel.java

@@ -1,11 +1,9 @@
 package com.tzld.piaoquan.ad.engine.service.predict.model.threshold;
 
-import com.tzld.piaoquan.ad.engine.commons.redis.AlgorithmRedisHelper;
 import com.tzld.piaoquan.ad.engine.commons.score.AdConfig;
 import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
 import com.tzld.piaoquan.ad.engine.commons.score.ScorerUtils;
 import com.tzld.piaoquan.ad.engine.commons.util.CommonCollectionUtils;
-import com.tzld.piaoquan.ad.engine.service.predict.param.RuleParamHelper;
 import com.tzld.piaoquan.ad.engine.service.predict.param.ThresholdPredictModelParam;
 import com.tzld.piaoquan.ad.engine.service.remote.FeatureRemoteService;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
@@ -63,10 +61,15 @@ public class ScoreV2ThresholdPredictModel extends ThresholdPredictModel {
         scoreParam.setRequestContext(context);
         scoreParam.getRequestContext().setRegion(modelParam.getRegion().replace("省", ""));
         scoreParam.getRequestContext().setCity(modelParam.getCity().replace("市", ""));
+        scoreParam.setVideoId(modelParam.getVideoId());
+        scoreParam.setMid(modelParam.getMid());
+        scoreParam.setUid("");
+        scoreParam.setProvince(modelParam.getRegion());
+        scoreParam.setCity(modelParam.getCity());
 
 
         List<AdRankItem> scoreResult = ScorerUtils
-                .getScorerPipeline("feeds_score_config_break")
+                .getScorerPipeline("feeds_score_config_break.conf")
                 .scoring(scoreParam, userAdFeature, rankItems);
 
         // 找出ctr*cvr最大的
@@ -82,7 +85,7 @@ public class ScoreV2ThresholdPredictModel extends ThresholdPredictModel {
         }
 
         int adPredict;
-        if (maxItem.getScore() < threshold) {
+        if (maxItem != null && maxItem.getScore() < threshold) {
             // If final score is below threshold, show the ad
             adPredict = 2;
         } else {
@@ -90,6 +93,7 @@ public class ScoreV2ThresholdPredictModel extends ThresholdPredictModel {
             adPredict = 1;
         }
         Map<String, Object> result = new HashMap<>();
+        result.put("score", maxItem == null ? -1 : maxItem.getScore());
         result.put("ad_predict", adPredict);
         return result;
     }

+ 1 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/predict/param/ThresholdPredictModelParam.java

@@ -38,6 +38,6 @@ public class ThresholdPredictModelParam {
     String region = "-1";
     //市-中文
     String city = "-1";
-    MachineInfoParam machineInfo;
+    MachineInfoParam machineInfo = new MachineInfoParam();
 
 }

+ 8 - 7
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/predict/param/request/ThresholdPredictModelRequestParam.java

@@ -3,13 +3,14 @@ package com.tzld.piaoquan.ad.engine.service.predict.param.request;
 import com.alibaba.fastjson.JSONObject;
 import com.tzld.piaoquan.ad.engine.service.score.param.MachineInfoParam;
 import lombok.Data;
+
 /**
- *  mid mid
- *  videoId video_id
- *  appType  app_id
- *  abTestCode  用户对应的ab组--对应java group
- *  abExpInfo AB实验组参数--封装后对应ab_exp_info
- *  careModelStatus  用户关怀模式状态 1-未开启,2-开启
+ * mid mid
+ * videoId video_id
+ * appType  app_id
+ * abTestCode  用户对应的ab组--对应java group
+ * abExpInfo AB实验组参数--封装后对应ab_exp_info
+ * careModelStatus  用户关怀模式状态 1-未开启,2-开启
  */
 @Data
 public class ThresholdPredictModelRequestParam {
@@ -24,5 +25,5 @@ public class ThresholdPredictModelRequestParam {
     //市-中文
     String city = "-1";
 
-    MachineInfoParam machineInfo;
+    MachineInfoParam machineInfo = new MachineInfoParam();
 }

+ 1 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/remote/ModelRemoteService.java

@@ -22,7 +22,7 @@ public class ModelRemoteService {
     @Autowired
     private ModelClient client;
 
-    public Score getScore(long videoId, String mid, String uid, String city, String province) {
+    public Score getScore(Long videoId, String mid, String uid, String city, String province) {
         if (StringUtils.isBlank(mid)) {
             return null;
         }

+ 23 - 0
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/ServiceBeanFactory.java

@@ -0,0 +1,23 @@
+package com.tzld.piaoquan.ad.engine.service.score;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author dyp
+ */
+@Component
+public class ServiceBeanFactory implements ApplicationContextAware {
+    private static ApplicationContext applicationContext;
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        this.applicationContext = applicationContext;
+    }
+
+    public static <T> T getBean(Class<T> clazz) {
+        return applicationContext.getBean(clazz);
+    }
+}

+ 1 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/VlogAdBreakScorer.java

@@ -22,7 +22,7 @@ public class VlogAdBreakScorer extends BaseLRModelScorer {
 
     public VlogAdBreakScorer(ScorerConfigInfo configInfo) {
         super(configInfo);
-        this.redisHelper = applicationContext.getBean(AlgorithmRedisHelper.class);
+        this.redisHelper = ServiceBeanFactory.getBean(AlgorithmRedisHelper.class);
     }
 
 

+ 1 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/VlogAdRosAndStrScorer.java

@@ -17,7 +17,7 @@ public class VlogAdRosAndStrScorer extends BaseLRModelScorer {
 
     public VlogAdRosAndStrScorer(ScorerConfigInfo scorerConfigInfo) {
         super(scorerConfigInfo);
-        this.modelRemoteService = applicationContext.getBean(ModelRemoteService.class);
+        this.modelRemoteService = ServiceBeanFactory.getBean(ModelRemoteService.class);
     }
 
     @Override