jch 1 неделя назад
Родитель
Сommit
c7a803c734

+ 20 - 4
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/strategy/RankStrategyBasic.java

@@ -14,10 +14,7 @@ import com.tzld.piaoquan.ad.engine.commons.redis.AdRedisHelper;
 import com.tzld.piaoquan.ad.engine.commons.redis.AlgorithmRedisHelper;
 import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
 import com.tzld.piaoquan.ad.engine.commons.thread.ThreadPoolFactory;
-import com.tzld.piaoquan.ad.engine.commons.util.DateUtils;
-import com.tzld.piaoquan.ad.engine.commons.util.ObjUtil;
-import com.tzld.piaoquan.ad.engine.commons.util.RootSessionIdExpConfig;
-import com.tzld.piaoquan.ad.engine.commons.util.RootSessionIdTailUtil;
+import com.tzld.piaoquan.ad.engine.commons.util.*;
 import com.tzld.piaoquan.ad.engine.service.entity.*;
 import com.tzld.piaoquan.ad.engine.service.feature.Feature;
 import com.tzld.piaoquan.ad.engine.service.feature.FeatureService;
@@ -62,6 +59,9 @@ public abstract class RankStrategyBasic implements RankStrategy {
     @ApolloJsonValue("${h5.score.suppress.customer.white:[]}")
     private Set<Long> customerIdWhiteSet;
 
+    @ApolloJsonValue("${rank.strategy.cxr.zero.customer:{}}")
+    private Map<Long, Double> cxrZeroCustomerParams;
+
     @Value("${guarantee.exp:742}")
     protected String guaranteeExp;
 
@@ -1231,6 +1231,22 @@ public abstract class RankStrategyBasic implements RankStrategy {
         return 1.0;
     }
 
+    // zero cxr
+    protected double getCustomerZeroCxr(AdRankItem item, double smoothCxr) {
+        try {
+            if (ExtractorUtils.isDoubleEqualToZero(smoothCxr)) {
+                if (!org.springframework.util.CollectionUtils.isEmpty(cxrZeroCustomerParams) && !Objects.isNull(item)) {
+                    Long customerId = item.getCustomerId();
+                    if (null != customerId && cxrZeroCustomerParams.containsKey(customerId)) {
+                        return cxrZeroCustomerParams.get(customerId);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("getZeroCxr", e);
+        }
+        return smoothCxr;
+    }
 
     protected boolean landingH5Page(AdRankItem item) {
         if (Objects.isNull(item)) {

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

@@ -329,6 +329,7 @@ public class RankStrategyBy847 extends RankStrategyBasic {
                 double view = Double.parseDouble(b3Feature.getOrDefault("ad_view_14d", "0"));
                 double conver = Double.parseDouble(b3Feature.getOrDefault("ad_conversion_14d", "0"));
                 double smoothCxr = NumUtil.divSmoothV1(conver, view, 1.64);
+                smoothCxr = this.getCustomerZeroCxr(item, smoothCxr);
                 //模型打分和统计计算取打分更低的
                 item.getScoreMap().put("cvcvrItemValue", 1.0);
                 if (smoothCxr <= calibratedScore) {

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

@@ -329,6 +329,7 @@ public class RankStrategyBy849 extends RankStrategyBasic {
                 double view = Double.parseDouble(b3Feature.getOrDefault("ad_view_14d", "0"));
                 double conver = Double.parseDouble(b3Feature.getOrDefault("ad_conversion_14d", "0"));
                 double smoothCxr = NumUtil.divSmoothV1(conver, view, 1.64);
+                smoothCxr = this.getCustomerZeroCxr(item, smoothCxr);
                 //模型打分和统计计算取打分更低的
                 item.getScoreMap().put("cvcvrItemValue", 1.0);
                 if (smoothCxr <= calibratedScore) {

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

@@ -338,6 +338,7 @@ public class RankStrategyBy851 extends RankStrategyBasic {
                 double view = Double.parseDouble(b3Feature.getOrDefault("ad_view_14d", "0"));
                 double conver = Double.parseDouble(b3Feature.getOrDefault("ad_conversion_14d", "0"));
                 double smoothCxr = NumUtil.divSmoothV1(conver, view, 1.64);
+                smoothCxr = this.getCustomerZeroCxr(item, smoothCxr);
                 //模型打分和统计计算取打分更低的
                 item.getScoreMap().put("cvcvrItemValue", 1.0);
                 if (smoothCxr <= calibratedScore) {