| 
					
				 | 
			
			
				@@ -53,6 +53,10 @@ predict_analyse_file_path="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # 保存模型评估的分析结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 old_incr_rate_avg=0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 new_incr_rate_avg=0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+top10_msg="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 declare -A real_score_map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 declare -A old_score_map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 declare -A new_score_map 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -70,7 +74,7 @@ check_run_status() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if [ $status -ne 0 ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         echo "$LOG_PREFIX -- ${step_name}失败: 耗时 $step_elapsed" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         local elapsed=$(($step_end_time - $start_time)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /root/anaconda3/bin/python ${sh_path}/ad_monitor_util.py --level error --msg "$msg" --start "$start_time" --elapsed "$elapsed" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /root/anaconda3/bin/python ${sh_path}/ad_monitor_util.py --level error --msg "$msg" --start "$start_time" --elapsed "$elapsed" --top10 "${top10_msg}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         exit 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         echo "$LOG_PREFIX -- ${step_name}成功: 耗时 $step_elapsed" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -84,13 +88,6 @@ send_success_upload_msg(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   msg+="\n\t - 新模型Top10差异平均值: ${new_incr_rate_avg}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   msg+="\n\t - 模型在HDFS中的路径: ${model_save_path}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   msg+="\n\t - 模型上传OSS中的路径: ${MODEL_OSS_PATH}/${model_name}.tar.gz" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  local top10_msg="| CID  | 老模型相对真实CTCVR的变化 | 新模型相对真实CTCVR的变化 |" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    top10_msg+=" \n| ---- | --------- | -------- |" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  for cid in "${!new_score_map[@]}"; do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    top10_msg="${top10_msg} \n| ${cid} | ${old_score_map[$cid]} | ${new_score_map[$cid]} | " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   local step_end_time=$(date +%s) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   local elapsed=$(($step_end_time - $start_time)) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -98,6 +95,8 @@ send_success_upload_msg(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /root/anaconda3/bin/python ${sh_path}/ad_monitor_util.py --level info --msg "${msg}" --start "${start_time}" --elapsed "${elapsed}" --top10 "${top10_msg}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 init() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   declare -a date_keys=() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -223,6 +222,8 @@ calc_model_predict() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   local max_line=10 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   local old_total_diff=0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   local new_total_diff=0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  top10_msg="| CID  | 老模型相对真实CTCVR的变化 | 新模型相对真实CTCVR的变化 |" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  top10_msg+=" \n| ---- | --------- | -------- |" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   while read -r line && [ ${count} -lt ${max_line} ]; do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       # 使用 ! 取反判断,只有当行中不包含 "cid" 时才执行继续的逻辑 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -237,6 +238,9 @@ calc_model_predict() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       old_score_map[${numbers[0]}]=${numbers[6]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       new_score_map[${numbers[0]}]=${numbers[7]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # 拼接Top10详情的飞书消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      top10_msg="${top10_msg} \n| ${numbers[0]} | ${numbers[6]} | ${numbers[7]} | " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       old_total_diff=$( echo "${old_total_diff} + ${numbers[6]}" | bc -l ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       new_total_diff=$( echo "${new_total_diff} + ${numbers[7]}" | bc -l ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -297,6 +301,16 @@ model_predict() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     check_run_status 1 $step_start_time "${predict_date_path: -8}的数据,绝对误差大于0.1" "线上模型评估${predict_date_path: -8}的数据,绝对误差大于0.1,请检查" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     exit 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   fi  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  # 对比两个模型的差异 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  score_diff=$( echo "${new_incr_rate_avg} - ${old_incr_rate_avg}" | bc -l ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (( $(echo "${score_diff} > 0.050000" | bc -l ) ));then  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo "两个模型评估${predict_date_path: -8}的数据,两个模型分数差异为: ${score_diff}, 大于0.05, 请检查" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    check_run_status 1 $step_start_time "两个模型评估${predict_date_path: -8}的数据" "两个模型评估${predict_date_path: -8}的数据,两个模型分数差异为: ${score_diff}, 大于0.05" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    exit 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fi  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 model_upload_oss() { 
			 |