|  | @@ -67,6 +67,7 @@ features = [
 | 
	
		
			
				|  |  |      'lastonehour_play_total',  # 过去1小时播放次数
 | 
	
		
			
				|  |  |      'lastonehour_share_total',  # 过去1小时分享次数
 | 
	
		
			
				|  |  |      'platform_return',
 | 
	
		
			
				|  |  | +    'lastonehour_show',
 | 
	
		
			
				|  |  |  ]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -127,10 +128,11 @@ def get_feature_data(project, table, now_date):
 | 
	
		
			
				|  |  |      return feature_df
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -def cal_score(df):
 | 
	
		
			
				|  |  | +def cal_score(df, param):
 | 
	
		
			
				|  |  |      """
 | 
	
		
			
				|  |  |      计算score
 | 
	
		
			
				|  |  |      :param df: 特征数据
 | 
	
		
			
				|  |  | +    :param param: 规则参数
 | 
	
		
			
				|  |  |      :return:
 | 
	
		
			
				|  |  |      """
 | 
	
		
			
				|  |  |      # score计算公式: sharerate*backrate*logback*ctr
 | 
	
	
		
			
				|  | @@ -143,7 +145,10 @@ def cal_score(df):
 | 
	
		
			
				|  |  |      df['share_rate'] = df['lastonehour_share'] / (df['lastonehour_play'] + 1000)
 | 
	
		
			
				|  |  |      df['back_rate'] = df['lastonehour_return'] / (df['lastonehour_share'] + 10)
 | 
	
		
			
				|  |  |      df['log_back'] = (df['lastonehour_return'] + 1).apply(math.log)
 | 
	
		
			
				|  |  | -    df['ctr'] = df['lastonehour_play'] / (df['lastonehour_preview'] + 1000)
 | 
	
		
			
				|  |  | +    if param.get('view_type', None) == 'video-show':
 | 
	
		
			
				|  |  | +        df['ctr'] = df['lastonehour_play'] / (df['lastonehour_show'] + 1000)
 | 
	
		
			
				|  |  | +    else:
 | 
	
		
			
				|  |  | +        df['ctr'] = df['lastonehour_play'] / (df['lastonehour_preview'] + 1000)
 | 
	
		
			
				|  |  |      df['K2'] = df['ctr'].apply(lambda x: 0.6 if x > 0.6 else x)
 | 
	
		
			
				|  |  |      df['score'] = df['share_rate'] * df['back_rate'] * df['log_back'] * df['K2']
 | 
	
		
			
				|  |  |      df['platform_return_rate'] = df['platform_return'] / df['lastonehour_return']
 | 
	
	
		
			
				|  | @@ -306,7 +311,7 @@ def rank_by_h(project, table, now_date, now_h, rule_params, region_code_list):
 | 
	
		
			
				|  |  |              # 计算score
 | 
	
		
			
				|  |  |              region_df = feature_df[feature_df['code'] == region]
 | 
	
		
			
				|  |  |              log_.info(f'region_df count = {len(region_df)}')
 | 
	
		
			
				|  |  | -            score_df = cal_score(df=region_df)
 | 
	
		
			
				|  |  | +            score_df = cal_score(df=region_df, param=value)
 | 
	
		
			
				|  |  |              video_rank(df=score_df, now_date=now_date, now_h=now_h, rule_key=key, param=value, region=region)
 | 
	
		
			
				|  |  |              # to-csv
 | 
	
		
			
				|  |  |              score_filename = f"score_{region}_{key}_{datetime.datetime.strftime(now_date, '%Y%m%d%H')}.csv"
 |