Browse Source

Merge branch 'dev-xym-add-feature' into pre-master

# Conflicts:
#	ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/strategy/RankStrategyBy688.java
xueyiming 1 week ago
parent
commit
969c7f84a4

+ 1 - 1
ad-engine-commons/pom.xml

@@ -26,7 +26,7 @@
         <dependency>
         <dependency>
             <groupId>com.tzld.piaoquan</groupId>
             <groupId>com.tzld.piaoquan</groupId>
             <artifactId>recommend-feature-client</artifactId>
             <artifactId>recommend-feature-client</artifactId>
-            <version>1.1.21</version>
+            <version>1.1.22</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>com.tzld.piaoquan</groupId>
             <groupId>com.tzld.piaoquan</groupId>

+ 3 - 0
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/feature/Feature.java

@@ -20,4 +20,7 @@ public class Feature {
     // k1:mid、k2:表、v:特征值
     // k1:mid、k2:表、v:特征值
     private Map<String, Map<String, String>> userFeature = new HashMap<>();
     private Map<String, Map<String, String>> userFeature = new HashMap<>();
 
 
+    // k1:skuid、k2:表、v:特征值
+    private Map<String, Map<String, Map<String, String>>> skuFeature = new HashMap<>();
+
 }
 }

+ 8 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/feature/FeatureService.java

@@ -26,6 +26,7 @@ public class FeatureService {
     private static final String avUkFormat = "av:%s:%s";
     private static final String avUkFormat = "av:%s:%s";
     private static final String vidUkFormat = "v:%s:%s";
     private static final String vidUkFormat = "v:%s:%s";
     private static final String midUkFormat = "m:%s:%s";
     private static final String midUkFormat = "m:%s:%s";
+    private static final String skuUkFormat = "s:%s:%s";
 
 
     public Feature getFeature(Collection<String> cidList, Collection<String> adVerIdList, List<Long> skuIdList, ScoreParam param) {
     public Feature getFeature(Collection<String> cidList, Collection<String> adVerIdList, List<Long> skuIdList, ScoreParam param) {
         AdRequestContext context = param.getRequestContext();
         AdRequestContext context = param.getRequestContext();
@@ -137,6 +138,12 @@ public class FeatureService {
                     feature.getVideoFeature().put(tableName, JSONUtils.fromJson(value, new TypeToken<Map<String, String>>() {
                     feature.getVideoFeature().put(tableName, JSONUtils.fromJson(value, new TypeToken<Map<String, String>>() {
                     }, Collections.emptyMap()));
                     }, Collections.emptyMap()));
                     break;
                     break;
+                case "s":
+                    Map<String, Map<String, String>> skuFeatureMap = feature.getSkuFeature().getOrDefault(id, new HashMap<>());
+                    skuFeatureMap.put(tableName, JSONUtils.fromJson(value, new TypeToken<Map<String, String>>() {
+                    }, Collections.emptyMap()));
+                    feature.getAdVerFeature().put(id, skuFeatureMap);
+                    break;
             }
             }
         }
         }
 
 
@@ -170,7 +177,7 @@ public class FeatureService {
 
 
     private FeatureKeyProto genWithMidAndSkuId(String table, String mid, String skuId) {
     private FeatureKeyProto genWithMidAndSkuId(String table, String mid, String skuId) {
         return FeatureKeyProto.newBuilder()
         return FeatureKeyProto.newBuilder()
-                .setUniqueKey(String.format(cidUkFormat, table, skuId))
+                .setUniqueKey(String.format(skuUkFormat, table, skuId))
                 .setTableName(table)
                 .setTableName(table)
                 .putFieldValue("mid", mid)
                 .putFieldValue("mid", mid)
                 .putFieldValue("skuid", skuId)
                 .putFieldValue("skuid", skuId)

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

@@ -71,6 +71,7 @@ public class RankStrategyBy679 extends RankStrategyBasic {
         Map<String, Map<String, String>> videoFeature = feature.getVideoFeature();
         Map<String, Map<String, String>> videoFeature = feature.getVideoFeature();
         Map<String, Map<String, Map<String, String>>> allAdVerFeature = feature.getAdVerFeature();
         Map<String, Map<String, Map<String, String>>> allAdVerFeature = feature.getAdVerFeature();
         Map<String, Map<String, Map<String, String>>> allCidFeature = feature.getCidFeature();
         Map<String, Map<String, Map<String, String>>> allCidFeature = feature.getCidFeature();
+        Map<String, Map<String, Map<String, String>>> allSkuFeature = feature.getSkuFeature();
         Map<String, String> reqFeature = this.getReqFeature(scoreParam, request);
         Map<String, String> reqFeature = this.getReqFeature(scoreParam, request);
 
 
 
 
@@ -108,6 +109,7 @@ public class RankStrategyBy679 extends RankStrategyBasic {
                     adRankItem.setId(dto.getAdId());
                     adRankItem.setId(dto.getAdId());
                     adRankItem.setCampaignId(dto.getCampaignId());
                     adRankItem.setCampaignId(dto.getCampaignId());
                     adRankItem.setCpm(ObjUtil.nullOrDefault(dto.getCpm(), 90).doubleValue());
                     adRankItem.setCpm(ObjUtil.nullOrDefault(dto.getCpm(), 90).doubleValue());
+                    adRankItem.setSkuId(dto.getSkuId());
                     adRankItem.setRandom(random.nextInt(1000));
                     adRankItem.setRandom(random.nextInt(1000));
                     if (noApiAdVerIds.contains(dto.getAdVerId())) {
                     if (noApiAdVerIds.contains(dto.getAdVerId())) {
                         adRankItem.getExt().put("isApi", "0");
                         adRankItem.getExt().put("isApi", "0");
@@ -254,6 +256,13 @@ public class RankStrategyBy679 extends RankStrategyBasic {
                     item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
                     item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
                 }
                 }
             }
             }
+
+            Map<String, Map<String, String>> skuFeature = allSkuFeature.getOrDefault(String.valueOf(item.getSkuId()), new HashMap<>());
+            for (Map.Entry<String, Map<String, String>> entry : skuFeature.entrySet()) {
+                if (MapUtils.isNotEmpty(entry.getValue())) {
+                    item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
+                }
+            }
             item.getMetaFeatureMap().put("reqFeature", reqFeature);
             item.getMetaFeatureMap().put("reqFeature", reqFeature);
             item.getMetaFeatureMap().put("sceneFeature", sceneFeatureMap);
             item.getMetaFeatureMap().put("sceneFeature", sceneFeatureMap);
         }
         }

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

@@ -79,6 +79,7 @@ public class RankStrategyBy680 extends RankStrategyBasic {
         Map<String, Map<String, String>> videoFeature = feature.getVideoFeature();
         Map<String, Map<String, String>> videoFeature = feature.getVideoFeature();
         Map<String, Map<String, Map<String, String>>> allAdVerFeature = feature.getAdVerFeature();
         Map<String, Map<String, Map<String, String>>> allAdVerFeature = feature.getAdVerFeature();
         Map<String, Map<String, Map<String, String>>> allCidFeature = feature.getCidFeature();
         Map<String, Map<String, Map<String, String>>> allCidFeature = feature.getCidFeature();
+        Map<String, Map<String, Map<String, String>>> allSkuFeature = feature.getSkuFeature();
         Map<String, String> reqFeature = this.getReqFeature(scoreParam, request);
         Map<String, String> reqFeature = this.getReqFeature(scoreParam, request);
 
 
 
 
@@ -117,6 +118,7 @@ public class RankStrategyBy680 extends RankStrategyBasic {
                     adRankItem.setId(dto.getAdId());
                     adRankItem.setId(dto.getAdId());
                     adRankItem.setCampaignId(dto.getCampaignId());
                     adRankItem.setCampaignId(dto.getCampaignId());
                     adRankItem.setCpm(ObjUtil.nullOrDefault(dto.getCpm(), 90).doubleValue());
                     adRankItem.setCpm(ObjUtil.nullOrDefault(dto.getCpm(), 90).doubleValue());
+                    adRankItem.setSkuId(dto.getSkuId());
                     adRankItem.setRandom(random.nextInt(1000));
                     adRankItem.setRandom(random.nextInt(1000));
                     if (noApiAdVerIds.contains(dto.getAdVerId())) {
                     if (noApiAdVerIds.contains(dto.getAdVerId())) {
                         adRankItem.getExt().put("isApi", "0");
                         adRankItem.getExt().put("isApi", "0");
@@ -278,6 +280,13 @@ public class RankStrategyBy680 extends RankStrategyBasic {
                     top1Item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
                     top1Item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
                 }
                 }
             }
             }
+
+            Map<String, Map<String, String>> skuFeature = allSkuFeature.getOrDefault(String.valueOf(top1Item.getSkuId()), new HashMap<>());
+            for (Map.Entry<String, Map<String, String>> entry : skuFeature.entrySet()) {
+                if (MapUtils.isNotEmpty(entry.getValue())) {
+                    top1Item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
+                }
+            }
             top1Item.getMetaFeatureMap().put("reqFeature", reqFeature);
             top1Item.getMetaFeatureMap().put("reqFeature", reqFeature);
             top1Item.getMetaFeatureMap().put("sceneFeature", sceneFeatureMap);
             top1Item.getMetaFeatureMap().put("sceneFeature", sceneFeatureMap);
         }
         }

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

@@ -80,6 +80,7 @@ public class RankStrategyBy683 extends RankStrategyBasic {
         Map<String, Map<String, String>> videoFeature = feature.getVideoFeature();
         Map<String, Map<String, String>> videoFeature = feature.getVideoFeature();
         Map<String, Map<String, Map<String, String>>> allAdVerFeature = feature.getAdVerFeature();
         Map<String, Map<String, Map<String, String>>> allAdVerFeature = feature.getAdVerFeature();
         Map<String, Map<String, Map<String, String>>> allCidFeature = feature.getCidFeature();
         Map<String, Map<String, Map<String, String>>> allCidFeature = feature.getCidFeature();
+        Map<String, Map<String, Map<String, String>>> allSkuFeature = feature.getSkuFeature();
         Map<String, String> reqFeature = this.getReqFeature(scoreParam, request);
         Map<String, String> reqFeature = this.getReqFeature(scoreParam, request);
 
 
 
 
@@ -118,6 +119,7 @@ public class RankStrategyBy683 extends RankStrategyBasic {
                     adRankItem.setId(dto.getAdId());
                     adRankItem.setId(dto.getAdId());
                     adRankItem.setCampaignId(dto.getCampaignId());
                     adRankItem.setCampaignId(dto.getCampaignId());
                     adRankItem.setCpm(ObjUtil.nullOrDefault(dto.getCpm(), 90).doubleValue());
                     adRankItem.setCpm(ObjUtil.nullOrDefault(dto.getCpm(), 90).doubleValue());
+                    adRankItem.setSkuId(dto.getSkuId());
                     adRankItem.setRandom(random.nextInt(1000));
                     adRankItem.setRandom(random.nextInt(1000));
                     if (noApiAdVerIds.contains(dto.getAdVerId())) {
                     if (noApiAdVerIds.contains(dto.getAdVerId())) {
                         adRankItem.getExt().put("isApi", "0");
                         adRankItem.getExt().put("isApi", "0");
@@ -279,6 +281,13 @@ public class RankStrategyBy683 extends RankStrategyBasic {
                     top1Item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
                     top1Item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
                 }
                 }
             }
             }
+
+            Map<String, Map<String, String>> skuFeature = allSkuFeature.getOrDefault(String.valueOf(top1Item.getSkuId()), new HashMap<>());
+            for (Map.Entry<String, Map<String, String>> entry : skuFeature.entrySet()) {
+                if (MapUtils.isNotEmpty(entry.getValue())) {
+                    top1Item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
+                }
+            }
             top1Item.getMetaFeatureMap().put("reqFeature", reqFeature);
             top1Item.getMetaFeatureMap().put("reqFeature", reqFeature);
             top1Item.getMetaFeatureMap().put("sceneFeature", sceneFeatureMap);
             top1Item.getMetaFeatureMap().put("sceneFeature", sceneFeatureMap);
         }
         }

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

@@ -56,6 +56,7 @@ public class RankStrategyBy687 extends RankStrategyBasic {
         Map<String, Map<String, String>> videoFeature = feature.getVideoFeature();
         Map<String, Map<String, String>> videoFeature = feature.getVideoFeature();
         Map<String, Map<String, Map<String, String>>> allAdVerFeature = feature.getAdVerFeature();
         Map<String, Map<String, Map<String, String>>> allAdVerFeature = feature.getAdVerFeature();
         Map<String, Map<String, Map<String, String>>> allCidFeature = feature.getCidFeature();
         Map<String, Map<String, Map<String, String>>> allCidFeature = feature.getCidFeature();
+        Map<String, Map<String, Map<String, String>>> allSkuFeature = feature.getSkuFeature();
         Map<String, String> reqFeature = this.getReqFeature(scoreParam, request);
         Map<String, String> reqFeature = this.getReqFeature(scoreParam, request);
 
 
 
 
@@ -165,6 +166,7 @@ public class RankStrategyBy687 extends RankStrategyBasic {
                 adRankItem.setId(dto.getAdId());
                 adRankItem.setId(dto.getAdId());
                 adRankItem.setCampaignId(dto.getCampaignId());
                 adRankItem.setCampaignId(dto.getCampaignId());
                 adRankItem.setCpm(ObjUtil.nullOrDefault(dto.getCpm(), 90).doubleValue());
                 adRankItem.setCpm(ObjUtil.nullOrDefault(dto.getCpm(), 90).doubleValue());
+                adRankItem.setSkuId(dto.getSkuId());
                 adRankItem.setRandom(random.nextInt(1000));
                 adRankItem.setRandom(random.nextInt(1000));
 
 
                 String cidStr = dto.getCreativeId().toString();
                 String cidStr = dto.getCreativeId().toString();
@@ -260,6 +262,13 @@ public class RankStrategyBy687 extends RankStrategyBasic {
                     item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
                     item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
                 }
                 }
             }
             }
+
+            Map<String, Map<String, String>> skuFeature = allSkuFeature.getOrDefault(String.valueOf(item.getSkuId()), new HashMap<>());
+            for (Map.Entry<String, Map<String, String>> entry : skuFeature.entrySet()) {
+                if (MapUtils.isNotEmpty(entry.getValue())) {
+                    item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
+                }
+            }
             item.getMetaFeatureMap().put("reqFeature", reqFeature);
             item.getMetaFeatureMap().put("reqFeature", reqFeature);
             item.getMetaFeatureMap().put("sceneFeature", sceneFeatureMap);
             item.getMetaFeatureMap().put("sceneFeature", sceneFeatureMap);
         }
         }

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

@@ -89,6 +89,7 @@ public class RankStrategyBy688 extends RankStrategyBasic {
         Map<String, Map<String, String>> videoFeature = feature.getVideoFeature();
         Map<String, Map<String, String>> videoFeature = feature.getVideoFeature();
         Map<String, Map<String, Map<String, String>>> allAdVerFeature = feature.getAdVerFeature();
         Map<String, Map<String, Map<String, String>>> allAdVerFeature = feature.getAdVerFeature();
         Map<String, Map<String, Map<String, String>>> allCidFeature = feature.getCidFeature();
         Map<String, Map<String, Map<String, String>>> allCidFeature = feature.getCidFeature();
+        Map<String, Map<String, Map<String, String>>> allSkuFeature = feature.getSkuFeature();
         Map<String, String> reqFeature = this.getReqFeature(scoreParam, request);
         Map<String, String> reqFeature = this.getReqFeature(scoreParam, request);
 
 
         Map<String, String> userFeatureMap = new HashMap<>();
         Map<String, String> userFeatureMap = new HashMap<>();
@@ -156,6 +157,7 @@ public class RankStrategyBy688 extends RankStrategyBasic {
                     adRankItem.setId(dto.getAdId());
                     adRankItem.setId(dto.getAdId());
                     adRankItem.setCampaignId(dto.getCampaignId());
                     adRankItem.setCampaignId(dto.getCampaignId());
                     adRankItem.setCpm(ObjUtil.nullOrDefault(dto.getCpm(), 90).doubleValue());
                     adRankItem.setCpm(ObjUtil.nullOrDefault(dto.getCpm(), 90).doubleValue());
+                    adRankItem.setSkuId(dto.getSkuId());
                     adRankItem.setRandom(random.nextInt(1000));
                     adRankItem.setRandom(random.nextInt(1000));
                     if (noApiAdVerIds.contains(dto.getAdVerId())) {
                     if (noApiAdVerIds.contains(dto.getAdVerId())) {
                         adRankItem.getExt().put("isApi", "0");
                         adRankItem.getExt().put("isApi", "0");
@@ -170,7 +172,7 @@ public class RankStrategyBy688 extends RankStrategyBasic {
                     Map<String, String> b1Feature = cidFeature.getOrDefault("alg_cid_feature_basic_info", new HashMap<>());
                     Map<String, String> b1Feature = cidFeature.getOrDefault("alg_cid_feature_basic_info", new HashMap<>());
 
 
                     Map<String, Map<String, String>> adVerFeature = allAdVerFeature.getOrDefault(dto.getAdVerId(), new HashMap<>());
                     Map<String, Map<String, String>> adVerFeature = allAdVerFeature.getOrDefault(dto.getAdVerId(), new HashMap<>());
-
+                    Map<String, Map<String, String>> skuFeature = allSkuFeature.getOrDefault(String.valueOf(dto.getSkuId()), new HashMap<>());
                     Map<String, String> d1Feature = cidFeature.getOrDefault("alg_cid_feature_vid_cf", new HashMap<>());
                     Map<String, String> d1Feature = cidFeature.getOrDefault("alg_cid_feature_vid_cf", new HashMap<>());
 
 
                     this.handleB1Feature(b1Feature, cidFeatureMap, cidStr);
                     this.handleB1Feature(b1Feature, cidFeatureMap, cidStr);
@@ -179,7 +181,7 @@ public class RankStrategyBy688 extends RankStrategyBasic {
                     this.handleC1UIFeature(midTimeDiffMap, actionStaticMap, cidFeatureMap, cidStr);
                     this.handleC1UIFeature(midTimeDiffMap, actionStaticMap, cidFeatureMap, cidStr);
                     this.handleD1Feature(d1Feature, cidFeatureMap);
                     this.handleD1Feature(d1Feature, cidFeatureMap);
                     this.handleD2Feature(vidRankMaps, cidFeatureMap, cidStr);
                     this.handleD2Feature(vidRankMaps, cidFeatureMap, cidStr);
-                    this.handleH1AndH2Feature(cidFeature, adVerFeature, cidFeatureMap);
+                    this.handleH1AndH2Feature(skuFeature, adVerFeature, cidFeatureMap);
 
 
                     cidFeatureMap.put("cid", dto.getCreativeId() != null ? String.valueOf(dto.getCreativeId()) : "");
                     cidFeatureMap.put("cid", dto.getCreativeId() != null ? String.valueOf(dto.getCreativeId()) : "");
                     cidFeatureMap.put("adid", dto.getAdId() != null ? String.valueOf(dto.getAdId()) : "");
                     cidFeatureMap.put("adid", dto.getAdId() != null ? String.valueOf(dto.getAdId()) : "");
@@ -322,6 +324,13 @@ public class RankStrategyBy688 extends RankStrategyBasic {
                     top1Item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
                     top1Item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
                 }
                 }
             }
             }
+
+            Map<String, Map<String, String>> skuFeature = allSkuFeature.getOrDefault(String.valueOf(top1Item.getSkuId()), new HashMap<>());
+            for (Map.Entry<String, Map<String, String>> entry : skuFeature.entrySet()) {
+                if (MapUtils.isNotEmpty(entry.getValue())) {
+                    top1Item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
+                }
+            }
             top1Item.getMetaFeatureMap().put("reqFeature", reqFeature);
             top1Item.getMetaFeatureMap().put("reqFeature", reqFeature);
             top1Item.getMetaFeatureMap().put("sceneFeature", sceneFeatureMap);
             top1Item.getMetaFeatureMap().put("sceneFeature", sceneFeatureMap);
         }
         }
@@ -558,11 +567,11 @@ public class RankStrategyBy688 extends RankStrategyBasic {
         }
         }
     }
     }
 
 
-    private void handleH1AndH2Feature(Map<String, Map<String, String>> cidFeature,
+    private void handleH1AndH2Feature(Map<String, Map<String, String>> skuFeature,
                                       Map<String, Map<String, String>> adVerFeature,
                                       Map<String, Map<String, String>> adVerFeature,
                                       Map<String, String> cidFeatureMap) {
                                       Map<String, String> cidFeatureMap) {
         Map<String, String> h1Feature = adVerFeature.getOrDefault("alg_mid_feature_adver_action", new HashMap<>());
         Map<String, String> h1Feature = adVerFeature.getOrDefault("alg_mid_feature_adver_action", new HashMap<>());
-        Map<String, String> h2Feature = cidFeature.getOrDefault("alg_mid_feature_sku_action", new HashMap<>());
+        Map<String, String> h2Feature = skuFeature.getOrDefault("alg_mid_feature_sku_action", new HashMap<>());
         log.info("h1Feature={}",h1Feature);
         log.info("h1Feature={}",h1Feature);
         log.info("h2Feature={}",h2Feature);
         log.info("h2Feature={}",h2Feature);
         List<String> timeList = Arrays.asList("3d", "7d", "30d");
         List<String> timeList = Arrays.asList("3d", "7d", "30d");