Pārlūkot izejas kodu

rank尾号实验

jch 3 nedēļas atpakaļ
vecāks
revīzija
db151e4756

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

@@ -3,7 +3,9 @@ package com.tzld.piaoquan.ad.engine.commons.score;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRequestContext;
 import lombok.Data;
 
-import java.util.*;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * @author dyp
@@ -30,7 +32,9 @@ public class ScoreParam {
     private String expCode;
 
     private Boolean isFilterUser;
+    private Long appType;
+    String rootSessionId;
 
-    Map<String,Object> engineInfo;
+    Map<String, Object> engineInfo;
 }
 

+ 15 - 0
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/entity/RootSessionIdExpConfig.java

@@ -0,0 +1,15 @@
+package com.tzld.piaoquan.ad.engine.service.entity;
+
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+@Data
+public class RootSessionIdExpConfig {
+    private Set<Long> appType = new HashSet<>();
+    private Set<String> tail = new HashSet<>();
+    private Map<String, String> config = new HashMap<>();
+}

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

@@ -39,6 +39,7 @@ public class RequestConvert {
         scoreParam.setNewExpGroup(request.getNewExpGroup());
         scoreParam.setPqtId(request.getPqtId());
         scoreParam.setMid(request.getMid());
+        scoreParam.setAppType(request.getAppType());
 
         Set<String> expCodeSet = AbUtil.unfoldAllExpCode(request.getAdAbExpArr());
         scoreParam.setExpCodeSet(expCodeSet);
@@ -47,6 +48,7 @@ public class RequestConvert {
         String expCode = AbUtil.chooseAdAlgExpCode(expCodeSet, request.getAppType(), request.getNewExpGroup());
         scoreParam.setExpCode(expCode);
         if (request instanceof RankRecommendRequestParam) {
+            scoreParam.setRootSessionId(((RankRecommendRequestParam) request).getRootSessionId());
             scoreParam.setEngineInfo(((RankRecommendRequestParam) request).getEngineInfo());
         }
         return scoreParam;

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

@@ -1,10 +1,13 @@
 package com.tzld.piaoquan.ad.engine.service.score.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.tzld.piaoquan.ad.engine.commons.dto.AdPlatformCreativeDTO;
 import com.tzld.piaoquan.ad.engine.commons.param.RankRecommendRequestParam;
 import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
 import com.tzld.piaoquan.ad.engine.commons.score.ScorerUtils;
+import com.tzld.piaoquan.ad.engine.commons.util.RootSessionIdUtil;
+import com.tzld.piaoquan.ad.engine.service.entity.RootSessionIdExpConfig;
 import com.tzld.piaoquan.ad.engine.service.log.LogHubService;
 import com.tzld.piaoquan.ad.engine.service.predict.helper.NewExpInfoHelper;
 import com.tzld.piaoquan.ad.engine.service.predict.param.ThresholdPredictModelParam;
@@ -53,6 +56,8 @@ public class RankServiceImpl implements RankService {
     private LogHubService logHubService;
     @Autowired
     private AdCreativeFeatureContainer adCreativeFeatureContainer;
+    @Autowired
+    private RootSessionIdUtil rootSessionIdUtil;
 
     @Autowired
     private RankStrategyBy680 rankStrategyBy680;
@@ -83,6 +88,9 @@ public class RankServiceImpl implements RankService {
     @Value("${tactics.fm.mode.score.exp.code:679}")
     private String tacticsAndFmModelScoreExpCode;
 
+    @ApolloJsonValue("${rank.root.session.id.tail.config:[]}")
+    private List<RootSessionIdExpConfig> rankRootSessionIdConfig;
+
     public AdRankItem adItemRank(RankRecommendRequestParam request) {
         ScoreParam scoreParam = RequestConvert.requestConvert(request);
         RankStrategy rankStrategy = getRankStrategy(scoreParam);
@@ -98,7 +106,8 @@ public class RankServiceImpl implements RankService {
     }
 
     public RankStrategy getRankStrategy(ScoreParam scoreParam) {
-        switch (scoreParam.getExpCode()) {
+        String rankStrategyCode = getRankStrategyCode(scoreParam);
+        switch (rankStrategyCode) {
             case "687":
                 return ServiceBeanFactory.getBean(RankStrategyBy687.class);
             case "679":
@@ -128,6 +137,28 @@ public class RankServiceImpl implements RankService {
         }
     }
 
+    private String getRankStrategyCode(ScoreParam scoreParam) {
+        if (CollectionUtils.isNotEmpty(rankRootSessionIdConfig)) {
+            Long appType = scoreParam.getAppType();
+            String rootSessionId = scoreParam.getRootSessionId();
+            if (null != appType && null != rootSessionId) {
+                String tail = rootSessionIdUtil.getTail(rootSessionId);
+                if (null != tail) {
+                    for (RootSessionIdExpConfig item : rankRootSessionIdConfig) {
+                        if (null != item.getAppType() && null != item.getTail()) {
+                            if (item.getAppType().contains(appType) && item.getTail().contains(tail)) {
+                                if (null != item.getConfig() && item.getConfig().containsKey("rank")) {
+                                    return item.getConfig().get("rank");
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return scoreParam.getExpCode();
+    }
+
     private AdRankItem rankBy687(RankRecommendRequestParam request) {
         ScoreParam scoreParam = RequestConvert.requestConvert(request);
         List<AdRankItem> adRankItems = rankStrategyBy687.adItemRank(request, scoreParam);