| 
					
				 | 
			
			
				@@ -3,13 +3,16 @@ package com.tzld.piaoquan.recommend.server.service.rank; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.recommend.server.common.base.ItemFeature; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.recommend.server.common.base.RankItem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.tzld.piaoquan.recommend.server.common.base.RequestContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.recommend.server.common.base.UserFeature; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.recommend.server.common.enums.AppTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.tzld.piaoquan.recommend.server.model.MachineInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.recommend.server.model.Video; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.recommend.server.remote.FeatureRemoteService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.recommend.server.service.flowpool.FlowPoolConstants; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.recommend.server.service.recall.RecallResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.recommend.server.service.recall.strategy.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.tzld.piaoquan.recommend.server.service.score.ScoreParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.recommend.server.service.score.ScorerUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.recommend.server.util.CommonCollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.recommend.server.util.JSONUtils; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -21,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.data.redis.core.RedisTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.text.SimpleDateFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -164,7 +168,7 @@ public class RankService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // TODO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<RankItem> rovRecallScore = ScorerUtils.getScorerPipeline(ScorerUtils.BASE_CONF) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .scoring(param, userFeature, rankItems); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .scoring(convert(param), userFeature, rankItems); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log.info("mergeAndRankRovRecall rovRecallScore={}", JSONUtils.toJson(rovRecallScore)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return CommonCollectionUtils.toList(rovRecallScore, i -> { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -175,6 +179,35 @@ public class RankService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private ScoreParam convert(RankParam param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ScoreParam scoreParam = new ScoreParam(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // TODO hardcode 为了兼容写入逻辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        RequestContext context = new RequestContext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        context.setApptype(param.getAppType() + ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // TODO 地域转换 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        context.setRegion(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        context.setCity(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Calendar calendar = Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        context.setWeek((calendar.get(Calendar.DAY_OF_WEEK) + 6) % 7 + ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        context.setDay(new SimpleDateFormat("yyyyMMdd").format(calendar.getTime())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        context.setHour(new SimpleDateFormat("HH").format(calendar.getTime())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MachineInfo machineInfo = param.getMachineInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (machineInfo != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            context.setMachineinfo_brand(machineInfo.getBrand()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            context.setMachineinfo_model(machineInfo.getModel()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            context.setMachineinfo_platform(machineInfo.getPlatform()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            context.setMachineinfo_sdkversion(machineInfo.getSdkVersion()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            context.setMachineinfo_system(machineInfo.getSystem()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            context.setMachineinfo_wechatversion(machineInfo.getWechatVersion()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        scoreParam.setRequestContext(context); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return scoreParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private List<Video> mergeAndRankFlowPoolRecall(RankParam param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (param.getAppType() == AppTypeEnum.LAO_HAO_KAN_VIDEO.getCode() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 || param.getAppType() == AppTypeEnum.ZUI_JING_QI.getCode()) { 
			 |