浏览代码

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

zhaohaipeng 1 年之前
父节点
当前提交
51716c2c2b

+ 1 - 1
ad-engine-commons/pom.xml

@@ -25,7 +25,7 @@
         <dependency>
             <groupId>com.tzld.piaoquan</groupId>
             <artifactId>recommend-feature-client</artifactId>
-            <version>1.1.19</version>
+            <version>1.1.20</version>
         </dependency>
         <dependency>
             <groupId>com.tzld.piaoquan</groupId>

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

@@ -17,7 +17,7 @@ public class ScoreParam {
     private String city;
     private String province;
     private Integer newExpGroup;
-    private String logTraceId;
+    private String pqtId;
     private Map<String,Object> extraParam=new HashMap<>();
 
 

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

@@ -91,6 +91,7 @@ aliyun:
       request: request-log
       info: info-log
       error: error-log
+      statistics: statistics-log
       landingTypeFilter: landingpagetype-filter-error-log
       adPackageData: ad-package-data
     topic:

+ 10 - 10
ad-engine-server/src/main/resources/logback-spring.xml

@@ -27,9 +27,9 @@
                     converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
     <!-- 彩色日志格式 -->
     <property name="CONSOLE_LOG_PATTERN"
-              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([%X{logTraceId}]){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([%X{pqtId}]){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
     <!--<property name="CONSOLE_LOG_PATTERN"-->
-    <!--          value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([%X{√logTraceId}]){magenta} %clr(-&#45;&#45;){faint} %clr([%15.15t]){faint} %clr(at %class.%method){cyan} \\(%file:%line\\) %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>-->
+    <!--          value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([%X{√pqtId}]){magenta} %clr(-&#45;&#45;){faint} %clr([%15.15t]){faint} %clr(at %class.%method){cyan} \\(%file:%line\\) %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>-->
 
 
     <!--输出到控制台-->
@@ -55,7 +55,7 @@
         <file>${LOG_PATH}/debug.log</file>
         <!--日志文件输出格式-->
         <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{logTraceId}] %logger{50} [%L] - %msg%n</pattern>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{pqtId}] %logger{50} [%L] - %msg%n</pattern>
             <charset>UTF-8</charset> <!-- 设置字符集 -->
         </encoder>
         <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
@@ -85,7 +85,7 @@
         <file>${LOG_PATH}/info.log</file>
         <!--日志文件输出格式-->
         <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{logTraceId}] %logger{50} [%L] - %msg%n</pattern>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{pqtId}] %logger{50} [%L] - %msg%n</pattern>
             <charset>UTF-8</charset>
         </encoder>
         <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
@@ -116,7 +116,7 @@
         <file>${LOG_PATH}/warn.log</file>
         <!--日志文件输出格式-->
         <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{logTraceId}] %logger{50} [%L] - %msg%n</pattern>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{pqtId}] %logger{50} [%L] - %msg%n</pattern>
             <charset>UTF-8</charset> <!-- 此处设置字符集 -->
         </encoder>
         <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
@@ -146,7 +146,7 @@
         <file>${LOG_PATH}/error.log</file>
         <!--日志文件输出格式-->
         <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{logTraceId}] %logger{50} [%L] - %msg%n</pattern>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{pqtId}] %logger{50} [%L] - %msg%n</pattern>
             <charset>UTF-8</charset> <!-- 此处设置字符集 -->
         </encoder>
         <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
@@ -188,7 +188,7 @@
         <maxRetryBackoffMs>50000</maxRetryBackoffMs>
 
         <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{logTraceId}] %logger{50} [%L] - %msg%n</pattern>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{pqtId}] %logger{50} [%L] - %msg%n</pattern>
             <charset>UTF-8</charset>
         </encoder>
 
@@ -199,7 +199,7 @@
             <level>INFO</level>
         </filter>
 
-        <mdcFields>logTraceId</mdcFields>
+        <mdcFields>pqtId</mdcFields>
     </appender>
 
     <appender name="ALIYUN_LOG_ERROR" class="com.aliyun.openservices.log.logback.LoghubAppender">
@@ -220,7 +220,7 @@
         <maxRetryBackoffMs>50000</maxRetryBackoffMs>
 
         <encoder>
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{logTraceId}] %logger{50} [%L] - %msg%n</pattern>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{pqtId}] %logger{50} [%L] - %msg%n</pattern>
             <charset>UTF-8</charset>
         </encoder>
 
@@ -231,7 +231,7 @@
             <level>ERROR</level>
         </filter>
 
-        <mdcFields>logTraceId</mdcFields>
+        <mdcFields>pqtId</mdcFields>
     </appender>
 
     <!--

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

@@ -0,0 +1,13 @@
+package com.tzld.piaoquan.ad.engine.service.log;
+
+import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
+import com.tzld.piaoquan.ad.engine.service.score.dto.AdPlatformCreativeDTO;
+import com.tzld.piaoquan.ad.engine.service.score.param.RecommendRequestParam;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
+
+import java.util.List;
+
+public interface LogHubService {
+
+    void scoreLogUpload(ScoreParam param, List<AdPlatformCreativeDTO> adIdList, List<AdRankItem> rankItems, RecommendRequestParam requestParam, String scoreStrategy);
+}

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

@@ -0,0 +1,72 @@
+package com.tzld.piaoquan.ad.engine.service.log.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.commons.aliyun.log.AliyunLogManager;
+import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
+import com.tzld.piaoquan.ad.engine.service.log.LogHubService;
+import com.tzld.piaoquan.ad.engine.service.score.dto.AdPlatformCreativeDTO;
+import com.tzld.piaoquan.ad.engine.service.score.param.RecommendRequestParam;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+public class LogHubServiceImpl implements LogHubService {
+
+    private static final ThreadPoolExecutor logUploadThreadPool = new ThreadPoolExecutor(20, 40, 30,
+            TimeUnit.MINUTES, new LinkedBlockingDeque<>(), new ThreadPoolExecutor.CallerRunsPolicy());
+
+    @Value("${aliyun.log.logstore.statistics}")
+    private String logStore;
+    @Value("${aliyun.log.project}")
+    private String project;
+
+    @Autowired
+    private AliyunLogManager aliyunLogManager;
+
+    @Override
+    public void scoreLogUpload(ScoreParam param, List<AdPlatformCreativeDTO> adIdList, List<AdRankItem> rankItems, RecommendRequestParam requestParam, String scoreStrategy) {
+        logUploadThreadPool.execute(new Runnable() {
+            @Override
+            public void run() {
+                JSONObject logMap = new JSONObject();
+                logMap.put("pqtId", param.getPqtId());
+                logMap.put("mid", param.getMid());
+                logMap.put("videoId", param.getVideoId());
+                // 获取AB实验列表
+                Set<String> abExpCode = new HashSet<>();
+                if (CollectionUtils.isNotEmpty(requestParam.getAdAbExpArr())) {
+                    for (Map map : requestParam.getAdAbExpArr()) {
+                        if (map.containsKey("abExpCode")) {
+                            abExpCode.add(map.get("abExpCode").toString());
+                        }
+                    }
+                }
+
+                logMap.put("scoreResult", JSON.toJSONString(rankItems));
+                logMap.put("creativeList", JSON.toJSONString(adIdList));
+
+                logMap.put("abExpCode", abExpCode);
+                logMap.put("adAbGroup", requestParam.getAdAbGroup());
+                logMap.put("scoreStrategy", scoreStrategy);
+                logMap.put("appType", requestParam.getAppType());
+                aliyunLogManager.sendLog(project, logStore, "", logMap);
+            }
+        });
+    }
+}

+ 3 - 4
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/predict/impl/PredictModelServiceImpl.java

@@ -19,7 +19,6 @@ import com.tzld.piaoquan.ad.engine.service.predict.param.RoiThresholdPredictMode
 import com.tzld.piaoquan.ad.engine.service.predict.param.ThresholdPredictModelParam;
 import com.tzld.piaoquan.ad.engine.service.predict.param.request.RoiPredictModelRequestParam;
 import com.tzld.piaoquan.ad.engine.service.predict.param.request.ThresholdPredictModelRequestParam;
-import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -70,7 +69,7 @@ public class PredictModelServiceImpl implements PredictModelService {
 
     public Map<String, Object> adPredict(ThresholdPredictModelRequestParam requestParam) {
         Map<String,Object> result=new HashMap<>();
-        result.put("logTraceId", requestParam.getLogTraceId());
+        result.put("pqtId", requestParam.getPqtId());
         try {
             String[] withoutAdVideoIdsArr=withoutAdVideoIds.split(",");
             for(String videoId:withoutAdVideoIdsArr){
@@ -256,8 +255,8 @@ public class PredictModelServiceImpl implements PredictModelService {
 
             return result;
         }catch (Exception e){
-            log.error("svc=adPredict appType={} group={} newGroup={} logTraceId={}"
-                    ,requestParam.getAppType(),requestParam.getAbTestCode(),requestParam.getNewExpGroup(),requestParam.getLogTraceId());
+            log.error("svc=adPredict appType={} group={} newGroup={} pqtId={}"
+                    ,requestParam.getAppType(),requestParam.getAbTestCode(),requestParam.getNewExpGroup(),requestParam.getPqtId());
             result.put("ad_predict", 1);
             result.put("no_ad_strategy", "error");
             return result;

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

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

+ 46 - 5
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/VideoAdThompsonScorerV2.java

@@ -34,7 +34,7 @@ public class VideoAdThompsonScorerV2 {
     public List<AdRankItem> thompsonScorerByExp663(ScoreParam param, List<AdPlatformCreativeDTO> adIdList){
         List<AdRankItem> result=new LinkedList<>();
         String jsonStr;
-        CreativeStatistic statistic;
+        CreativeStatistic statistic = null;
         List<String> redisKey=new LinkedList<>();
         adIdList.forEach(creativeDTO -> {
             redisKey.add(redisCreativeStatisticsPrefix+creativeDTO.getCreativeId());
@@ -58,7 +58,12 @@ public class VideoAdThompsonScorerV2 {
                     score = (exp663Param.getOrDefault("alpha",1d)+Long.parseLong(statistic.getOrder()))
                             / (exp663Param.getOrDefault("beta",10000d)+Long.parseLong(statistic.getExp())) ;
                 }
+                double s1 = score;
                 score=score*dto.getCpa()*dto.getBid1()*dto.getBid2();
+
+                Map<String, Object> ext = this.extMap(statistic, "663", dto.getCpa(), null, exp663Param.getOrDefault("alpha", 1d), exp663Param.getOrDefault("beta", 10000d), null);
+                ext.put("s1", s1);
+                item.setExt(ext);
                 item.setScore(score);
                 item.setScore_type(663);
             }catch (Exception e){
@@ -73,7 +78,7 @@ public class VideoAdThompsonScorerV2 {
     public List<AdRankItem> thompsonScorerByExp664(ScoreParam param,List<AdPlatformCreativeDTO> adIdList){
         List<AdRankItem> result=new LinkedList<>();
         String jsonStr;
-        CreativeStatistic statistic;
+        CreativeStatistic statistic=null;
         List<String> redisKey=new LinkedList<>();
         adIdList.forEach(creativeDTO -> {
             redisKey.add(redisVideoCreativeStatisticsPrefix+param.getVideoId()+"_"+creativeDTO.getCreativeId());
@@ -98,8 +103,13 @@ public class VideoAdThompsonScorerV2 {
                     score = (exp664Param.getOrDefault("alpha",1d)+Long.parseLong(statistic.getOrder()))
                             / (exp664Param.getOrDefault("beta",10000d)+Long.parseLong(statistic.getExp())) ;
                 }
+                double s1 = score;
                 score=score*dto.getCpa()*dto.getBid1()*dto.getBid2();
                 item.setScore(score);
+
+                Map<String, Object> ext = this.extMap(statistic, "664", dto.getCpa(), null, exp663Param.getOrDefault("alpha", 1d), exp663Param.getOrDefault("beta", 10000d), null);
+                ext.put("s1", s1);
+                item.setExt(ext);
                 item.setScore_type(664);
             }catch (Exception e){
                 log.error("svc=thompsonScorerByExp664 {}",gson.toJson(e.getStackTrace()));
@@ -114,7 +124,7 @@ public class VideoAdThompsonScorerV2 {
     public List<AdRankItem> thompsonScorerByExp665(ScoreParam param,List<AdPlatformCreativeDTO> adIdList){
         List<AdRankItem> result=new LinkedList<>();
         String jsonStr;
-        CreativeStatistic statistic;
+        CreativeStatistic statistic = null;
         List<String> redisKey=new LinkedList<>();
         adIdList.forEach(creativeDTO -> {
             redisKey.add(redisCreativeStatisticsPrefix+creativeDTO.getCreativeId());
@@ -137,9 +147,14 @@ public class VideoAdThompsonScorerV2 {
                     score = betaSampler(exp665Param.getOrDefault("alpha",1d)+Long.parseLong(statistic.getOrder()) ,
                             (exp665Param.getOrDefault("beta",100000d)+Long.parseLong(statistic.getExp())))/ (1+exp665Param.getOrDefault("beta_k",9d));
                 }
+                double s1 = score;
                 score=score*dto.getCpa()*dto.getBid1()*dto.getBid2();
                 item.setScore(score);
                 item.setScore_type(665);
+
+                Map<String, Object> ext = this.extMap(statistic, "665", dto.getCpa(), null, exp663Param.getOrDefault("alpha", 1d), exp663Param.getOrDefault("beta", 10000d), null);
+                ext.put("s1", s1);
+                item.setExt(ext);
             }catch (Exception e){
                 log.error("svc=thompsonScorerByExp665 {}",gson.toJson(e.getStackTrace()));
             }
@@ -153,7 +168,7 @@ public class VideoAdThompsonScorerV2 {
     public List<AdRankItem> thompsonScorerByExp666(ScoreParam param,List<AdPlatformCreativeDTO> adIdList){
         List<AdRankItem> result=new LinkedList<>();
         String jsonStr;
-        CreativeStatistic statistic;
+        CreativeStatistic statistic = null;
 
         List<String> redisKey=new LinkedList<>();
         adIdList.forEach(creativeDTO -> {
@@ -186,7 +201,7 @@ public class VideoAdThompsonScorerV2 {
                 }else {
                     statistic =gson.fromJson(jsonStr,CreativeStatistic.class);
                     if(Double.parseDouble(statistic.getExp())>exp666Param.getOrDefault("viewThreshold",5000d)){
-                        score = betaSampler(1d+Long.parseLong(statistic.getOrder()) ,
+                        score = betaSampler(exp666Param.getOrDefault("alpha",1d)+Long.parseLong(statistic.getOrder()) ,
                                 (exp666Param.getOrDefault("beta",100000d)+Long.parseLong(statistic.getExp()))/(1+exp666Param.getOrDefault("beta_k",9d))) ;
                     } else if( values.get(i)!=null) {
                         statistic =gson.fromJson(values.get(i),CreativeStatistic.class);
@@ -196,9 +211,16 @@ public class VideoAdThompsonScorerV2 {
                         score = betaSampler(exp666Param.getOrDefault("alpha",1d),exp666Param.getOrDefault("beta",100000d));
                     }
                 }
+                double s1 = score;
                 score=score*dto.getCpa()*dto.getBid1()*dto.getBid2();
                 item.setScore(score);
                 item.setScore_type(666);
+
+                Map<String, Object> ext = this.extMap(statistic, "666", dto.getCpa(), exp666Param.getOrDefault("viewThreshold",5000d), exp663Param.getOrDefault("alpha", 1d),
+                        exp663Param.getOrDefault("beta", 10000d), exp666Param.getOrDefault("beta_k",9d));
+                ext.put("s1", s1);
+                item.setExt(ext);
+
             }catch (Exception e){
                 log.error("svc=thompsonScorerByExp666 {}",gson.toJson(e.getStackTrace()));
             }
@@ -208,6 +230,25 @@ public class VideoAdThompsonScorerV2 {
         Collections.sort(result);
         return result;
     }
+
+    private Map<String, Object> extMap(CreativeStatistic statistic, String abCode, Double cpa, Double viewThreshold, Double alpha, Double beta, Double beta_k) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("abCode", abCode);
+        if (Objects.nonNull(viewThreshold)) {
+            map.put("viewThreshold", viewThreshold);
+        }
+        map.put("alpha", alpha);
+        map.put("beta", beta);
+        map.put("beta_k", beta_k);
+        map.put("cpa", cpa);
+        if (Objects.nonNull(statistic)) {
+            map.put("click", statistic.click);
+            map.put("order", statistic.getOrder());
+            map.put("exp", statistic.getExp());
+        }
+        return map;
+    }
+
     class CreativeStatistic{
         public CreativeStatistic() {
         }

+ 1 - 2
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/convert/RequestConvert.java

@@ -3,7 +3,6 @@ package com.tzld.piaoquan.ad.engine.service.score.convert;
 import com.tzld.piaoquan.ad.engine.service.score.param.RecommendRequestParam;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRequestContext;
 import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
-import com.tzld.piaoquan.ad.engine.service.score.param.RankRecommendRequestParam;
 
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -25,7 +24,7 @@ public class RequestConvert {
         scoreParam.setRequestContext(context);
         scoreParam.setVideoId(request.getVideoId());
         scoreParam.setNewExpGroup(request.getNewExpGroup());
-        scoreParam.setLogTraceId(request.getLogTraceId());
+        scoreParam.setPqtId(request.getPqtId());
         return scoreParam;
     }
 

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

@@ -3,6 +3,7 @@ package com.tzld.piaoquan.ad.engine.service.score.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.tzld.piaoquan.ad.engine.service.predict.helper.NewExpInfoHelper;
 import com.tzld.piaoquan.ad.engine.service.predict.param.ThresholdPredictModelParam;
+import com.tzld.piaoquan.ad.engine.service.log.LogHubService;
 import com.tzld.piaoquan.ad.engine.service.score.VideoAdThompsonScorerV2;
 import com.tzld.piaoquan.ad.engine.service.score.container.AdCreativeFeatureContainer;
 import com.tzld.piaoquan.ad.engine.service.score.container.PidLambdaContainer;
@@ -44,6 +45,8 @@ public class RankServiceImpl implements RankService {
     RankServiceThompsonImpl rankServiceThompson;
     @Autowired
     VideoAdThompsonScorerV2 videoAdThompsonScorerV2;
+    @Autowired
+    private LogHubService logHubService;
 
     @Autowired
     AdCreativeFeatureContainer adCreativeFeatureContainer;
@@ -161,7 +164,7 @@ public class RankServiceImpl implements RankService {
             object.put("dataTime",currentTime.format(timeFormatter));
             object.put("creativeId",rankResult.get(0).getAdId());
             object.put("videoId", request.getVideoId());
-            object.put("logTraceId", request.getLogTraceId());
+            object.put("pqtId", request.getPqtId());
             log.info("svc=adItemRank {}", JSONObject.toJSONString(object));
             object.remove("lrsamples");
             if(inCpcPidExp){
@@ -260,7 +263,8 @@ public class RankServiceImpl implements RankService {
             rankResult = videoAdThompsonScorerV2.thompsonScorerByExp666(param, request.getAdIdList());
         }
 
-
+        // 日志上报
+        logHubService.scoreLogUpload(param, request.getAdIdList(), rankResult, request, "video_ad_thompson");
 
         if (!CollectionUtils.isEmpty(rankResult)) {
             JSONObject object=new JSONObject();
@@ -275,7 +279,7 @@ public class RankServiceImpl implements RankService {
             object.put("dataTime",currentTime.format(timeFormatter));
             object.put("creativeId",rankResult.get(0).getAdId());
             object.put("videoId", rankResult.get(0).getVideoId());
-            object.put("logTraceId", request.getLogTraceId());
+            object.put("pqtId", request.getPqtId());
             log.info("svc=videoAdThompsonRank_lr_log {}", JSONObject.toJSONString(object));
             object.remove("lrsamples");
             object.put("score_500",rankResult.get(0).getTf_ctr());
@@ -408,7 +412,7 @@ public class RankServiceImpl implements RankService {
         object.put("cpa",dto.getCpa()*dto.getBid1());
         object.put("oCpa",dto.getCpa());
         object.put("dataTime",currentTime.format(timeFormatter));
-        object.put("logTraceId", request.getLogTraceId());
+        object.put("pqtId", request.getPqtId());
         log.info("svc=adBidRank {}", JSONObject.toJSONString(object));
         object.remove("lrsamples");
         log.info("svc=pid_log obj={}", JSONObject.toJSONString(object));
@@ -531,7 +535,7 @@ public class RankServiceImpl implements RankService {
         //CPA还原
         object.put("cpa",dto.getCpa()*dto.getBid1());
         object.put("oCpa",dto.getCpa());
-        object.put("logTraceId", request.getLogTraceId());
+        object.put("pqtId", request.getPqtId());
         object.put("dataTime",currentTime.format(timeFormatter));
         log.info("svc=adBidRankNewPid {}", JSONObject.toJSONString(object));
         object.remove("lrsamples");

+ 2 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/param/RecommendRequestParam.java

@@ -19,6 +19,7 @@ public class RecommendRequestParam {
     //市-中文
     String city = "-1";
     Integer newExpGroup;
-    String logTraceId;
+    String pqtId;
     List<Map> adAbExpArr ;
+    String adAbGroup;
 }