|  | @@ -11,7 +11,8 @@ import config
 | 
	
		
			
				|  |  |  from log import Log
 | 
	
		
			
				|  |  |  from config import set_config
 | 
	
		
			
				|  |  |  from video_recall import PoolRecall
 | 
	
		
			
				|  |  | -from video_rank import video_new_rank2, video_sank_pos_rank,video_new_rank,video_rank,refactor_video_rank, bottom_strategy, video_rank_by_w_h_rate, video_rank_with_old_video, bottom_strategy2
 | 
	
		
			
				|  |  | +from video_rank import video_new_rank2, video_sank_pos_rank, video_new_rank, video_rank, refactor_video_rank, \
 | 
	
		
			
				|  |  | +    bottom_strategy, video_rank_by_w_h_rate, video_rank_with_old_video, bottom_strategy2, video_new_rank3
 | 
	
		
			
				|  |  |  from db_helper import RedisHelper
 | 
	
		
			
				|  |  |  import gevent
 | 
	
		
			
				|  |  |  from utils import FilterVideos, get_user_has30day_return
 | 
	
	
		
			
				|  | @@ -421,7 +422,8 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
 | 
	
		
			
				|  |  |  def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, algo_type, client_info,
 | 
	
		
			
				|  |  |                      expire_time=24*3600, ab_code=config_.AB_CODE['initial'], rule_key='', data_key='',
 | 
	
		
			
				|  |  |                      no_op_flag=False, old_video_index=-1, video_id=None, params=None, rule_key_30day=None,
 | 
	
		
			
				|  |  | -                    shield_config=None, env_dict=None, level_weight=None, flow_pool_abtest_group=None):
 | 
	
		
			
				|  |  | +                    shield_config=None, env_dict=None, level_weight=None, flow_pool_abtest_group=None,
 | 
	
		
			
				|  |  | +                        rank_key_prefix=None):
 | 
	
		
			
				|  |  |      """
 | 
	
		
			
				|  |  |      首页线上推荐逻辑
 | 
	
		
			
				|  |  |      :param request_id: request_id
 | 
	
	
		
			
				|  | @@ -480,7 +482,8 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
 | 
	
		
			
				|  |  |               gevent.spawn(pool_recall.flow_pool_recall,
 | 
	
		
			
				|  |  |                            size, flow_pool_abtest_group=flow_pool_abtest_group)]
 | 
	
		
			
				|  |  |      if ab_code == 60054 or ab_code == 60066 or ab_code == 60072 or ab_code == 60073 or ab_code == 60074 \
 | 
	
		
			
				|  |  | -            or ab_code == 60075 or ab_code == 60076 or ab_code == 60077 or ab_code == 60078 or ab_code == 60079:
 | 
	
		
			
				|  |  | +            or ab_code == 60075 or ab_code == 60076 or ab_code == 60077 or ab_code == 60078 or ab_code == 60079 \
 | 
	
		
			
				|  |  | +            or ab_code == 60080 or ab_code == 60081 or ab_code == 60082:
 | 
	
		
			
				|  |  |          t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
 | 
	
		
			
				|  |  |      elif ab_code == 60056 or ab_code == 60071:
 | 
	
		
			
				|  |  |          t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
 | 
	
	
		
			
				|  | @@ -502,7 +505,8 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
 | 
	
		
			
				|  |  |          return result
 | 
	
		
			
				|  |  |      #1. merge simrecall or  deepfm
 | 
	
		
			
				|  |  |      if ab_code == 60054 or ab_code == 60066 or ab_code == 60072 or ab_code == 60073 or ab_code == 60074 \
 | 
	
		
			
				|  |  | -            or ab_code == 60075 or ab_code == 60076 or ab_code == 60077 or ab_code == 60078 or ab_code == 60079:
 | 
	
		
			
				|  |  | +            or ab_code == 60075 or ab_code == 60076 or ab_code == 60077 or ab_code == 60078 or ab_code == 60079 \
 | 
	
		
			
				|  |  | +            or ab_code == 60080 or ab_code == 60081 or ab_code == 60082:
 | 
	
		
			
				|  |  |          rov_pool_recall = []
 | 
	
		
			
				|  |  |          if len(recall_result_list) >= 2:
 | 
	
		
			
				|  |  |              region_recall = recall_result_list[0]
 | 
	
	
		
			
				|  | @@ -673,7 +677,10 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
 | 
	
		
			
				|  |  |          env_dict['city_code'] = city_code
 | 
	
		
			
				|  |  |          env_json = env_dict
 | 
	
		
			
				|  |  |      #4.
 | 
	
		
			
				|  |  | -    rank_result, flow_num  = video_new_rank2(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), ab_code=ab_code, mid=mid, exp_config=exp_config, env_dict=env_dict)
 | 
	
		
			
				|  |  | +    # rank_result, flow_num = video_new_rank2(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), ab_code=ab_code, mid=mid, exp_config=exp_config, env_dict=env_dict)
 | 
	
		
			
				|  |  | +    rank_result, flow_num = video_new_rank3(
 | 
	
		
			
				|  |  | +        data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), rank_key_prefix=rank_key_prefix
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  |      #print(rank_result)
 | 
	
		
			
				|  |  |      if rank_result:
 | 
	
		
			
				|  |  |          result['rank_num'] = len(rank_result)
 | 
	
	
		
			
				|  | @@ -1336,6 +1343,7 @@ def get_recommend_params(recommend_type, ab_exp_info, ab_info_data, mid, app_typ
 | 
	
		
			
				|  |  |      data_key = param.get('data_key')
 | 
	
		
			
				|  |  |      rule_key_30day = param.get('30day_rule_key')
 | 
	
		
			
				|  |  |      shield_config = config_.SHIELD_CONFIG
 | 
	
		
			
				|  |  | +    rank_key_prefix = 'rank:score1:'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      # 默认使用 095 实验的配置
 | 
	
		
			
				|  |  |      # ab_code = config_.AB_EXP_CODE['095'].get('ab_code')
 | 
	
	
		
			
				|  | @@ -1450,6 +1458,7 @@ def get_recommend_params(recommend_type, ab_exp_info, ab_info_data, mid, app_typ
 | 
	
		
			
				|  |  |                          data_key = param.get('data_key')
 | 
	
		
			
				|  |  |                          rule_key_30day = param.get('30day_rule_key')
 | 
	
		
			
				|  |  |                          shield_config = param.get('shield_config', config_.SHIELD_CONFIG)
 | 
	
		
			
				|  |  | +                        rank_key_prefix = param.get('rank_key_prefix', 'rank:score1:')
 | 
	
		
			
				|  |  |                          break
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              """
 | 
	
	
		
			
				|  | @@ -1749,7 +1758,7 @@ def get_recommend_params(recommend_type, ab_exp_info, ab_info_data, mid, app_typ
 | 
	
		
			
				|  |  |      # log_.info(f"flow_pool_id_choice: {flow_pool_id_choice}, flow_pool_abtest_group: {flow_pool_abtest_group}")
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      return top_K, flow_pool_P, ab_code, rule_key, data_key, expire_time, no_op_flag, old_video_index, rule_key_30day, \
 | 
	
		
			
				|  |  | -           shield_config, flow_pool_abtest_group
 | 
	
		
			
				|  |  | +           shield_config, flow_pool_abtest_group, rank_key_prefix
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
 | 
	
	
		
			
				|  | @@ -1818,7 +1827,7 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      # 普通mid推荐处理
 | 
	
		
			
				|  |  |      top_K, flow_pool_P, ab_code, rule_key, data_key, expire_time, \
 | 
	
		
			
				|  |  | -    no_op_flag, old_video_index, rule_key_30day, shield_config, flow_pool_abtest_group = \
 | 
	
		
			
				|  |  | +    no_op_flag, old_video_index, rule_key_30day, shield_config, flow_pool_abtest_group, rank_key_prefix = \
 | 
	
		
			
				|  |  |          get_recommend_params(recommend_type=0, ab_exp_info=ab_exp_info, ab_info_data=ab_info_data, mid=mid,
 | 
	
		
			
				|  |  |                               app_type=app_type, flow_pool_abtest_config=flow_pool_abtest_config)
 | 
	
		
			
				|  |  |      # log_.info({
 | 
	
	
		
			
				|  | @@ -1851,7 +1860,7 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
 | 
	
		
			
				|  |  |      if ab_code == 60054 or ab_code == 60056 or ab_code == 60067 or ab_code == 60068 or ab_code == 60066 \
 | 
	
		
			
				|  |  |              or ab_code == 60069 or ab_code == 60070 or ab_code == 60071 or ab_code == 60072 or ab_code == 60073 \
 | 
	
		
			
				|  |  |              or ab_code == 60074 or ab_code == 60075 or ab_code == 60076 or ab_code == 60077 \
 | 
	
		
			
				|  |  | -            or ab_code == 60078 or ab_code == 60079:
 | 
	
		
			
				|  |  | +            or ab_code == 60078 or ab_code == 60079 or ab_code == 60080 or ab_code == 60081 or ab_code == 60082:
 | 
	
		
			
				|  |  |          result, fea_info = video_old_recommend(request_id=request_id, mid=mid, uid=uid, app_type=app_type, size=size,
 | 
	
		
			
				|  |  |                                                 top_K=top_K, flow_pool_P=flow_pool_P, algo_type='',
 | 
	
		
			
				|  |  |                                                 client_info=client_info, ab_code=ab_code, expire_time=expire_time,
 | 
	
	
		
			
				|  | @@ -1859,7 +1868,8 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
 | 
	
		
			
				|  |  |                                                 old_video_index=old_video_index, video_id=None, params=params,
 | 
	
		
			
				|  |  |                                                 rule_key_30day=rule_key_30day, shield_config=shield_config,
 | 
	
		
			
				|  |  |                                                 env_dict=env_dict, level_weight=level_weight,
 | 
	
		
			
				|  |  | -                                               flow_pool_abtest_group=flow_pool_abtest_group)
 | 
	
		
			
				|  |  | +                                               flow_pool_abtest_group=flow_pool_abtest_group,
 | 
	
		
			
				|  |  | +                                               rank_key_prefix=rank_key_prefix)
 | 
	
		
			
				|  |  |          recommend_result['fea_info'] = fea_info
 | 
	
		
			
				|  |  |      else:
 | 
	
		
			
				|  |  |          result = video_recommend(request_id=request_id, mid=mid, uid=uid, app_type=app_type, size=size, top_K=top_K,
 | 
	
	
		
			
				|  | @@ -1944,7 +1954,7 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      # 普通mid推荐处理
 | 
	
		
			
				|  |  |      top_K, flow_pool_P, ab_code, rule_key, data_key, expire_time, \
 | 
	
		
			
				|  |  | -    no_op_flag, old_video_index, rule_key_30day, shield_config, flow_pool_abtest_group = \
 | 
	
		
			
				|  |  | +    no_op_flag, old_video_index, rule_key_30day, shield_config, flow_pool_abtest_group, rank_key_prefix = \
 | 
	
		
			
				|  |  |          get_recommend_params(recommend_type=1, ab_exp_info=ab_exp_info, ab_info_data=ab_info_data, page_type=page_type,
 | 
	
		
			
				|  |  |                               mid=mid, app_type=app_type, flow_pool_abtest_config=flow_pool_abtest_config)
 | 
	
		
			
				|  |  |      # log_.info({
 | 
	
	
		
			
				|  | @@ -1972,7 +1982,7 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
 | 
	
		
			
				|  |  |      if ab_code == 60054 or ab_code == 60056 or ab_code == 60067 or ab_code == 60068 or ab_code == 60066 \
 | 
	
		
			
				|  |  |              or ab_code == 60069 or ab_code == 60070 or ab_code == 60071 or ab_code == 60072 or ab_code == 60073 \
 | 
	
		
			
				|  |  |              or ab_code == 60074 or ab_code == 60075 or ab_code == 60076 or ab_code == 60077 \
 | 
	
		
			
				|  |  | -            or ab_code == 60078 or ab_code == 60079:
 | 
	
		
			
				|  |  | +            or ab_code == 60078 or ab_code == 60079 or ab_code == 60080 or ab_code == 60081 or ab_code == 60082:
 | 
	
		
			
				|  |  |          result, fea_info = video_old_recommend(request_id=request_id, mid=mid, uid=uid, app_type=app_type, size=size,
 | 
	
		
			
				|  |  |                                                 top_K=top_K, flow_pool_P=flow_pool_P, algo_type='',
 | 
	
		
			
				|  |  |                                                 client_info=client_info, ab_code=ab_code, expire_time=expire_time,
 | 
	
	
		
			
				|  | @@ -1980,7 +1990,8 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
 | 
	
		
			
				|  |  |                                                 old_video_index=old_video_index, video_id=video_id, params=params,
 | 
	
		
			
				|  |  |                                                 rule_key_30day=rule_key_30day, shield_config=shield_config,
 | 
	
		
			
				|  |  |                                                 env_dict=env_dict, level_weight=level_weight,
 | 
	
		
			
				|  |  | -                                               flow_pool_abtest_group=flow_pool_abtest_group)
 | 
	
		
			
				|  |  | +                                               flow_pool_abtest_group=flow_pool_abtest_group,
 | 
	
		
			
				|  |  | +                                               rank_key_prefix=rank_key_prefix)
 | 
	
		
			
				|  |  |          recommend_result['fea_info'] = fea_info
 | 
	
		
			
				|  |  |      else:
 | 
	
		
			
				|  |  |          result = video_recommend(request_id=request_id, mid=mid, uid=uid, app_type=app_type, size=size, top_K=top_K,
 |