Prechádzať zdrojové kódy

Merge branch 'feature_20240813_zhaohaipeng_xgboost' of algorithm/ad-engine into master

zhaohaipeng 8 mesiacov pred
rodič
commit
8a8eb4dacf
21 zmenil súbory, kde vykonal 1032 pridanie a 25 odobranie
  1. 3 1
      .gitignore
  2. 39 0
      ad-engine-commons/pom.xml
  3. 23 0
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/config/SparkConfig.java
  4. 1 1
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/AbstractScorer.java
  5. 20 0
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/BaseXGBoostModelScorer.java
  6. 5 0
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/ScorerUtils.java
  7. 6 1
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/model/Model.java
  8. 1 1
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/model/ModelManager.java
  9. 586 0
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/model/XGBoostModel.java
  10. 123 0
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/util/CompressUtil.java
  11. 22 0
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/util/PropertiesUtil.java
  12. 6 0
      ad-engine-server/pom.xml
  13. 8 0
      ad-engine-server/src/main/resources/ad_score_config_20240813.conf
  14. 8 0
      ad-engine-server/src/main/resources/ad_score_config_xgboost.conf
  15. 2 2
      ad-engine-server/src/main/resources/application-dev.yml
  16. 6 1
      ad-engine-server/src/main/resources/application.yml
  17. 1 1
      ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/log/LogHubService.java
  18. 1 1
      ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/log/impl/LogHubServiceImpl.java
  19. 1 1
      ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/RankService680.java
  20. 156 0
      ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/XGBoostScorer.java
  21. 14 15
      ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/impl/RankServiceImpl.java

+ 3 - 1
.gitignore

@@ -35,4 +35,6 @@ apollo-cache-dir
 sentinel
 weblog
 logs
-LOG_PATH_IS_UNDEFINED
+LOG_PATH_IS_UNDEFINED
+
+xgboost

+ 39 - 0
ad-engine-commons/pom.xml

@@ -89,6 +89,45 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>org.scala-lang</groupId>
+            <artifactId>scala-library</artifactId>
+            <version>2.12.15</version>
+        </dependency>
+        <dependency>
+            <groupId>ml.dmlc</groupId>
+            <artifactId>xgboost4j-spark_2.12</artifactId>
+            <version>1.7.6</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>scala-library</artifactId>
+                    <groupId>org.scala-lang</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.spark</groupId>
+            <artifactId>spark-mllib_2.12</artifactId>
+            <version>3.3.1</version>
+<!--            <exclusions>-->
+<!--                <exclusion>-->
+<!--                    <artifactId>scala-library</artifactId>-->
+<!--                    <groupId>org.scala-lang</groupId>-->
+<!--                </exclusion>-->
+<!--                <exclusion>-->
+<!--                    <artifactId>hadoop-mapreduce-client-core</artifactId>-->
+<!--                    <groupId>org.apache.hadoop</groupId>-->
+<!--                </exclusion>-->
+<!--                <exclusion>-->
+<!--                    <artifactId>commons-compiler</artifactId>-->
+<!--                    <groupId>org.codehaus.janino</groupId>-->
+<!--                </exclusion>-->
+<!--                <exclusion>-->
+<!--                    <artifactId>janino</artifactId>-->
+<!--                    <groupId>org.codehaus.janino</groupId>-->
+<!--                </exclusion>-->
+<!--            </exclusions>-->
+        </dependency>
     </dependencies>
 
 </project>

+ 23 - 0
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/config/SparkConfig.java

@@ -0,0 +1,23 @@
+package com.tzld.piaoquan.ad.engine.commons.config;
+
+import org.apache.spark.SparkConf;
+import org.apache.spark.api.java.JavaSparkContext;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.Properties;
+
+@Component
+public class SparkConfig {
+
+    @PostConstruct
+    public void init() {
+        SparkConf sparkConf = new SparkConf()
+                .setMaster("local")
+                .setAppName("XGBoostPredict");
+        JavaSparkContext jsc = new JavaSparkContext(sparkConf);
+    }
+
+}

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

@@ -2,8 +2,8 @@ package com.tzld.piaoquan.ad.engine.commons.score;
 
 
 import com.tzld.piaoquan.ad.engine.commons.score.model.Model;
-import com.tzld.piaoquan.ad.engine.commons.score.model.ModelManager;
 
+import com.tzld.piaoquan.ad.engine.commons.score.model.ModelManager;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.UserAdFeature;
 import org.apache.commons.lang3.StringUtils;

+ 20 - 0
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/BaseXGBoostModelScorer.java

@@ -0,0 +1,20 @@
+package com.tzld.piaoquan.ad.engine.commons.score;
+
+import com.tzld.piaoquan.ad.engine.commons.score.model.XGBoostModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public abstract class BaseXGBoostModelScorer extends AbstractScorer {
+
+    private static Logger LOGGER = LoggerFactory.getLogger(BaseXGBoostModelScorer.class);
+
+    public BaseXGBoostModelScorer(ScorerConfigInfo scorerConfigInfo) {
+        super(scorerConfigInfo);
+    }
+
+    @Override
+    public void loadModel() {
+        doLoadModel(XGBoostModel.class);
+    }
+}

+ 5 - 0
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/ScorerUtils.java

@@ -30,7 +30,9 @@ public final class ScorerUtils {
     public static String VIDEO_CREATIVE_THOMPSON = "video_ad_thompson.conf";
 
     public static String LR_ROV_SCORE_20240626 = "ad_score_config_20240626.conf";
+    public static String LR_ROV_SCORE_20240813 = "ad_score_config_20240813.conf";
 
+    public static String  XGBOOST_SCORE_CONF = "ad_score_config_xgboost.conf";
     public static void warmUp() {
         log.info("scorer warm up ");
         // ScorerUtils.init(BASE_CONF);
@@ -41,6 +43,9 @@ public final class ScorerUtils {
         // ScorerUtils.init(VIDEO_CREATIVE_THOMPSON);
 
         ScorerUtils.init(LR_ROV_SCORE_20240626);
+        ScorerUtils.init(LR_ROV_SCORE_20240813);
+
+        ScorerUtils.init(XGBOOST_SCORE_CONF);
     }
 
     private ScorerUtils() {

+ 6 - 1
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/model/Model.java

@@ -1,11 +1,16 @@
 package com.tzld.piaoquan.ad.engine.commons.score.model;
 
 
+import java.io.InputStream;
 import java.io.InputStreamReader;
 
-abstract public class Model {
+public abstract class Model {
     public abstract int getModelSize();
 
     public abstract boolean loadFromStream(InputStreamReader in) throws Exception;
+
+    public boolean loadFromStream(InputStream is) throws Exception {
+        return loadFromStream(new InputStreamReader(is));
+    }
 }
 

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

@@ -195,7 +195,7 @@ public class ModelManager {
                 log.info("model file [{}] changed, ready to update, last modify: [{}]", loadTask.path, loadTask.lastModifyTime);
 
                 Model model = loadTask.modelClass.newInstance();
-                if (model.loadFromStream(new InputStreamReader(ossObj.getObjectContent()))) {
+                if (model.loadFromStream(ossObj.getObjectContent())) {
                     loadTask.model = model;
                     loadTask.lastModifyTime = timeStamp;
                 }

+ 586 - 0
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/model/XGBoostModel.java

@@ -0,0 +1,586 @@
+package com.tzld.piaoquan.ad.engine.commons.score.model;
+
+
+import com.tzld.piaoquan.ad.engine.commons.util.CompressUtil;
+import com.tzld.piaoquan.ad.engine.commons.util.PropertiesUtil;
+import ml.dmlc.xgboost4j.scala.DMatrix;
+import ml.dmlc.xgboost4j.scala.spark.XGBoostClassificationModel;
+import org.apache.commons.lang.math.NumberUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.file.Paths;
+import java.util.Map;
+
+
+public class XGBoostModel extends Model {
+    private static final Logger LOGGER = LoggerFactory.getLogger(XGBoostModel.class);
+    private XGBoostClassificationModel model;
+
+    private String[] features = {
+            "cpa",
+            "b2_1h_ctr",
+            "b2_1h_ctcvr",
+            "b2_1h_cvr",
+            "b2_1h_conver",
+            "b2_1h_click",
+            "b2_1h_conver*log(view)",
+            "b2_1h_conver*ctcvr",
+            "b2_2h_ctr",
+            "b2_2h_ctcvr",
+            "b2_2h_cvr",
+            "b2_2h_conver",
+            "b2_2h_click",
+            "b2_2h_conver*log(view)",
+            "b2_2h_conver*ctcvr",
+            "b2_3h_ctr",
+            "b2_3h_ctcvr",
+            "b2_3h_cvr",
+            "b2_3h_conver",
+            "b2_3h_click",
+            "b2_3h_conver*log(view)",
+            "b2_3h_conver*ctcvr",
+            "b2_6h_ctr",
+            "b2_6h_ctcvr",
+            "b2_6h_cvr",
+            "b2_6h_conver",
+            "b2_6h_click",
+            "b2_6h_conver*log(view)",
+            "b2_6h_conver*ctcvr",
+            "b2_12h_ctr",
+            "b2_12h_ctcvr",
+            "b2_12h_cvr",
+            "b2_12h_conver",
+            "b2_12h_click",
+            "b2_12h_conver*log(view)",
+            "b2_12h_conver*ctcvr",
+            "b2_1d_ctr",
+            "b2_1d_ctcvr",
+            "b2_1d_cvr",
+            "b2_1d_conver",
+            "b2_1d_click",
+            "b2_1d_conver*log(view)",
+            "b2_1d_conver*ctcvr",
+            "b2_3d_ctr",
+            "b2_3d_ctcvr",
+            "b2_3d_cvr",
+            "b2_3d_conver",
+            "b2_3d_click",
+            "b2_3d_conver*log(view)",
+            "b2_3d_conver*ctcvr",
+            "b2_7d_ctr",
+            "b2_7d_ctcvr",
+            "b2_7d_cvr",
+            "b2_7d_conver",
+            "b2_7d_click",
+            "b2_7d_conver*log(view)",
+            "b2_7d_conver*ctcvr",
+            "b2_yesterday_ctr",
+            "b2_yesterday_ctcvr",
+            "b2_yesterday_cvr",
+            "b2_yesterday_conver",
+            "b2_yesterday_click",
+            "b2_yesterday_conver*log(view)",
+            "b2_yesterday_conver*ctcvr",
+            "b2_today_ctr",
+            "b2_today_ctcvr",
+            "b2_today_cvr",
+            "b2_today_conver",
+            "b2_today_click",
+            "b2_today_conver*log(view)",
+            "b2_today_conver*ctcvr",
+            "b3_1h_ctr",
+            "b3_1h_ctcvr",
+            "b3_1h_cvr",
+            "b3_1h_conver",
+            "b3_1h_click",
+            "b3_1h_conver*log(view)",
+            "b3_1h_conver*ctcvr",
+            "b3_2h_ctr",
+            "b3_2h_ctcvr",
+            "b3_2h_cvr",
+            "b3_2h_conver",
+            "b3_2h_click",
+            "b3_2h_conver*log(view)",
+            "b3_2h_conver*ctcvr",
+            "b3_3h_ctr",
+            "b3_3h_ctcvr",
+            "b3_3h_cvr",
+            "b3_3h_conver",
+            "b3_3h_click",
+            "b3_3h_conver*log(view)",
+            "b3_3h_conver*ctcvr",
+            "b3_6h_ctr",
+            "b3_6h_ctcvr",
+            "b3_6h_cvr",
+            "b3_6h_conver",
+            "b3_6h_click",
+            "b3_6h_conver*log(view)",
+            "b3_6h_conver*ctcvr",
+            "b3_12h_ctr",
+            "b3_12h_ctcvr",
+            "b3_12h_cvr",
+            "b3_12h_conver",
+            "b3_12h_click",
+            "b3_12h_conver*log(view)",
+            "b3_12h_conver*ctcvr",
+            "b3_1d_ctr",
+            "b3_1d_ctcvr",
+            "b3_1d_cvr",
+            "b3_1d_conver",
+            "b3_1d_click",
+            "b3_1d_conver*log(view)",
+            "b3_1d_conver*ctcvr",
+            "b3_3d_ctr",
+            "b3_3d_ctcvr",
+            "b3_3d_cvr",
+            "b3_3d_conver",
+            "b3_3d_click",
+            "b3_3d_conver*log(view)",
+            "b3_3d_conver*ctcvr",
+            "b3_7d_ctr",
+            "b3_7d_ctcvr",
+            "b3_7d_cvr",
+            "b3_7d_conver",
+            "b3_7d_click",
+            "b3_7d_conver*log(view)",
+            "b3_7d_conver*ctcvr",
+            "b3_yesterday_ctr",
+            "b3_yesterday_ctcvr",
+            "b3_yesterday_cvr",
+            "b3_yesterday_conver",
+            "b3_yesterday_click",
+            "b3_yesterday_conver*log(view)",
+            "b3_yesterday_conver*ctcvr",
+            "b3_today_ctr",
+            "b3_today_ctcvr",
+            "b3_today_cvr",
+            "b3_today_conver",
+            "b3_today_click",
+            "b3_today_conver*log(view)",
+            "b3_today_conver*ctcvr",
+            "b4_1h_ctr",
+            "b4_1h_ctcvr",
+            "b4_1h_cvr",
+            "b4_1h_conver",
+            "b4_1h_click",
+            "b4_1h_conver*log(view)",
+            "b4_1h_conver*ctcvr",
+            "b4_2h_ctr",
+            "b4_2h_ctcvr",
+            "b4_2h_cvr",
+            "b4_2h_conver",
+            "b4_2h_click",
+            "b4_2h_conver*log(view)",
+            "b4_2h_conver*ctcvr",
+            "b4_3h_ctr",
+            "b4_3h_ctcvr",
+            "b4_3h_cvr",
+            "b4_3h_conver",
+            "b4_3h_click",
+            "b4_3h_conver*log(view)",
+            "b4_3h_conver*ctcvr",
+            "b4_6h_ctr",
+            "b4_6h_ctcvr",
+            "b4_6h_cvr",
+            "b4_6h_conver",
+            "b4_6h_click",
+            "b4_6h_conver*log(view)",
+            "b4_6h_conver*ctcvr",
+            "b4_12h_ctr",
+            "b4_12h_ctcvr",
+            "b4_12h_cvr",
+            "b4_12h_conver",
+            "b4_12h_click",
+            "b4_12h_conver*log(view)",
+            "b4_12h_conver*ctcvr",
+            "b4_1d_ctr",
+            "b4_1d_ctcvr",
+            "b4_1d_cvr",
+            "b4_1d_conver",
+            "b4_1d_click",
+            "b4_1d_conver*log(view)",
+            "b4_1d_conver*ctcvr",
+            "b4_3d_ctr",
+            "b4_3d_ctcvr",
+            "b4_3d_cvr",
+            "b4_3d_conver",
+            "b4_3d_click",
+            "b4_3d_conver*log(view)",
+            "b4_3d_conver*ctcvr",
+            "b4_7d_ctr",
+            "b4_7d_ctcvr",
+            "b4_7d_cvr",
+            "b4_7d_conver",
+            "b4_7d_click",
+            "b4_7d_conver*log(view)",
+            "b4_7d_conver*ctcvr",
+            "b4_yesterday_ctr",
+            "b4_yesterday_ctcvr",
+            "b4_yesterday_cvr",
+            "b4_yesterday_conver",
+            "b4_yesterday_click",
+            "b4_yesterday_conver*log(view)",
+            "b4_yesterday_conver*ctcvr",
+            "b4_today_ctr",
+            "b4_today_ctcvr",
+            "b4_today_cvr",
+            "b4_today_conver",
+            "b4_today_click",
+            "b4_today_conver*log(view)",
+            "b4_today_conver*ctcvr",
+            "b5_1h_ctr",
+            "b5_1h_ctcvr",
+            "b5_1h_cvr",
+            "b5_1h_conver",
+            "b5_1h_click",
+            "b5_1h_conver*log(view)",
+            "b5_1h_conver*ctcvr",
+            "b5_2h_ctr",
+            "b5_2h_ctcvr",
+            "b5_2h_cvr",
+            "b5_2h_conver",
+            "b5_2h_click",
+            "b5_2h_conver*log(view)",
+            "b5_2h_conver*ctcvr",
+            "b5_3h_ctr",
+            "b5_3h_ctcvr",
+            "b5_3h_cvr",
+            "b5_3h_conver",
+            "b5_3h_click",
+            "b5_3h_conver*log(view)",
+            "b5_3h_conver*ctcvr",
+            "b5_6h_ctr",
+            "b5_6h_ctcvr",
+            "b5_6h_cvr",
+            "b5_6h_conver",
+            "b5_6h_click",
+            "b5_6h_conver*log(view)",
+            "b5_6h_conver*ctcvr",
+            "b5_12h_ctr",
+            "b5_12h_ctcvr",
+            "b5_12h_cvr",
+            "b5_12h_conver",
+            "b5_12h_click",
+            "b5_12h_conver*log(view)",
+            "b5_12h_conver*ctcvr",
+            "b5_1d_ctr",
+            "b5_1d_ctcvr",
+            "b5_1d_cvr",
+            "b5_1d_conver",
+            "b5_1d_click",
+            "b5_1d_conver*log(view)",
+            "b5_1d_conver*ctcvr",
+            "b5_3d_ctr",
+            "b5_3d_ctcvr",
+            "b5_3d_cvr",
+            "b5_3d_conver",
+            "b5_3d_click",
+            "b5_3d_conver*log(view)",
+            "b5_3d_conver*ctcvr",
+            "b5_7d_ctr",
+            "b5_7d_ctcvr",
+            "b5_7d_cvr",
+            "b5_7d_conver",
+            "b5_7d_click",
+            "b5_7d_conver*log(view)",
+            "b5_7d_conver*ctcvr",
+            "b5_yesterday_ctr",
+            "b5_yesterday_ctcvr",
+            "b5_yesterday_cvr",
+            "b5_yesterday_conver",
+            "b5_yesterday_click",
+            "b5_yesterday_conver*log(view)",
+            "b5_yesterday_conver*ctcvr",
+            "b5_today_ctr",
+            "b5_today_ctcvr",
+            "b5_today_cvr",
+            "b5_today_conver",
+            "b5_today_click",
+            "b5_today_conver*log(view)",
+            "b5_today_conver*ctcvr",
+            "b8_1h_ctr",
+            "b8_1h_ctcvr",
+            "b8_1h_cvr",
+            "b8_1h_conver",
+            "b8_1h_click",
+            "b8_1h_conver*log(view)",
+            "b8_1h_conver*ctcvr",
+            "b8_2h_ctr",
+            "b8_2h_ctcvr",
+            "b8_2h_cvr",
+            "b8_2h_conver",
+            "b8_2h_click",
+            "b8_2h_conver*log(view)",
+            "b8_2h_conver*ctcvr",
+            "b8_3h_ctr",
+            "b8_3h_ctcvr",
+            "b8_3h_cvr",
+            "b8_3h_conver",
+            "b8_3h_click",
+            "b8_3h_conver*log(view)",
+            "b8_3h_conver*ctcvr",
+            "b8_6h_ctr",
+            "b8_6h_ctcvr",
+            "b8_6h_cvr",
+            "b8_6h_conver",
+            "b8_6h_click",
+            "b8_6h_conver*log(view)",
+            "b8_6h_conver*ctcvr",
+            "b8_12h_ctr",
+            "b8_12h_ctcvr",
+            "b8_12h_cvr",
+            "b8_12h_conver",
+            "b8_12h_click",
+            "b8_12h_conver*log(view)",
+            "b8_12h_conver*ctcvr",
+            "b8_1d_ctr",
+            "b8_1d_ctcvr",
+            "b8_1d_cvr",
+            "b8_1d_conver",
+            "b8_1d_click",
+            "b8_1d_conver*log(view)",
+            "b8_1d_conver*ctcvr",
+            "b8_3d_ctr",
+            "b8_3d_ctcvr",
+            "b8_3d_cvr",
+            "b8_3d_conver",
+            "b8_3d_click",
+            "b8_3d_conver*log(view)",
+            "b8_3d_conver*ctcvr",
+            "b8_7d_ctr",
+            "b8_7d_ctcvr",
+            "b8_7d_cvr",
+            "b8_7d_conver",
+            "b8_7d_click",
+            "b8_7d_conver*log(view)",
+            "b8_7d_conver*ctcvr",
+            "b8_yesterday_ctr",
+            "b8_yesterday_ctcvr",
+            "b8_yesterday_cvr",
+            "b8_yesterday_conver",
+            "b8_yesterday_click",
+            "b8_yesterday_conver*log(view)",
+            "b8_yesterday_conver*ctcvr",
+            "b8_today_ctr",
+            "b8_today_ctcvr",
+            "b8_today_cvr",
+            "b8_today_conver",
+            "b8_today_click",
+            "b8_today_conver*log(view)",
+            "b8_today_conver*ctcvr",
+            "b9_1h_ctr",
+            "b9_1h_ctcvr",
+            "b9_1h_cvr",
+            "b9_1h_conver",
+            "b9_1h_click",
+            "b9_1h_conver*log(view)",
+            "b9_1h_conver*ctcvr",
+            "b9_2h_ctr",
+            "b9_2h_ctcvr",
+            "b9_2h_cvr",
+            "b9_2h_conver",
+            "b9_2h_click",
+            "b9_2h_conver*log(view)",
+            "b9_2h_conver*ctcvr",
+            "b9_3h_ctr",
+            "b9_3h_ctcvr",
+            "b9_3h_cvr",
+            "b9_3h_conver",
+            "b9_3h_click",
+            "b9_3h_conver*log(view)",
+            "b9_3h_conver*ctcvr",
+            "b9_6h_ctr",
+            "b9_6h_ctcvr",
+            "b9_6h_cvr",
+            "b9_6h_conver",
+            "b9_6h_click",
+            "b9_6h_conver*log(view)",
+            "b9_6h_conver*ctcvr",
+            "b9_12h_ctr",
+            "b9_12h_ctcvr",
+            "b9_12h_cvr",
+            "b9_12h_conver",
+            "b9_12h_click",
+            "b9_12h_conver*log(view)",
+            "b9_12h_conver*ctcvr",
+            "b9_1d_ctr",
+            "b9_1d_ctcvr",
+            "b9_1d_cvr",
+            "b9_1d_conver",
+            "b9_1d_click",
+            "b9_1d_conver*log(view)",
+            "b9_1d_conver*ctcvr",
+            "b9_3d_ctr",
+            "b9_3d_ctcvr",
+            "b9_3d_cvr",
+            "b9_3d_conver",
+            "b9_3d_click",
+            "b9_3d_conver*log(view)",
+            "b9_3d_conver*ctcvr",
+            "b9_7d_ctr",
+            "b9_7d_ctcvr",
+            "b9_7d_cvr",
+            "b9_7d_conver",
+            "b9_7d_click",
+            "b9_7d_conver*log(view)",
+            "b9_7d_conver*ctcvr",
+            "b9_yesterday_ctr",
+            "b9_yesterday_ctcvr",
+            "b9_yesterday_cvr",
+            "b9_yesterday_conver",
+            "b9_yesterday_click",
+            "b9_yesterday_conver*log(view)",
+            "b9_yesterday_conver*ctcvr",
+            "b9_today_ctr",
+            "b9_today_ctcvr",
+            "b9_today_cvr",
+            "b9_today_conver",
+            "b9_today_click",
+            "b9_today_conver*log(view)",
+            "b9_today_conver*ctcvr",
+            "b6_7d_ctr",
+            "b6_7d_ctcvr",
+            "b6_7d_cvr",
+            "b6_7d_conver",
+            "b6_7d_click",
+            "b6_7d_conver*log(view)",
+            "b6_7d_conver*ctcvr",
+            "b6_14d_ctr",
+            "b6_14d_ctcvr",
+            "b6_14d_cvr",
+            "b6_14d_conver",
+            "b6_14d_click",
+            "b6_14d_conver*log(view)",
+            "b6_14d_conver*ctcvr",
+            "b7_7d_ctr",
+            "b7_7d_ctcvr",
+            "b7_7d_cvr",
+            "b7_7d_conver",
+            "b7_7d_click",
+            "b7_7d_conver*log(view)",
+            "b7_7d_conver*ctcvr",
+            "b7_14d_ctr",
+            "b7_14d_ctcvr",
+            "b7_14d_cvr",
+            "b7_14d_conver",
+            "b7_14d_click",
+            "b7_14d_conver*log(view)",
+            "b7_14d_conver*ctcvr",
+            "viewAll",
+            "clickAll",
+            "converAll",
+            "incomeAll",
+            "ctr_all",
+            "ctcvr_all",
+            "cvr_all",
+            "timediff_view",
+            "timediff_click",
+            "timediff_conver",
+            "actionstatic_view",
+            "actionstatic_click",
+            "actionstatic_conver",
+            "actionstatic_income",
+            "actionstatic_ctr",
+            "actionstatic_ctcvr",
+            "actionstatic_cvr",
+            "e1_tags_3d_matchnum",
+            "e1_tags_3d_maxscore",
+            "e1_tags_3d_avgscore",
+            "e1_tags_7d_matchnum",
+            "e1_tags_7d_maxscore",
+            "e1_tags_7d_avgscore",
+            "e1_tags_14d_matchnum",
+            "e1_tags_14d_maxscore",
+            "e1_tags_14d_avgscore",
+            "e2_tags_3d_matchnum",
+            "e2_tags_3d_maxscore",
+            "e2_tags_3d_avgscore",
+            "e2_tags_7d_matchnum",
+            "e2_tags_7d_maxscore",
+            "e2_tags_7d_avgscore",
+            "e2_tags_14d_matchnum",
+            "e2_tags_14d_maxscore",
+            "e2_tags_14d_avgscore",
+            "d1_feature_3h_ctr",
+            "d1_feature_3h_ctcvr",
+            "d1_feature_3h_cvr",
+            "d1_feature_3h_conver",
+            "d1_feature_6h_ctr",
+            "d1_feature_6h_ctcvr",
+            "d1_feature_6h_cvr",
+            "d1_feature_6h_conver",
+            "d1_feature_12h_ctr",
+            "d1_feature_12h_ctcvr",
+            "d1_feature_12h_cvr",
+            "d1_feature_12h_conver",
+            "d1_feature_1d_ctr",
+            "d1_feature_1d_ctcvr",
+            "d1_feature_1d_cvr",
+            "d1_feature_1d_conver",
+            "d1_feature_3d_ctr",
+            "d1_feature_3d_ctcvr",
+            "d1_feature_3d_cvr",
+            "d1_feature_3d_conver",
+            "d1_feature_7d_ctr",
+            "d1_feature_7d_ctcvr",
+            "d1_feature_7d_cvr",
+            "d1_feature_7d_conver",
+            "vid_rank_ctr_1d",
+            "vid_rank_ctr_3d",
+            "vid_rank_ctr_7d",
+            "vid_rank_ctr_14d",
+            "vid_rank_ctcvr_1d",
+            "vid_rank_ctcvr_3d",
+            "vid_rank_ctcvr_7d",
+            "vid_rank_ctcvr_14d",
+            "ctitle_vtitle_similarity"
+    };
+
+    @Override
+    public int getModelSize() {
+        if (this.model == null)
+            return 0;
+        return 1;
+    }
+
+    @Override
+    public boolean loadFromStream(InputStreamReader in) throws Exception {
+        return false;
+    }
+
+    public void cleanModel() {
+        this.model = null;
+    }
+
+    public Float score(Map<String, String> featureMap) {
+
+        try {
+            float[] values = new float[features.length];
+            for (int i = 0; i < features.length; i++) {
+                float v = NumberUtils.toFloat(featureMap.getOrDefault(features[i], "0.0"), 0.0f);
+                values[i] = v;
+            }
+            DMatrix dm = new DMatrix(values, 1, features.length, 0.0f);
+            float[][] result = model._booster().predict(dm, false, 0);
+            return result[0][0];
+        } catch (Exception e) {
+            return 0f;
+        }
+    }
+
+    @Override
+    public boolean loadFromStream(InputStream in) throws Exception {
+        String modelDir = PropertiesUtil.getString("model.xgboost.path");
+        CompressUtil.decompressGzFile(in, modelDir);
+        String absolutePath =new File(modelDir).getAbsolutePath();
+        XGBoostClassificationModel model2 = XGBoostClassificationModel.load("file://" + absolutePath);
+        model2.setMissing(0.0f);
+        this.model = model2;
+        return true;
+    }
+
+}

+ 123 - 0
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/util/CompressUtil.java

@@ -0,0 +1,123 @@
+package com.tzld.piaoquan.ad.engine.commons.util;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
+import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
+import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
+import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
+import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream;
+
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+/**
+ * @author dyp
+ */
+@Slf4j
+public class CompressUtil {
+    public static void compressDirectoryToGzip(String sourceDirPath, String outputFilePath) {
+        // 创建.gz文件的输出流
+        try (OutputStream out = new FileOutputStream(outputFilePath);
+             GzipCompressorOutputStream gzipOut = new GzipCompressorOutputStream(out);
+             TarArchiveOutputStream taos = new TarArchiveOutputStream(gzipOut)) {
+
+            taos.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
+
+            // 遍历目录
+            Files.walk(Paths.get(sourceDirPath))
+                    .filter(Files::isRegularFile)
+                    .forEach(filePath -> {
+                        try {
+                            // 为每个文件创建TarEntry
+                            TarArchiveEntry entry = new TarArchiveEntry(filePath.toFile(), filePath.toString().substring(sourceDirPath.length() + 1));
+                            taos.putArchiveEntry(entry);
+
+                            // 读取文件内容并写入TarArchiveOutputStream
+                            try (InputStream is = Files.newInputStream(filePath)) {
+                                byte[] buffer = new byte[1024];
+                                int len;
+                                while ((len = is.read(buffer)) > 0) {
+                                    taos.write(buffer, 0, len);
+                                }
+                            }
+                            // 关闭entry
+                            taos.closeArchiveEntry();
+                        } catch (IOException e) {
+                            log.error("", e);
+                        }
+                    });
+        } catch (Exception e) {
+            log.error("", e);
+        }
+    }
+
+    public static void decompressGzFile(String gzipFilePath, String destDirPath) {
+        try (InputStream gzipIn = new FileInputStream(gzipFilePath);
+             GzipCompressorInputStream gzIn = new GzipCompressorInputStream(gzipIn);
+             TarArchiveInputStream tais = new TarArchiveInputStream(gzIn)) {
+
+            TarArchiveEntry entry;
+            Files.createDirectories(Paths.get(destDirPath));
+            while ((entry = tais.getNextTarEntry()) != null) {
+                if (entry.isDirectory()) {
+                    // 如果是目录,创建目录
+                    Files.createDirectories(Paths.get(destDirPath, entry.getName()));
+                } else {
+                    // 如果是文件,创建文件并写入内容
+                    File outputFile = new File(destDirPath, entry.getName());
+                    if (!outputFile.exists()) {
+                        File parent = outputFile.getParentFile();
+                        if (!parent.exists()) {
+                            parent.mkdirs();
+                        }
+                        outputFile.createNewFile();
+                    }
+                    try (OutputStream out = new FileOutputStream(outputFile)) {
+                        byte[] buffer = new byte[1024];
+                        int len;
+                        while ((len = tais.read(buffer)) > 0) {
+                            out.write(buffer, 0, len);
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("", e);
+        }
+    }
+
+    public static void decompressGzFile(InputStream gzipIn, String destDirPath) {
+        try (GzipCompressorInputStream gzIn = new GzipCompressorInputStream(gzipIn);
+             TarArchiveInputStream tais = new TarArchiveInputStream(gzIn)) {
+
+            TarArchiveEntry entry;
+            Files.createDirectories(Paths.get(destDirPath));
+            while ((entry = tais.getNextTarEntry()) != null) {
+                if (entry.isDirectory()) {
+                    // 如果是目录,创建目录
+                    Files.createDirectories(Paths.get(destDirPath, entry.getName()));
+                } else {
+                    // 如果是文件,创建文件并写入内容
+                    File outputFile = new File(destDirPath, entry.getName());
+                    if (!outputFile.exists()) {
+                        File parent = outputFile.getParentFile();
+                        if (!parent.exists()) {
+                            parent.mkdirs();
+                        }
+                        outputFile.createNewFile();
+                    }
+                    try (OutputStream out = new FileOutputStream(outputFile)) {
+                        byte[] buffer = new byte[1024];
+                        int len;
+                        while ((len = tais.read(buffer)) > 0) {
+                            out.write(buffer, 0, len);
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("", e);
+        }
+    }
+}

+ 22 - 0
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/util/PropertiesUtil.java

@@ -0,0 +1,22 @@
+package com.tzld.piaoquan.ad.engine.commons.util;
+
+import org.springframework.context.EnvironmentAware;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
+
+@Component
+public class PropertiesUtil implements EnvironmentAware {
+
+
+    private static Environment environment;
+
+
+    @Override
+    public void setEnvironment(Environment environment) {
+        this.environment = environment;
+    }
+
+    public static String getString(String name) {
+        return environment.getProperty(name);
+    }
+}

+ 6 - 0
ad-engine-server/pom.xml

@@ -16,6 +16,12 @@
             <groupId>com.tzld.piaoquan</groupId>
             <artifactId>ad-engine-service</artifactId>
             <version>1.0.3</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>log4j-slf4j-impl</artifactId>
+                    <groupId>org.apache.logging.log4j</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
     </dependencies>

+ 8 - 0
ad-engine-server/src/main/resources/ad_score_config_20240813.conf

@@ -0,0 +1,8 @@
+scorer-config = {
+  lr-rov-score-config = {
+    scorer-name = "com.tzld.piaoquan.ad.engine.service.score.XGBoostScorer"
+    scorer-priority = 99
+    model-path = "zhangbo/model.tar.gz"
+  }
+
+}

+ 8 - 0
ad-engine-server/src/main/resources/ad_score_config_xgboost.conf

@@ -0,0 +1,8 @@
+scorer-config = {
+  lr-rov-score-config = {
+    scorer-name = "com.tzld.piaoquan.ad.engine.service.score.XGBoostScorer"
+    scorer-priority = 99
+    model-path = "zhangbo/model_xgb_1000.tar.gz"
+  }
+
+}

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

@@ -27,8 +27,8 @@ spring:
       #password: wx2023_adP@assword1234
 
   redis-algorithm:
-#    hostName: r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com
-    hostName: r-bp1fogs2mflr1ybfot.redis.rds.aliyuncs.com
+    hostName: r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com
+    #hostName: r-bp1fogs2mflr1ybfot.redis.rds.aliyuncs.com
     port: 6379
     password: Wqsd@2019
     timeout: 1000

+ 6 - 1
ad-engine-server/src/main/resources/application.yml

@@ -6,6 +6,8 @@ eureka:
     lease-expiration-duration-in-seconds: 30 #表示eureka server至上一次收到client的心跳之后,等待下一次心跳的超时时间,在这个时间内若没收到下一次心跳,则将移除该instance,默认90
   client:
     registry-fetch-interval-seconds: 5  #定时从Eureka Server拉取服务注册信息的间隔时间
+    serviceUrl:
+      defaultZone: http://deveureka-internal.piaoquantv.com/eureka/
 
 spring:
   datasource:
@@ -127,4 +129,7 @@ grpc:
     recommend-feature:
       negotiationType: PLAINTEXT
     recommend-server:
-      negotiationType: PLAINTEXT
+      negotiationType: PLAINTEXT
+model:
+  xgboost:
+    path: xgboost

+ 1 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/log/LogHubService.java

@@ -9,5 +9,5 @@ import java.util.List;
 
 public interface LogHubService {
 
-    void scoreLogUpload(ScoreParam param, List<AdPlatformCreativeDTO> adIdList, List<AdRankItem> rankItems, RecommendRequestParam requestParam, String scoreStrategy, String abCode);
+    void scoreLogUpload(ScoreParam param, List<AdPlatformCreativeDTO> adIdList, List<AdRankItem> rankItems, RecommendRequestParam requestParam, String abCode);
 }

+ 1 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/log/impl/LogHubServiceImpl.java

@@ -40,7 +40,7 @@ public class LogHubServiceImpl implements LogHubService {
     private static final Set<String> FEATURE_FIELD_SET = Sets.newHashSet();
 
     @Override
-    public void scoreLogUpload(ScoreParam param, List<AdPlatformCreativeDTO> adIdList, List<AdRankItem> rankItems, RecommendRequestParam requestParam, String scoreStrategy, String abCode) {
+    public void scoreLogUpload(ScoreParam param, List<AdPlatformCreativeDTO> adIdList, List<AdRankItem> rankItems, RecommendRequestParam requestParam, String abCode) {
         logUploadThreadPool.execute(new Runnable() {
             @Override
             public void run() {

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

@@ -124,7 +124,7 @@ public class RankService680 {
         }
 
         // 打分排序
-        List<AdRankItem> result = ScorerUtils.getScorerPipeline(ScorerUtils.LR_ROV_SCORE_20240626)
+        List<AdRankItem> result = ScorerUtils.getScorerPipeline(ScorerUtils.XGBOOST_SCORE_CONF)
                 .scoring(sceneFeatureMap, userFeatureMap, adRankItems);
         for (AdRankItem item : result) {
             item.setScore(item.getLrScore() * item.getCpa());

+ 156 - 0
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/XGBoostScorer.java

@@ -0,0 +1,156 @@
+package com.tzld.piaoquan.ad.engine.service.score;
+
+
+import com.tzld.piaoquan.ad.engine.commons.score.BaseXGBoostModelScorer;
+import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
+import com.tzld.piaoquan.ad.engine.commons.score.ScorerConfigInfo;
+import com.tzld.piaoquan.ad.engine.commons.score.model.XGBoostModel;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.UserAdFeature;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang.exception.ExceptionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.*;
+import java.util.concurrent.*;
+
+
+public class XGBoostScorer extends BaseXGBoostModelScorer {
+
+    private static final int LOCAL_TIME_OUT = 150;
+    private final static Logger LOGGER = LoggerFactory.getLogger(XGBoostScorer.class);
+    private static final ExecutorService executorService = Executors.newFixedThreadPool(128);
+
+
+    public XGBoostScorer(ScorerConfigInfo configInfo) {
+        super(configInfo);
+    }
+
+    @Override
+    public List<AdRankItem> scoring(final ScoreParam param,
+                                    final UserAdFeature userAdFeature,
+                                    final List<AdRankItem> rankItems) {
+        throw new NoSuchMethodError();
+    }
+
+    public List<AdRankItem> scoring(final Map<String, String> sceneFeatureMap,
+                                    final Map<String, String> userFeatureMap,
+                                    final List<AdRankItem> rankItems) {
+        if (CollectionUtils.isEmpty(rankItems)) {
+            return rankItems;
+        }
+
+        long startTime = System.currentTimeMillis();
+
+        List<AdRankItem> result = rankByJava(sceneFeatureMap, userFeatureMap, rankItems);
+
+        LOGGER.debug("ctr ranker time java items size={}, time={} ", result != null ? result.size() : 0,
+                System.currentTimeMillis() - startTime);
+
+        return result;
+    }
+
+    private List<AdRankItem> rankByJava(final Map<String, String> sceneFeatureMap,
+                                      final Map<String, String> userFeatureMap,
+                                      final List<AdRankItem> items) {
+        long startTime = System.currentTimeMillis();
+        XGBoostModel model = (XGBoostModel) this.getModel();
+        LOGGER.debug("model size: [{}]", model.getModelSize());
+
+        // 所有都参与打分,按照ctr排序
+        multipleCtrScore(items, userFeatureMap, sceneFeatureMap, model);
+
+        // debug log
+        if (LOGGER.isDebugEnabled()) {
+            for (int i = 0; i < items.size(); i++) {
+                LOGGER.debug("before enter feeds model predict ctr score [{}] [{}]", items.get(i), items.get(i));
+            }
+        }
+
+        Collections.sort(items);
+
+        LOGGER.debug("ctr ranker java execute time: [{}]", System.currentTimeMillis() - startTime);
+        LOGGER.debug("[ctr ranker time java] items size={}, cost={} ", items != null ? items.size() : 0,
+                System.currentTimeMillis() - startTime);
+        return items;
+    }
+
+    private void multipleCtrScore(final List<AdRankItem> items,
+                                  final Map<String, String> userFeatureMap,
+                                  final Map<String, String> sceneFeatureMap,
+                                  final XGBoostModel model) {
+
+        List<Callable<Object>> calls = new ArrayList<Callable<Object>>();
+        for (int index = 0; index < items.size(); index++) {
+            final int fIndex = index;
+            calls.add(new Callable<Object>() {
+                @Override
+                public Object call() throws Exception {
+                    try {
+                        calcScore(model, items.get(fIndex), userFeatureMap, sceneFeatureMap);
+                    } catch (Exception e) {
+                        LOGGER.error("ctr exception: [{}] [{}]", items.get(fIndex), ExceptionUtils.getFullStackTrace(e));
+                    }
+                    return new Object();
+                }
+            });
+        }
+
+        List<Future<Object>> futures = null;
+        try {
+            futures = executorService.invokeAll(calls, LOCAL_TIME_OUT, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            LOGGER.error("execute invoke fail: {}", ExceptionUtils.getFullStackTrace(e));
+        }
+
+        // 等待所有请求的结果返回, 超时也返回
+        int cancel = 0;
+        if (futures != null) {
+            for (Future<Object> future : futures) {
+                try {
+                    if (!future.isDone() || future.isCancelled() || future.get() == null) {
+                        cancel++;
+                    }
+                } catch (InterruptedException e) {
+                    LOGGER.error("InterruptedException {},{}", ExceptionUtils.getFullStackTrace(e));
+                } catch (ExecutionException e) {
+                    LOGGER.error("ExecutionException {},{}", sceneFeatureMap.size(),
+                            ExceptionUtils.getFullStackTrace(e));
+                }
+            }
+        }
+    }
+
+    public double calcScore(final XGBoostModel model,
+                            final AdRankItem item,
+                            final Map<String, String> userFeatureMap,
+                            final Map<String, String> sceneFeatureMap) {
+
+
+        Map<String, String> featureMap = new HashMap<>();
+        if (MapUtils.isNotEmpty(item.getFeatureMap())) {
+            featureMap.putAll(item.getFeatureMap());
+        }
+        if (MapUtils.isNotEmpty(userFeatureMap)) {
+            featureMap.putAll(userFeatureMap);
+        }
+        if (MapUtils.isNotEmpty(sceneFeatureMap)) {
+            featureMap.putAll(sceneFeatureMap);
+        }
+
+        double pro = 0.0;
+        if (MapUtils.isNotEmpty(featureMap)) {
+            try {
+                pro = model.score(featureMap);
+                // LOGGER.info("fea : {}, score:{}", JSONUtils.toJson(featureMap), pro);
+            } catch (Exception e) {
+                LOGGER.error("score error for doc={} exception={}", item.getVideoId(), ExceptionUtils.getFullStackTrace(e));
+            }
+        }
+        item.setLrScore(pro);
+        item.getScoreMap().put("ctcvrScore", pro);
+        return pro;
+    }
+}

+ 14 - 15
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/impl/RankServiceImpl.java

@@ -91,14 +91,24 @@ public class RankServiceImpl implements RankService {
     private AdRankItem rankBy680(RankRecommendRequestParam request) {
         ScoreParam scoreParam = RequestConvert.requestConvert(request);
         List<AdRankItem> adRankItems = fmRankService.adItemRank(request, scoreParam);
-        logHubService.scoreLogUpload(scoreParam, request.getAdIdList(), adRankItems, request, "LRModelScore", "680");
+        // for (AdRankItem adRankItem : adRankItems) {
+        //     JSONObject json = new JSONObject();
+        //     json.put("scoreMap", adRankItem.getScoreMap());
+        //     json.put("allfeature", adRankItem.getFeatureMap());
+        //     json.put("metafeaturemap", adRankItem.getMetaFeatureMap());
+        //     json.put("cid", adRankItem.getAdId());
+        //     json.put("adverid", adRankItem.getAdVerId());
+        //     json.put("score", adRankItem.getScore());
+        //     log.info("adRankItem: {}", JSON.toJSONString(json));
+        // }
+        logHubService.scoreLogUpload(scoreParam, request.getAdIdList(), adRankItems, request, "680");
         return adRankItems.get(0);
     }
 
     private AdRankItem rankBy679(RankRecommendRequestParam requestParam) {
         ScoreParam scoreParam = RequestConvert.requestConvert(requestParam);
         List<AdRankItem> adRankItems = tacticsAndFmModelScoreRankService.adItemRank(requestParam, scoreParam);
-        logHubService.scoreLogUpload(scoreParam, requestParam.getAdIdList(), adRankItems, requestParam, "directionAndLRModelScore", "679");
+        logHubService.scoreLogUpload(scoreParam, requestParam.getAdIdList(), adRankItems, requestParam, "679");
         double score = adRankItems.get(0).getScore();
         if (score > 0) {
             return adRankItems.get(0);
@@ -225,12 +235,8 @@ public class RankServiceImpl implements RankService {
                 log.info("svc=pid_log obj={}", JSONObject.toJSONString(object));
             }
 
-            for (AdRankItem adRankItem : rankResult) {
-                // adRankItem.getItemFeature().put("userAdFeature", JSON.toJSONString(userAdFeature));
-            }
             // 日志上报
-            logHubService.scoreLogUpload(param, request.getAdIdList(), rankResult, request,
-                    inCvrAdjustingExp ? "cvr_adjusting" : "base_line", "531");
+            logHubService.scoreLogUpload(param, request.getAdIdList(), rankResult, request, "531");
 
             return rankResult.get(0);
         } else {
@@ -251,13 +257,6 @@ public class RankServiceImpl implements RankService {
         param.getRequestContext().setDay(currentTime.format(dateFormatter));
 
         Set<String> expCodes = new HashSet<>();
-        // if (request.getAdAbExpArr() != null && request.getAdAbExpArr().size() != 0) {
-        //     for (Map<String, Object> map : request.getAdAbExpArr()) {
-        //         String expCode = map.getOrDefault("abExpCode", "").toString();
-        //         expCodes.add(expCode);
-        //     }
-        // }
-
         if (CollectionUtils.isNotEmpty(request.getAdAbExpArr())) {
             expCodes = request.getAdAbExpArr().stream()
                     .map(m -> m.get("abExpCode"))
@@ -314,7 +313,7 @@ public class RankServiceImpl implements RankService {
         }
 
         // 日志上报
-        logHubService.scoreLogUpload(param, request.getAdIdList(), rankResult, request, "video_ad_thompson", abCode);
+        logHubService.scoreLogUpload(param, request.getAdIdList(), rankResult, request, abCode);
 
         if (!CollectionUtils.isEmpty(rankResult)) {
             JSONObject object = new JSONObject();