浏览代码

feat:修改679实验

zhaohaipeng 11 月之前
父节点
当前提交
17af721a71

+ 1 - 1
ad-engine-server/src/main/java/com/tzld/piaoquan/ad/engine/server/controller/AdRecommendController.java

@@ -33,7 +33,7 @@ public class AdRecommendController {
         Map<String, Object> map = new HashMap<>();
 
         if (Objects.isNull(rankResult)) {
-            map.put("code", "500");
+            map.put("code", "1");
             map.put("msg", "score error");
         } else {
             map.put("code", "0");

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

@@ -75,9 +75,9 @@ mybatis:
   configuration:
     log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
 
-datalog: /datalog
+#datalog: /datalog
 
-#datalog: /Users/zhao/Desktop/Code/Java/ad-engine
+datalog: /Users/zhao/Desktop/Code/Java/ad-engine
 
 logging:
   file:

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

@@ -50,7 +50,11 @@ public class LogHubServiceImpl implements LogHubService {
                 logMap.put("pqtid", param.getPqtId());
                 logMap.put("mid", param.getMid());
                 logMap.put("vid", param.getVideoId());
+                logMap.put("abcode", param.getAdAbGroup());
                 logMap.put("expid", abCode);
+                logMap.put("apptype", context.getApptype());
+                logMap.put("extinfo", new JSONObject());
+
                 // 获取AB实验列表
                 Set<String> abExpCode = new HashSet<>();
                 if (CollectionUtils.isNotEmpty(requestParam.getAdAbExpArr())) {
@@ -88,19 +92,17 @@ public class LogHubServiceImpl implements LogHubService {
 
                 AdRankItem top1 = rankItems.get(0);
                 logMap.put("cid", top1.getAdId());
+                logMap.put("adverid", top1.getAdVerId());
+                logMap.put("adid", top1.getId());
+                logMap.put("campaignid", top1.getCampaignId());
                 logMap.put("score", top1.getScore());
-
                 Map<String, String> featureMap = top1.getFeatureMap();
                 featureMap.put("weight", String.valueOf(top1.getWeight()));
                 logMap.put("allfeature", JSON.toJSONString(featureMap));
-
                 logMap.put("metafeature", JSON.toJSONString(top1.getMetaFeatureMap()));
+                logMap.put("scoremap", JSON.toJSONString(top1.getScoreMap()));
 
-                logMap.put("abcode", param.getAdAbGroup());
-                logMap.put("scorestrategy", scoreStrategy);
-                logMap.put("apptype", context.getApptype());
-                logMap.put("extinfo", new JSONObject());
-                logMap.put("scoremap", new JSONObject());
+                // logMap.put("scorestrategy", scoreStrategy);
                 // logMap.put("creativeList", JSON.toJSONString(adIdList));
                 // if (Objects.nonNull(requestParam.getStatisticsLog())) {
                 //     extInfo.put("earlyAdIds", requestParam.getStatisticsLog().getEarlyAdIds());

+ 11 - 11
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/predict/container/TopOneVideoContainer.java

@@ -36,17 +36,17 @@ public class TopOneVideoContainer {
     @PostConstruct
     public void init(){
 //        refreshTopVideoIdCache();
-        timer = new Timer();
-        timer.schedule(new TimerTask() {
-            @Override
-            public void run() {
-                try {
-                    refreshTopVideoIdCache();
-                }catch (Exception e){
-                    log.error("svc=timerTask taskName=refreshTopVideoIdCache e={}",Arrays.toString(e.getStackTrace()));
-                }
-            }
-        }, 0);
+//         timer = new Timer();
+//         timer.schedule(new TimerTask() {
+//             @Override
+//             public void run() {
+//                 try {
+//                     refreshTopVideoIdCache();
+//                 }catch (Exception e){
+//                     log.error("svc=timerTask taskName=refreshTopVideoIdCache e={}",Arrays.toString(e.getStackTrace()));
+//                 }
+//             }
+//         }, 0);
 
     }
     public void refreshTopVideoIdCache(){

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

@@ -19,8 +19,6 @@ import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.time.LocalDateTime;
-import java.time.ZoneOffset;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -54,7 +52,6 @@ public class RankService680 {
         Map<String, Double> midTimeDiffMap = this.parseC1FeatureListToTimeDiffMap(midActionList, ts);
         Map<String, Double> actionStaticMap = this.parseC1FeatureListToActionStaticMap(midActionList);
 
-        Map<String, String> d1Feature = videoFeature.getOrDefault("alg_cid_feature_vid_cf", new HashMap<>());
         Map<String, String> d2Feature = videoFeature.getOrDefault("alg_cid_feature_vid_cf_rank", new HashMap<>());
 
         Map<String, Map<String, Double>> vidRankMaps = this.parseD2FeatureMap(d2Feature);
@@ -71,6 +68,8 @@ public class RankService680 {
             adRankItem.setAdVerId(dto.getAdVerId());
             adRankItem.setVideoId(request.getVideoId());
             adRankItem.setCpa(dto.getCpa());
+            adRankItem.setId(dto.getAdId());
+            adRankItem.setCampaignId(dto.getCampaignId());
 
             String cidStr = dto.getCreativeId().toString();
             Map<String, String> cidFeatureMap = new HashMap<>();
@@ -79,6 +78,9 @@ public class RankService680 {
 
             Map<String, Map<String, String>> adVerFeature = allAdVerFeature.getOrDefault(dto.getAdVerId(), new HashMap<>());
 
+            Map<String, String> d1Feature = cidFeature.getOrDefault("alg_cid_feature_vid_cf", new HashMap<>());
+
+
             this.handleB1Feature(b1Feature, cidFeatureMap, cidStr);
 
             this.handleB2ToB5AndB8Feature(cidFeature, adVerFeature, cidFeatureMap);
@@ -109,37 +111,24 @@ public class RankService680 {
         }
 
         // 打分排序
-        List<AdRankItem> items = ScorerUtils.getScorerPipeline(ScorerUtils.LR_ROV_SCORE_20240626)
+        List<AdRankItem> result = ScorerUtils.getScorerPipeline(ScorerUtils.LR_ROV_SCORE_20240626)
                 .scoring(new HashMap<>(), userFeatureMap, adRankItems);
 
-        List<AdRankItem> result = new ArrayList<>(items.size());
-        for (AdRankItem item : items) {
-            AdRankItem adRankItem = new AdRankItem();
-            adRankItem.setAdId(item.getAdId());
-            adRankItem.setCreativeCode(item.getCreativeCode());
-            adRankItem.setAdVerId(item.getAdVerId());
-            adRankItem.setVideoId(item.getVideoId());
-            adRankItem.setLrScore(item.getLrScore());
-
-            adRankItem.setScore(item.getLrScore() * item.getCpa());
-
-            adRankItem.getFeatureMap().putAll(item.getFeatureMap());
-            adRankItem.getFeatureMap().putAll(userFeatureMap);
-
+        for (AdRankItem item : result) {
+            item.setScore(item.getLrScore() * item.getCpa());
+            item.getFeatureMap().putAll(userFeatureMap);
             if (MapUtils.isNotEmpty(videoFeature)) {
-                adRankItem.getMetaFeatureMap().putAll(videoFeature);
+                item.getMetaFeatureMap().putAll(videoFeature);
             }
             if (MapUtils.isNotEmpty(userFeature)) {
-                adRankItem.getMetaFeatureMap().putAll(userFeature);
+                item.getMetaFeatureMap().putAll(userFeature);
             }
             if (allAdVerFeature.containsKey(item.getAdVerId())) {
-                adRankItem.getMetaFeatureMap().putAll(allAdVerFeature.get(item.getAdVerId()));
+                item.getMetaFeatureMap().putAll(allAdVerFeature.get(item.getAdVerId()));
             }
             if (allCidFeature.containsKey(String.valueOf(item.getAdId()))) {
-                adRankItem.getMetaFeatureMap().putAll(allCidFeature.get(String.valueOf(item.getAdId())));
+                item.getMetaFeatureMap().putAll(allCidFeature.get(String.valueOf(item.getAdId())));
             }
-
-            result.add(adRankItem);
         }
 
         Collections.sort(result);
@@ -388,10 +377,10 @@ public class RankService680 {
         Map<String, Double> midTimeDiffMap = new HashMap<>();
         for (TupleMapEntry<Tuple5> entry : midActionList) {
             String cid = entry.key;
-            long tsHistory = Long.parseLong(entry.value.f1);
-            long click = Long.parseLong(entry.value.f2);
-            long conver = Long.parseLong(entry.value.f3);
-            long d = (ts - tsHistory) / 3600 / 24;
+            double tsHistory = Double.parseDouble(entry.value.f1);
+            double click = Double.parseDouble(entry.value.f2);
+            double conver = Double.parseDouble(entry.value.f3);
+            double d = (ts - tsHistory) / 3600 / 24;
             if (!midTimeDiffMap.containsKey("timediff_view_" + cid)) {
                 midTimeDiffMap.put("timediff_view_" + cid, NumUtil.div(1, d));
             }

+ 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.getScoreMap().put("rovLrScore", pro);
         item.setLrScore(pro);
         return pro;
     }

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

@@ -30,7 +30,10 @@ public class AdPlatformCreativeDTO {
     private Double ecpm2;
 
     private double weight;
-
+    // 计划id
+    private Long campaignId;
+    // 广告id
+    private Long adId;
     /**
      * 定向打分参数
      */

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

@@ -92,16 +92,16 @@ public class RankServiceImpl implements RankService {
     private AdRankItem rankBy680(RankRecommendRequestParam request) {
         ScoreParam scoreParam = RequestConvert.requestConvert(request);
         List<AdRankItem> adRankItems = fmRankService.adItemRank(request, scoreParam);
-        List<JSONObject> collect = adRankItems.stream().map(i -> {
-            JSONObject json = new JSONObject();
-            json.put("cid", i.getAdId());
-            json.put("lrScore", i.getLrScore());
-            json.put("score", i.getScore());
-            json.put("metaFeatureMap", i.getMetaFeatureMap());
-            json.put("allFeatureMap", i.getFeatureMap());
-            return json;
-        }).collect(Collectors.toList());
-        log.info("LR模型打分结果: {}", JSON.toJSONString(collect));
+        // List<JSONObject> collect = adRankItems.stream().map(i -> {
+        //     JSONObject json = new JSONObject();
+        //     json.put("cid", i.getAdId());
+        //     json.put("lrScore", i.getLrScore());
+        //     json.put("score", i.getScore());
+        //     json.put("metaFeatureMap", i.getMetaFeatureMap());
+        //     json.put("allFeatureMap", i.getFeatureMap());
+        //     return json;
+        // }).collect(Collectors.toList());
+        // log.info("LR模型打分结果: {}", JSON.toJSONString(collect));
         logHubService.scoreLogUpload(scoreParam, request.getAdIdList(), adRankItems, request, "LRModelScore", "680");
         return adRankItems.get(0);
     }

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

@@ -23,38 +23,20 @@ public class TacticsAndLRModelScoreRankService {
     public List<AdRankItem> adItemRank(RankRecommendRequestParam requestParam, ScoreParam scoreParam) {
 
         // LR模型打分结果
-        // List<AdRankItem> adRankItems = rankService680.adItemRank(requestParam, scoreParam);
-
-        List<AdRankItem> adRankItems = new ArrayList<>();
-        for (AdPlatformCreativeDTO adPlatformCreativeDTO : requestParam.getAdIdList()) {
-            AdRankItem adRankItem = new AdRankItem();
-            adRankItem.setAdId(adPlatformCreativeDTO.getCreativeId());
-            adRankItems.add(adRankItem);
-        }
+        List<AdRankItem> result = rankService680.adItemRank(requestParam, scoreParam);
 
         Map<Long, AdDirectionScore> adDirectionScoreMap = requestParam.getAdIdList().stream()
                 .collect(Collectors.toMap(AdPlatformCreativeDTO::getCreativeId, AdPlatformCreativeDTO::getAdDirectionScore));
-        List<AdRankItem> result = new ArrayList<>();
-
-        for (AdRankItem adRankItem : adRankItems) {
-            AdRankItem item = new AdRankItem();
-            item.setAdId(adRankItem.getAdId());
-            item.setCreativeCode(adRankItem.getCreativeCode());
-            item.setAdVerId(adRankItem.getAdVerId());
-            item.setVideoId(item.getVideoId());
-            item.setLrScore(item.getLrScore());
 
-            double s1 = this.calcDirectionScore(item, adDirectionScoreMap.get(item.getAdId()));
-            item.setAdDirectionScore(s1);
+        for (AdRankItem adRankItem : result) {
 
-            double s2 = item.getLrScore();
+            double s1 = this.calcDirectionScore(adRankItem, adDirectionScoreMap.get(adRankItem.getAdId()));
+            adRankItem.setAdDirectionScore(s1);
 
-            item.setScore(2);
+            // 模型的打分结果已经乘CPA,此处不需要重复乘CPA
+            double s2 = adRankItem.getScore();
+            adRankItem.setScore(s1 * s2);
 
-            item.getFeatureMap().putAll(adRankItem.getFeatureMap());
-            item.getMetaFeatureMap().putAll(adRankItem.getMetaFeatureMap());
-
-            result.add(item);
         }
 
         Collections.sort(result);
@@ -81,7 +63,7 @@ public class TacticsAndLRModelScoreRankService {
 
         double s1 = (network * phoneModel * area * peoplePackage * excludeMin);
         double s2 = Math.pow(s1, exponent);
-
+        adRankItem.getScoreMap().put("adDirectionScore", s2);
         adRankItem.setAdDirectionScore(s2);
 
         Map<String, String> scoreDetailMap = new HashMap<>(scoreDetail);