Selaa lähdekoodia

feat:修改日志结构

zhaohaipeng 10 kuukautta sitten
vanhempi
commit
ba2f46d477

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

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

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

@@ -33,11 +33,11 @@ public final class ScorerUtils {
 
     public static void warmUp() {
         log.info("scorer warm up ");
-        // ScorerUtils.init(BASE_CONF);
-        // ScorerUtils.init(THOMPSON_CONF);
+        ScorerUtils.init(BASE_CONF);
+        ScorerUtils.init(THOMPSON_CONF);
         // ScorerUtils.init(BREAK_CONFIG);
         // ScorerUtils.init(SHARE0_CONFIG);
-        // ScorerUtils.init(CVR_ADJUSTING);
+        ScorerUtils.init(CVR_ADJUSTING);
         // ScorerUtils.init(VIDEO_CREATIVE_THOMPSON);
 
         ScorerUtils.init(LR_ROV_SCORE_20240626);

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

@@ -8,6 +8,7 @@ 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 com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRequestContext;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,6 +40,9 @@ public class LogHubServiceImpl implements LogHubService {
         logUploadThreadPool.execute(new Runnable() {
             @Override
             public void run() {
+
+                AdRequestContext context = param.getRequestContext();
+
                 JSONObject logMap = new JSONObject();
                 logMap.put("pqtid", param.getPqtId());
                 logMap.put("mid", param.getMid());
@@ -55,31 +59,34 @@ public class LogHubServiceImpl implements LogHubService {
                 }
                 logMap.put("expids", abExpCode);
 
-                List<JSONObject> scoreResult = new ArrayList<>();
-                for (AdRankItem rankItem : rankItems) {
-                    JSONObject json = new JSONObject();
-                    json.put("cid", rankItem.getAdId());
-                    json.put("score", rankItem.getScore());
-                    rankItem.getExt().put("weight", rankItem.getWeight());
-                    json.put("feature", rankItem.getExt());
-                    scoreResult.add(json);
-                }
-                logMap.put("scoreResult", JSON.toJSONString(scoreResult));
+                // List<JSONObject> scoreResult = new ArrayList<>();
+                // for (AdRankItem rankItem : rankItems) {
+                //     JSONObject json = new JSONObject();
+                //     json.put("cid", rankItem.getAdId());
+                //     json.put("score", rankItem.getScore());
+                //     rankItem.getExt().put("weight", rankItem.getWeight());
+                //     json.put("feature", rankItem.getExt());
+                //     scoreResult.add(json);
+                // }
+                // logMap.put("scoreResult", JSON.toJSONString(scoreResult));
 
                 AdRankItem top1 = rankItems.get(0);
                 logMap.put("cid", top1.getAdId());
                 logMap.put("score", top1.getScore());
-                JSONObject feature = new JSONObject(top1.getExt());
-                feature.put("weight", top1.getWeight());
-                logMap.put("feature", feature.toJSONString());
 
-                logMap.put("abcode", requestParam.getAdAbGroup());
+                Map<String, String> featureMap = top1.getFeatureMap();
+                featureMap.put("weight", String.valueOf(top1.getWeight()));
+                logMap.put("allFeatureMap", JSON.toJSONString(featureMap));
+
+                logMap.put("metaFeatureMap", JSON.toJSONString(top1.getMetaFeatureMap()));
+
+                logMap.put("abcode", param.getAdAbGroup());
                 logMap.put("scorestrategy", scoreStrategy);
-                logMap.put("apptype", requestParam.getAppType());
+                logMap.put("apptype", context.getApptype());
+                logMap.put("extinfo", new JSONObject());
 
                 // logMap.put("creativeList", JSON.toJSONString(adIdList));
                 // if (Objects.nonNull(requestParam.getStatisticsLog())) {
-                //     JSONObject extInfo = new JSONObject();
                 //     extInfo.put("earlyAdIds", requestParam.getStatisticsLog().getEarlyAdIds());
                 //     extInfo.put("earlyCidList", requestParam.getStatisticsLog().getEarlyCreativeIds());
                 //     extInfo.put("finalCidList", requestParam.getStatisticsLog().getFinalCreativeIds());
@@ -87,7 +94,6 @@ public class LogHubServiceImpl implements LogHubService {
                 //     extInfo.put("commonFilterAfterCidList", requestParam.getStatisticsLog().getCommonFilterAfterCreativeIds());
                 //     extInfo.put("tacticsFilterAfterAdIds", requestParam.getStatisticsLog().getTacticsFilterAfterAdIds());
                 //     extInfo.put("tacticsFilterAfterCidList", requestParam.getStatisticsLog().getTacticsFilterAfterCreativeIds());
-                //     logMap.put("extinfo", extInfo);
                 // }
 
                 aliyunLogManager.sendLog(project, logStore, "", logMap);

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

@@ -1,5 +1,6 @@
 package com.tzld.piaoquan.ad.engine.service.score;
 
+import com.alibaba.fastjson.JSON;
 import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
 import com.tzld.piaoquan.ad.engine.commons.score.ScorerPipeline;
 import com.tzld.piaoquan.ad.engine.commons.score.ScorerUtils;
@@ -37,12 +38,11 @@ public class RankService680 {
 
     private Map<String, Double> bucketsLen = new HashMap<>();
 
-    public List<AdRankItem> adItemRank(RankRecommendRequestParam request) {
+    public List<AdRankItem> adItemRank(RankRecommendRequestParam request, ScoreParam scoreParam) {
 
         long ts = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) / 1000;
 
         // 特征处理
-        ScoreParam scoreParam = RequestConvert.requestConvert(request);
         Feature feature = this.getFeature(scoreParam, request);
         Map<String, Map<String, String>> userFeature = feature.getUserFeature();
         Map<String, Map<String, String>> videoFeature = feature.getVideoFeature();
@@ -110,9 +110,33 @@ public class RankService680 {
         List<AdRankItem> items = ScorerUtils.getScorerPipeline(ScorerUtils.LR_ROV_SCORE_20240626)
                 .scoring(new HashMap<>(), userFeatureMap, adRankItems);
 
-        Collections.sort(items);
+        List<AdRankItem> results =new ArrayList<>(items.size());
+        for (AdRankItem item : items) {
+            AdRankItem result = new AdRankItem();
+            result.setAdId(item.adId);
+            result.setCreativeCode(item.getCreativeCode());
+            result.setAdVerId(item.getAdVerId());
+            result.setVideoId(item.getVideoId());
+            result.getFeatureMap().put("lrModelFeature", JSON.toJSONString(item.getFeatureMap()));
+            result.getFeatureMap().put("userFeature", JSON.toJSONString(userFeatureMap));
+
+            if (MapUtils.isNotEmpty(videoFeature)){
+                result.getMetaFeatureMap().putAll(videoFeature);
+            }
+            if (MapUtils.isNotEmpty(userFeature)){
+                result.getMetaFeatureMap().putAll(userFeature);
+            }
+            if (allAdVerFeature.containsKey(item.getAdVerId())){
+                result.getMetaFeatureMap().putAll(allAdVerFeature.get(item.getAdVerId()));
+            }
+            if (allCidFeature.containsKey(String.valueOf(item.getAdId()))){
+                result.getMetaFeatureMap().putAll(allCidFeature.get(String.valueOf(item.getAdId())));
+            }
+        }
+
+        Collections.sort(results);
 
-        return items;
+        return results;
     }
 
     private Feature getFeature(ScoreParam param, RankRecommendRequestParam request) {

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

@@ -148,6 +148,7 @@ public class VlogRovLRScorer extends BaseLRV2ModelScorer {
                 LOGGER.error("score error for doc={} exception={}", item.getVideoId(), ExceptionUtils.getFullStackTrace(e));
             }
         }
+        item.setLrScore(pro);
         return pro;
     }
 }

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

@@ -1,9 +1,8 @@
 package com.tzld.piaoquan.ad.engine.service.score.convert;
 
+import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
 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;
@@ -26,6 +25,7 @@ public class RequestConvert {
         context.setCity(request.getCity().replace("市", ""));
 
         ScoreParam scoreParam=new ScoreParam();
+        scoreParam.setAdAbGroup(request.getAdAbGroup());
         scoreParam.setRequestContext(context);
         scoreParam.setVideoId(request.getVideoId());
         scoreParam.setNewExpGroup(request.getNewExpGroup());

+ 0 - 18
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/dto/AdPlatformCreativeDTO.java

@@ -1,6 +1,5 @@
 package com.tzld.piaoquan.ad.engine.service.score.dto;
 
-import com.alibaba.fastjson.JSON;
 import lombok.Builder;
 import lombok.Data;
 import lombok.ToString;
@@ -16,8 +15,6 @@ public class AdPlatformCreativeDTO {
 
     private String adVerId;
 
-    private Integer bidType;
-
     private Double pctr;
 
     private Double pcvr;
@@ -39,19 +36,4 @@ public class AdPlatformCreativeDTO {
      */
     private AdDirectionScore adDirectionScore;
 
-    public static void main(String[] args) {
-        System.out.println(JSON.toJSONString(AdPlatformCreativeDTO.builder()
-                .creativeId(3366L)
-                .creativeCode("CREATIVE_17036704789851370")
-                .bidType(2)
-                .pctr(3.2)
-                .pcvr(1.2)
-                .cpa(40.1)
-                .bid1(1.3)
-                .bid2(2.1)
-                .ecpm1(0.1)
-                .ecpm2(0.2)
-                .build()));
-    }
-
 }

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

@@ -77,15 +77,27 @@ public class RankServiceImpl implements RankService {
 
     public AdRankItem adItemRank(RankRecommendRequestParam requestParam) {
 
+        ScoreParam scoreParam = RequestConvert.requestConvert(requestParam);
+
         Set<String> expCodeSet = AbUtil.unfoldAllExpCode(requestParam.getAdAbExpArr());
         Long appType = requestParam.getAppType();
         Integer newExpGroup = requestParam.getNewExpGroup();
+        List<AdRankItem> adRankItems;
+        String abCode = "";
+        String scoreStrategy = "";
         if (AbUtil.isInAbExp(expCodeSet, appType, newExpGroup, fmModelScoreExpCode)) {
-            return fmRankService.adItemRank(requestParam).get(0);
-        }else if (AbUtil.isInAbExp(expCodeSet, appType, newExpGroup, tacticsAndFmModelScoreExpCode)){
-            // return tacticsAndFmModelScoreRankService.adItemRank(requestParam).get;
+            adRankItems = fmRankService.adItemRank(requestParam, scoreParam);
+            abCode = "680";
+            scoreStrategy = "lr_model";
+        } else if (AbUtil.isInAbExp(expCodeSet, appType, newExpGroup, tacticsAndFmModelScoreExpCode)) {
+            return tacticsAndFmModelScoreRankService.adItemRank(requestParam).get(0);
+        } else {
+            return adItemRankOld(requestParam);
         }
-        return adItemRankOld(requestParam);
+
+        logHubService.scoreLogUpload(scoreParam, requestParam.getAdIdList(), adRankItems, requestParam, scoreStrategy, abCode);
+
+        return adRankItems.get(0);
     }
 
     public AdRankItem adItemRankOld(RankRecommendRequestParam request) {

+ 8 - 0
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/impl/TacticsAndFmModelScoreRankService.java

@@ -1,9 +1,17 @@
 package com.tzld.piaoquan.ad.engine.service.score.impl;
 
+import com.tzld.piaoquan.ad.engine.service.score.param.RankRecommendRequestParam;
+import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Slf4j
 @Service
 public class TacticsAndFmModelScoreRankService {
+
+    public List<AdRankItem> adItemRank(RankRecommendRequestParam requestParam) {
+        return null;
+    }
 }