Browse Source

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

zhaohaipeng 10 months ago
parent
commit
c0b87c9a24

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

@@ -12,6 +12,7 @@ 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.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -71,6 +72,7 @@ public class LogHubServiceImpl implements LogHubService {
                     JSONObject json = new JSONObject();
                     json.put("cid", rankItem.getAdId());
                     json.put("score", rankItem.getScore());
+                    json.put("scoremap", rankItem.getScoreMap());
                     JSONObject featureJson = new JSONObject();
                     for (Map.Entry<String, String> entry : rankItem.getFeatureMap().entrySet()) {
                         if (FEATURE_FIELD_SET.contains(entry.getKey())) {
@@ -82,7 +84,9 @@ public class LogHubServiceImpl implements LogHubService {
                             featureJson.put(entry.getKey(), entry.getValue());
                         }
                     }
-                    json.put("feature", featureJson);
+                    if (MapUtils.isNotEmpty(featureJson)) {
+                        json.put("feature", featureJson);
+                    }
                     scoreResult.add(json);
                 }
 

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

@@ -116,6 +116,7 @@ public class RankService680 {
 
         for (AdRankItem item : result) {
             item.setScore(item.getLrScore() * item.getCpa());
+            item.getScoreMap().put("cpa", item.getCpa());
             item.getFeatureMap().putAll(userFeatureMap);
             if (MapUtils.isNotEmpty(videoFeature)) {
                 item.getMetaFeatureMap().putAll(videoFeature);
@@ -145,6 +146,7 @@ public class RankService680 {
 
         List<String> adVerIdList = adIdList.stream()
                 .map(AdPlatformCreativeDTO::getAdVerId)
+                .filter(StringUtils::isNotBlank)
                 .distinct()
                 .collect(Collectors.toList());
         return featureService.getFeature(cidList, adVerIdList, param);

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

@@ -84,7 +84,7 @@ public class RankServiceImpl implements RankService {
         } else if (AbUtil.isInAbExp(expCodeSet, appType, newExpGroup, tacticsAndFmModelScoreExpCode)) {
             return rankBy679(requestParam);
         } else {
-            return adItemRankOld(requestParam);
+            return adItemRankWithVideoAdThompson(requestParam);
         }
     }
 

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

@@ -30,9 +30,9 @@ public class TacticsAndLRModelScoreRankService {
 
         for (AdRankItem adRankItem : result) {
 
-            double s1 = this.calcDirectionScore(adRankItem, adDirectionScoreMap.get(adRankItem.getAdId()));
-            adRankItem.setAdDirectionScore(s1);
+            this.calcDirectionScore(adRankItem, adDirectionScoreMap.get(adRankItem.getAdId()));
 
+            double s1 = adRankItem.getAdDirectionScore();
             // 模型的打分结果已经乘CPA,此处不需要重复乘CPA
             double s2 = adRankItem.getScore();
             adRankItem.setScore(s1 * s2);
@@ -45,6 +45,7 @@ public class TacticsAndLRModelScoreRankService {
 
     private double calcDirectionScore(AdRankItem adRankItem, AdDirectionScore adDirectionScore) {
         if (Objects.isNull(adDirectionScore)) {
+            adRankItem.getScoreMap().put("adDirectionScore", 1.0);
             adRankItem.setAdDirectionScore(1);
             return 1;
         }