Przeglądaj źródła

Merge remote-tracking branch 'origin/test' into pre-master

gufengshou1 1 rok temu
rodzic
commit
561c26e77d
16 zmienionych plików z 261 dodań i 114 usunięć
  1. 1 1
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdItemBytesFeature.java
  2. 30 23
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdItemFeature.java
  3. 1 7
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdRequestContext.java
  4. 2 4
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdRequestContextBytesFeature.java
  5. 62 61
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/UserAdFeature.java
  6. 2 2
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/ScoreParam.java
  7. 2 2
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/LRBytesFeatureExtractorBase.java
  8. 3 4
      ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/VlogAdCtrLRFeatureExtractor.java
  9. 7 0
      ad-engine-server/src/main/java/com/tzld/piaoquan/ad/engine/server/Application.java
  10. 5 0
      ad-engine-server/src/main/java/com/tzld/piaoquan/ad/engine/server/controller/HealthController.java
  11. 2 5
      ad-engine-server/src/main/java/com/tzld/piaoquan/ad/engine/server/controller/PredictController.java
  12. 3 0
      ad-engine-server/src/main/resources/application-dev.yml
  13. 7 0
      ad-engine-server/src/main/resources/feeds_score_config_baseline.conf
  14. 5 1
      ad-engine-service/pom.xml
  15. 125 0
      ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/FeatureRemoteService.java
  16. 4 4
      ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/VlogAdCtrLRScorer.java

+ 1 - 1
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdItemBytesFeature.java

@@ -42,7 +42,7 @@ public class AdItemBytesFeature {
         advertiserCode = feature.getAdvertiserCode().getBytes();
         campaignId = feature.getCampaignId().getBytes();
         campaignCode = feature.getCampaignCode().getBytes();
-        creative = feature.getCreative().getBytes();
+        creative = feature.getCreativeId().getBytes();
         creativeCode = feature.getCreativeCode().getBytes();
 
 

+ 30 - 23
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdItemFeature.java

@@ -4,28 +4,43 @@ import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
+import lombok.Setter;
 
 import javax.validation.constraints.NotNull;
 
 @Getter
 @NoArgsConstructor
 public class AdItemFeature {
+    @Setter
     @NotNull
-    private String adId;
+    private String adId = "0";
 
-    private String adCode;
-
-    private String advertiserId;
+    @Setter
+    @NotNull
+    private String adCode = "0";
 
-    private String advertiserCode;
+    @Setter
+    @NotNull
+    private String advertiserId = "0";
+    @Setter
+    @NotNull
+    private String advertiserCode = "0";
+    @Setter
+    @NotNull
+    private String campaignId = "0";
 
-    private String campaignId;
+    @Setter
+    @NotNull
+    private String campaignCode = "0";
 
-    private String campaignCode;
+    @Setter
+    @NotNull
+    private String creativeId = "0";
 
-    private String creative;
+    @Setter
+    @NotNull
+    private String creativeCode = "0";
 
-    private String creativeCode;
 
 
     // 当天统计量信息
@@ -38,31 +53,23 @@ public class AdItemFeature {
     private AdActionFeature month3_cnt_features;
 
 
-    public void setAdvertiserId(String key){
-        if(key == null){
-            this.advertiserId = "0";
-        } else {
-            this.advertiserId = key;
-        }
-    }
-
-    public void setDay1_cnt_features(AdActionFeature feature){
+    public void setDay1_cnt_features(AdActionFeature feature) {
         this.day1_cnt_features = feature;
     }
 
 
-    public void setDay3_cnt_features(AdActionFeature feature){
+    public void setDay3_cnt_features(AdActionFeature feature) {
         this.day3_cnt_features = feature;
 
     }
 
-    public void setDay7_cnt_features(AdActionFeature feature){
+    public void setDay7_cnt_features(AdActionFeature feature) {
         this.day7_cnt_features = feature;
 
     }
 
-    public void setMonth3_cnt_features(AdActionFeature feature){
-        this.month3_cnt_features= feature;
+    public void setMonth3_cnt_features(AdActionFeature feature) {
+        this.month3_cnt_features = feature;
 
     }
 
@@ -70,7 +77,7 @@ public class AdItemFeature {
         return this.adId;
     }
 
-    public String getValue(){
+    public String getValue() {
         Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
         return gson.toJson(this);
     }

+ 1 - 7
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/RequestContext.java → ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdRequestContext.java

@@ -6,13 +6,12 @@ import lombok.NoArgsConstructor;
 
 @Getter
 @NoArgsConstructor
-public class RequestContext {
+public class AdRequestContext {
 
     // 机型等信息
     private String apptype;
     private String machineinfoBrand;
     private String machineinfoModel;
-    private String machineinfoPlatform;
     private String machineinfoSdkversion;
     private String machineinfoSystem;
     private String machineinfoWechatversion;
@@ -65,11 +64,6 @@ public class RequestContext {
             this.machineinfoSdkversion = "-1";
     }
 
-    public void setMachineinfoPlatform(String machineinfo_platform) {
-        this.machineinfoPlatform = machineinfo_platform;
-        if (machineinfoPlatform == null)
-            this.machineinfoPlatform = "-1";
-    }
 
     public void setMachineinfo_system(String machineinfo_system) {
         this.machineinfoSystem = machineinfo_system;

+ 2 - 4
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/RequestContextBytesFeature.java → ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/AdRequestContextBytesFeature.java

@@ -4,11 +4,10 @@ package com.tzld.piaoquan.ad.engine.commons.base;
 import lombok.Data;
 
 @Data
-public class RequestContextBytesFeature {
+public class AdRequestContextBytesFeature {
     private final byte[] apptype;
     private final byte[] machineinfo_brand;
     private final byte[] machineinfo_model;
-    private final byte[] machineinfo_platform;
     private final byte[] machineinfo_sdkversion;
     private final byte[] machineinfo_system;
     private final byte[] machineinfo_wechatversion;
@@ -28,11 +27,10 @@ public class RequestContextBytesFeature {
     private final byte[] ownAdPositionId;
 
 
-    public RequestContextBytesFeature(RequestContext requestContext) {
+    public AdRequestContextBytesFeature(AdRequestContext requestContext) {
         apptype = requestContext.getApptype().getBytes();
         machineinfo_brand = requestContext.getMachineinfoBrand().getBytes();
         machineinfo_model = requestContext.getMachineinfoModel().getBytes();
-        machineinfo_platform = requestContext.getMachineinfoPlatform().getBytes();
         machineinfo_sdkversion = requestContext.getMachineinfoSdkversion().getBytes();
         machineinfo_system = requestContext.getMachineinfoSystem().getBytes();
         machineinfo_wechatversion = requestContext.getMachineinfoWechatversion().getBytes();

+ 62 - 61
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/base/UserAdFeature.java

@@ -4,54 +4,66 @@ import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
 
 @Getter
 @NoArgsConstructor
+@Setter
+@NotNull
 public class UserAdFeature {
-    private String mid;
-
-    private String gender;
-    private String user_type;
-    private String gmt_create;
-    private String tags;
-    private String category_name;
-    private String isvip;
-    private String isreward;
-    private String isad;
-    private String isgood;
-
-    private String first_up_datetime;
-    private String last_up_datetime;
-    private String next_to_last_up_datetime;
-    private String videos; // 上传视频数量
-    private String idols; // 关注人数
-    private String fans;  // 粉丝数
-    private String play_count;  // 播放人数
-    private String play_count_total;  // 累计播放次数
-
-    private String total_reward;
-    private String currentday_reward;
-    private String reward_person;
-    private String total_reward_times;
-
-    private String reward_videos;
-    private String total_price;
-    private String currentday_price;
-    private String total_price_times;
-    private String total_price_person;
-    private String total_price_videos;
-    private String cgrain_user_type;
-    private String identity_tagname;
-
-
-    private String operation_tags;
-    private String identity_tag_id;
-    private String identity_create_time;
-    private String country;
-    private String province;
-    private String city;
 
+    private String mid = "0";
+
+    private String gender = "0";
+
+    private String user_type = "0";
+
+    private String gmt_create = "0";
+
+    private String tags = "0";
+
+    private String category_name = "0";
+
+    private String isvip = "0";
+
+    private String isreward = "0";
+
+    private String isad = "0";
+
+    private String isgood = "0";
+
+    private String first_up_datetime = "0";
+    private String last_up_datetime = "0";
+    private String next_to_last_up_datetime = "0";
+    private String videos = "0"; // 上传视频数量
+    private String idols = "0"; // 关注人数
+    private String fans = "0";  // 粉丝数
+    private String play_count = "0";  // 播放人数
+    private String play_count_total = "0";  // 累计播放次数
 
+    private String total_reward = "0";
+    private String currentday_reward = "0";
+    private String reward_person = "0";
+    private String total_reward_times = "0";
+
+    private String reward_videos = "0";
+    private String total_price = "0";
+    private String currentday_price = "0";
+    private String total_price_times = "0";
+    private String total_price_person = "0";
+    private String total_price_videos = "0";
+    private String cgrain_user_type = "0";
+    private String identity_tagname = "0";
+
+
+    private String operation_tags = "0";
+    private String identity_tag_id = "0";
+    private String identity_create_time = "0";
+    private String country = "0";
+    private String province = "0";
+    private String city = "0";
 
 
     // 当天统计量信息
@@ -64,47 +76,36 @@ public class UserAdFeature {
     private AdActionFeature month3_cnt_features;
 
 
-
-
-    public void setMid(String key){
-        this.mid = key;
-        if(key == null)
-            this.mid = "0";
-    }
-
-
-    public void setDay1_cnt_features(AdActionFeature key){
+    public void setDay1_cnt_features(AdActionFeature key) {
         this.day1_cnt_features = key;
-        if(key == null)
+        if (key == null)
             this.day1_cnt_features = new AdActionFeature();
     }
 
-    public void setDay3_cnt_features(AdActionFeature key){
+    public void setDay3_cnt_features(AdActionFeature key) {
         this.day3_cnt_features = key;
-        if(key == null)
+        if (key == null)
             this.day3_cnt_features = new AdActionFeature();
     }
 
-    public void setDay7_cnt_features(AdActionFeature key){
+    public void setDay7_cnt_features(AdActionFeature key) {
         this.day7_cnt_features = key;
-        if(key == null)
+        if (key == null)
             this.day7_cnt_features = new AdActionFeature();
     }
 
     public void setMonth3_cnt_features(AdActionFeature key) {
         this.month3_cnt_features = key;
-        if(key == null)
+        if (key == null)
             this.month3_cnt_features = new AdActionFeature();
     }
 
 
-
-
     public String getKey() {
         return this.mid;
     }
 
-    public String getValue(){
+    public String getValue() {
         Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
         return gson.toJson(this);
     }

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

@@ -1,6 +1,6 @@
 package com.tzld.piaoquan.ad.engine.commons.score;
 
-import com.tzld.piaoquan.ad.engine.commons.base.RequestContext;
+import com.tzld.piaoquan.ad.engine.commons.base.AdRequestContext;
 import lombok.Data;
 
 /**
@@ -8,5 +8,5 @@ import lombok.Data;
  */
 @Data
 public class ScoreParam {
-    private RequestContext requestContext;
+    private AdRequestContext requestContext;
 }

+ 2 - 2
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/LRBytesFeatureExtractorBase.java

@@ -3,7 +3,7 @@ package com.tzld.piaoquan.ad.engine.commons.score.feature;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ListMultimap;
 import com.tzld.piaoquan.ad.engine.commons.base.AdItemBytesFeature;
-import com.tzld.piaoquan.ad.engine.commons.base.RequestContextBytesFeature;
+import com.tzld.piaoquan.ad.engine.commons.base.AdRequestContextBytesFeature;
 import com.tzld.piaoquan.ad.engine.commons.base.UserAdBytesFeature;
 import com.tzld.piaoquan.ad.engine.commons.enums.VlogAdFeatureGroup;
 import com.tzld.piaoquan.recommend.server.gen.recommend.BaseFeature;
@@ -61,7 +61,7 @@ public abstract class LRBytesFeatureExtractorBase {
 
     public abstract LRSamples single(UserAdBytesFeature userBytesFeature,
                                      AdItemBytesFeature videoBytesFeature,
-                                     RequestContextBytesFeature requestContextBytesFeature);
+                                     AdRequestContextBytesFeature requestContextBytesFeature);
 
 
 }

+ 3 - 4
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/score/feature/VlogAdCtrLRFeatureExtractor.java

@@ -1,7 +1,7 @@
 package com.tzld.piaoquan.ad.engine.commons.score.feature;
 
 import com.tzld.piaoquan.ad.engine.commons.base.AdItemBytesFeature;
-import com.tzld.piaoquan.ad.engine.commons.base.RequestContextBytesFeature;
+import com.tzld.piaoquan.ad.engine.commons.base.AdRequestContextBytesFeature;
 import com.tzld.piaoquan.ad.engine.commons.base.UserAdBytesFeature;
 import com.tzld.piaoquan.ad.engine.commons.enums.VlogAdFeatureGroup;
 import com.tzld.piaoquan.recommend.server.gen.recommend.FeatureGroup;
@@ -22,10 +22,9 @@ public class VlogAdCtrLRFeatureExtractor extends LRBytesFeatureExtractorBase {
 
     // TODO
     // 补充待抽取的context feature
-    public void getContextFeatures(RequestContextBytesFeature requestContextBytes) {
+    public void getContextFeatures(AdRequestContextBytesFeature requestContextBytes) {
         makeFea(VlogAdFeatureGroup.MACHINEINFO_BRAND, requestContextBytes.getMachineinfo_brand());
         makeFea(VlogAdFeatureGroup.MACHINEINFO_MODEL, requestContextBytes.getMachineinfo_model());
-        makeFea(VlogAdFeatureGroup.MACHINEINFO_PLATFORM, requestContextBytes.getMachineinfo_platform());
         makeFea(VlogAdFeatureGroup.MACHINEINFO_SDKVERSION, requestContextBytes.getMachineinfo_sdkversion());
         makeFea(VlogAdFeatureGroup.MACHINEINFO_SYSTEM, requestContextBytes.getMachineinfo_system());
         makeFea(VlogAdFeatureGroup.MACHINEINFO_WECHATVERSION, requestContextBytes.getMachineinfo_brand());
@@ -107,7 +106,7 @@ public class VlogAdCtrLRFeatureExtractor extends LRBytesFeatureExtractorBase {
     @Override
     public synchronized LRSamples single(UserAdBytesFeature userAdBytesFeature,
                                          AdItemBytesFeature videoBytesFeature,
-                                         RequestContextBytesFeature requestContextBytesFeature) {
+                                         AdRequestContextBytesFeature requestContextBytesFeature) {
         features.clear();
         // extract features
         getUserFeatures(userAdBytesFeature);

+ 7 - 0
ad-engine-server/src/main/java/com/tzld/piaoquan/ad/engine/server/Application.java

@@ -1,12 +1,14 @@
 package com.tzld.piaoquan.ad.engine.server;
 
 import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
+import com.tzld.piaoquan.recommend.feature.client.FeatureClient;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
 import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.scheduling.annotation.EnableScheduling;
@@ -27,4 +29,9 @@ public class Application {
     public static void main(String[] args) {
         SpringApplication.run(Application.class, args);
     }
+
+//    @Bean
+//    public FeatureClient featureClient() {
+//        return new FeatureClient();
+//    }
 }

+ 5 - 0
ad-engine-server/src/main/java/com/tzld/piaoquan/ad/engine/server/controller/HealthController.java

@@ -6,4 +6,9 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping("/health")
 public class HealthController {
+
+    @RequestMapping("/check")
+    public String check(){
+        return "success"+System.currentTimeMillis();
+    }
 }

+ 2 - 5
ad-engine-server/src/main/java/com/tzld/piaoquan/ad/engine/server/controller/PredictController.java

@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Map;
+import java.util.*;
 
 @RestController
 @RequestMapping("/predict")
@@ -27,12 +27,9 @@ public class PredictController {
     }
 
 
-    @RequestMapping("/test")
-    public String adPredictByAbTestModel(){
-        return "success"+System.currentTimeMillis();
-    }
     @RequestMapping("/roi/model")
     public Map<String,Object> adPredictByRoiModel(@RequestBody RoiPredictModelRequestParam param){
         return predictModelService.adRecommendPredictByRoiModel(param);
     }
+
 }

+ 3 - 0
ad-engine-server/src/main/resources/application-dev.yml

@@ -6,6 +6,9 @@ eureka:
     serviceUrl:
       defaultZone: http://deveureka-internal.piaoquantv.com/eureka/
 
+datalog: .
+
+
 spring:
   datasource:
     jdbcUrl: jdbc:mysql://rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com:3306/longvideo?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true

+ 7 - 0
ad-engine-server/src/main/resources/feeds_score_config_baseline.conf

@@ -0,0 +1,7 @@
+scorer-config = {
+  related-score-config = {
+    scorer-name = "com.tzld.piaoquan.recommend.server.service.score.VlogShareLRScorer"
+    scorer-priority = 99
+    model-path = "model/model_new.txt"
+  }
+}

+ 5 - 1
ad-engine-service/pom.xml

@@ -28,7 +28,11 @@
             <artifactId>protobuf-java</artifactId>
             <version>3.12.0</version>
         </dependency>
-
+        <dependency>
+            <groupId>com.tzld.piaoquan</groupId>
+            <artifactId>recommend-feature-client</artifactId>
+            <version>1.0.0</version>
+        </dependency>
 
     </dependencies>
 </project>

+ 125 - 0
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/FeatureRemoteService.java

@@ -0,0 +1,125 @@
+//package com.tzld.piaoquan.ad.engine.service.score;
+//
+//import com.tzld.piaoquan.ad.engine.commons.base.AdActionFeature;
+//import com.tzld.piaoquan.ad.engine.commons.base.UserAdFeature;
+//import com.tzld.piaoquan.recommend.feature.client.FeatureClient;
+//import com.tzld.piaoquan.recommend.feature.model.feature.UserActionFeatureProto;
+//import com.tzld.piaoquan.recommend.feature.model.feature.UserFeatureProto;
+//import com.tzld.piaoquan.recommend.feature.model.feature.VideoFeatureProto;
+//import lombok.extern.slf4j.Slf4j;
+//import org.apache.commons.lang.StringUtils;
+//import org.apache.commons.lang.math.NumberUtils;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Component;
+//import org.springframework.util.CollectionUtils;
+//
+//import java.util.Collections;
+//import java.util.List;
+//import java.util.Map;
+//
+//
+///**
+// * @author dyp
+// */
+//@Component
+//@Slf4j
+//public class FeatureRemoteService {
+//
+//    @Autowired
+//    private FeatureClient client;
+//
+//    // 有性能问题再增加localCache
+//    public UserAdFeature getUserFeature(String uid) {
+//        if (StringUtils.isBlank(uid)) {
+//            return null;
+//        }
+//        UserFeatureProto proto = client.getUserFeature(uid);
+//        UserAdFeature adFeature=convert(proto);
+//
+//        return convert(proto);
+//    }
+//
+//    private UserAdFeature convert(UserFeatureProto proto) {
+//        if (proto == null) {
+//            return null;
+//        }
+//        UserAdFeature feature = new UserAdFeature();
+//        //todo
+//        feature.setUser_type(proto.getUid());
+//        if (proto.hasDay1CntFeature()) {
+//            feature.setDay1_cnt_features(convert(proto.getDay1CntFeature()));
+//        }
+//        if (proto.hasDay3CntFeature()) {
+//            feature.setDay3_cnt_features(convert(proto.getDay3CntFeature()));
+//        }
+//        if (proto.hasDay7CntFeature()) {
+//            feature.setDay7_cnt_features(convert(proto.getDay7CntFeature()));
+//        }
+//        if (proto.hasMonth3CntFeature()) {
+//            feature.setMonth3_cnt_features(convert(proto.getMonth3CntFeature()));
+//        }
+//
+//
+//        return feature;
+//    }
+//
+//    private AdActionFeature convert(UserActionFeatureProto proto) {
+//        AdActionFeature feature = new AdActionFeature();
+//        feature.setAdView(proto.get());
+//        feature.setCtr(proto.getCtr());
+//        feature.setExp_cnt(proto.getExpCnt());
+//        feature.setReturn_cnt(proto.getReturnCnt());
+//        feature.setRov(proto.getRov());
+//        feature.setShare_cnt(proto.getShareCnt());
+//        feature.setStr(proto.getStr());
+//        return feature;
+//    }
+//
+//    public ItemFeature getVideoFeature(Long videoId) {
+//        if (videoId == null) {
+//            return null;
+//        }
+//        VideoFeatureProto proto = client.getVideoFeature(videoId);
+//        return convert(proto);
+//    }
+//
+//    public Map<Long, ItemFeature> getVideoFeatureMap(List<Long> videoIds) {
+//        if (CollectionUtils.isEmpty(videoIds)) {
+//            return Collections.emptyMap();
+//        }
+//        List<VideoFeatureProto> protoList = client.getAllVideoFeature(videoIds);
+//        return CommonCollectionUtils.toMap(protoList, p -> NumberUtils.toLong(p.getVideoId(), 0L), this::convert);
+//    }
+//
+//
+//    private ItemFeature convert(VideoFeatureProto proto) {
+//        if (proto == null) {
+//            return null;
+//        }
+//        ItemFeature feature = new ItemFeature();
+//
+//        feature.setPlayLength(proto.getPlayLength());
+//        feature.setTags(proto.getTags());
+//        feature.setTotalTime(proto.getTotalTime());
+//        feature.setUpId(proto.getUpId());
+//        feature.setVideoId(proto.getVideoId());
+//        feature.setDaysSinceUpload(proto.getDaysSinceUpload());
+//
+//
+//        if (proto.hasVideoDay1CntFeature()) {
+//            feature.setDay1_cnt_features(convert(proto.getVideoDay1CntFeature()));
+//        }
+//        if (proto.hasVideoDay3CntFeature()) {
+//            feature.setDay3_cnt_features(convert(proto.getVideoDay3CntFeature()));
+//        }
+//        if (proto.hasVideoDay7CntFeature()) {
+//            feature.setDay7_cnt_features(convert(proto.getVideoDay7CntFeature()));
+//        }
+//        if (proto.hasVideoMonth3CntFeature()) {
+//            feature.setMonth3_cnt_features(convert(proto.getVideoMonth3CntFeature()));
+//        }
+//        return feature;
+//    }
+//
+//
+//}

+ 4 - 4
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/VlogAdCtrLRScorer.java

@@ -60,7 +60,7 @@ public class VlogAdCtrLRScorer extends BaseLRModelScorer {
     }
 
     private List<AdRankItem> rankByJava(final List<AdRankItem> items,
-                                      final RequestContext requestContext,
+                                      final AdRequestContext requestContext,
                                       final UserAdFeature user) {
         long startTime = System.currentTimeMillis();
         LRModel model = (LRModel) this.getModel();
@@ -95,7 +95,7 @@ public class VlogAdCtrLRScorer extends BaseLRModelScorer {
     public double calcScore(final LRModel lrModel,
                             final AdRankItem item,
                             final UserAdBytesFeature userInfoBytes,
-                            final RequestContext requestContext) {
+                            final AdRequestContext requestContext) {
 
         LRSamples lrSamples = null;
         VlogAdCtrLRFeatureExtractor bytesFeatureExtractor;
@@ -104,7 +104,7 @@ public class VlogAdCtrLRScorer extends BaseLRModelScorer {
         try {
             AdItemBytesFeature newsInfoBytes = new AdItemBytesFeature(item.getItemFeature());
             lrSamples = bytesFeatureExtractor.single(userInfoBytes, newsInfoBytes,
-                    new RequestContextBytesFeature(requestContext));
+                    new AdRequestContextBytesFeature(requestContext));
         } catch (Exception e) {
             LOGGER.error("extract feature error for imei={}, doc={}, [{}]", new Object[]{new String(userInfoBytes.getMid()), item.getAdId(),
                     ExceptionUtils.getFullStackTrace(e)});
@@ -141,7 +141,7 @@ public class VlogAdCtrLRScorer extends BaseLRModelScorer {
      */
     private void multipleCtrScore(final List<AdRankItem> items,
                                   final UserAdBytesFeature userInfoBytes,
-                                  final RequestContext requestContext,
+                                  final AdRequestContext requestContext,
                                   final LRModel model) {
 
         List<Callable<Object>> calls = new ArrayList<Callable<Object>>();