|  | @@ -2,7 +2,11 @@
 | 
	
		
			
				|  |  |  @author: luojunhui
 | 
	
		
			
				|  |  |  """
 | 
	
		
			
				|  |  |  import json
 | 
	
		
			
				|  |  | +import time
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +from uuid import uuid4
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +from applications.aliyunLog import AliyunArticleLog
 | 
	
		
			
				|  |  |  from applications.functions import ArticleRank
 | 
	
		
			
				|  |  |  from applications.functions import title_sim_v2_by_list
 | 
	
		
			
				|  |  |  from applications.functions import get_article_title_url_list
 | 
	
	
		
			
				|  | @@ -44,6 +48,8 @@ class AccountArticleRank(object):
 | 
	
		
			
				|  |  |          self.accountId = None
 | 
	
		
			
				|  |  |          self.params = params
 | 
	
		
			
				|  |  |          self.mysql_client = mysql_client
 | 
	
		
			
				|  |  | +        self.request_id = "alg-{}-{}".format(uuid4(), int(time.time()))
 | 
	
		
			
				|  |  | +        self.logger = AliyunArticleLog(request_id=self.request_id, alg="ArticleRank")
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      async def check_params(self):
 | 
	
		
			
				|  |  |          """
 | 
	
	
		
			
				|  | @@ -57,8 +63,11 @@ class AccountArticleRank(object):
 | 
	
		
			
				|  |  |              self.strategy = self.params["strategy"]
 | 
	
		
			
				|  |  |              self.publishNum = self.params["publishNum"]
 | 
	
		
			
				|  |  |              self.publishArticleList = self.params["publishArticleList"]
 | 
	
		
			
				|  |  | -            # self.title_list = [i["title"] for i in self.publishArticleList]
 | 
	
		
			
				|  |  | -            # self.content_list = [i["content"] for i in self.publishArticleList]
 | 
	
		
			
				|  |  | +            self.logger.log(
 | 
	
		
			
				|  |  | +                code="1001",
 | 
	
		
			
				|  |  | +                msg="参数校验成功",
 | 
	
		
			
				|  |  | +                data=self.params
 | 
	
		
			
				|  |  | +            )
 | 
	
		
			
				|  |  |              return None
 | 
	
		
			
				|  |  |          except Exception as e:
 | 
	
		
			
				|  |  |              response = {
 | 
	
	
		
			
				|  | @@ -66,6 +75,11 @@ class AccountArticleRank(object):
 | 
	
		
			
				|  |  |                  "info": "params check failed, params : {} is not correct".format(e),
 | 
	
		
			
				|  |  |                  "code": 0,
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            self.logger.log(
 | 
	
		
			
				|  |  | +                code="1002",
 | 
	
		
			
				|  |  | +                msg="参数校验失败--{}".format(e),
 | 
	
		
			
				|  |  | +                data=self.params
 | 
	
		
			
				|  |  | +            )
 | 
	
		
			
				|  |  |              return response
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      async def basic_rank(self):
 | 
	
	
		
			
				|  | @@ -145,9 +159,17 @@ class AccountArticleRank(object):
 | 
	
		
			
				|  |  |              ranked_3 = sorted(ranked_3, key=lambda x:x['score'], reverse=True)
 | 
	
		
			
				|  |  |          else:
 | 
	
		
			
				|  |  |              ranked_3 = []
 | 
	
		
			
				|  |  | +        self.logger.log(
 | 
	
		
			
				|  |  | +            code="1004",
 | 
	
		
			
				|  |  | +            msg="去重排序完成",
 | 
	
		
			
				|  |  | +            data={
 | 
	
		
			
				|  |  | +                "rank1": ranked_1,
 | 
	
		
			
				|  |  | +                "rank2": ranked_2,
 | 
	
		
			
				|  |  | +                "rank3": ranked_3
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        )
 | 
	
		
			
				|  |  |          return ranked_1, ranked_2, ranked_3
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      async def rank_v1(self):
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  |          Rank Version 1
 | 
	
	
		
			
				|  | @@ -155,8 +177,6 @@ class AccountArticleRank(object):
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  |          try:
 | 
	
		
			
				|  |  |              ranked_1, ranked_2, ranked_3 = await self.basic_rank()
 | 
	
		
			
				|  |  | -            # 还要全局去重
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              try:
 | 
	
		
			
				|  |  |                  L = []
 | 
	
		
			
				|  |  |                  if ranked_1:
 | 
	
	
		
			
				|  | @@ -181,6 +201,11 @@ class AccountArticleRank(object):
 | 
	
		
			
				|  |  |                      "publishNum": self.publishNum,
 | 
	
		
			
				|  |  |                      "rank_list": L[:self.publishNum],
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +                self.logger.log(
 | 
	
		
			
				|  |  | +                    code=1006,
 | 
	
		
			
				|  |  | +                    msg="rank successfully",
 | 
	
		
			
				|  |  | +                    data=result
 | 
	
		
			
				|  |  | +                )
 | 
	
		
			
				|  |  |                  response = {"status": "Rank Success", "data": result, "code": 1}
 | 
	
		
			
				|  |  |              except Exception as e:
 | 
	
		
			
				|  |  |                  result = {
 | 
	
	
		
			
				|  | @@ -191,8 +216,12 @@ class AccountArticleRank(object):
 | 
	
		
			
				|  |  |                      "publishNum": self.publishNum,
 | 
	
		
			
				|  |  |                      "rank_list": self.publishArticleList[: self.publishNum],
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +                self.logger.log(
 | 
	
		
			
				|  |  | +                    code=1007,
 | 
	
		
			
				|  |  | +                    msg="rank failed because of {}".format(e),
 | 
	
		
			
				|  |  | +                    data=result
 | 
	
		
			
				|  |  | +                )
 | 
	
		
			
				|  |  |                  response = {"status": "Rank Fail", "data": result, "code": 1}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              return response
 | 
	
		
			
				|  |  |          except:
 | 
	
		
			
				|  |  |              result = {"code": 2, "info": "account is not exist"}
 | 
	
	
		
			
				|  | @@ -233,14 +262,34 @@ class AccountArticleRank(object):
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  |          match self.strategy:
 | 
	
		
			
				|  |  |              case "ArticleRankV1":
 | 
	
		
			
				|  |  | +                self.logger.log(
 | 
	
		
			
				|  |  | +                    code="1003",
 | 
	
		
			
				|  |  | +                    msg="命中排序策略1"
 | 
	
		
			
				|  |  | +                )
 | 
	
		
			
				|  |  |                  return await self.rank_v1()
 | 
	
		
			
				|  |  |              case "ArticleRankV2":
 | 
	
		
			
				|  |  | +                self.logger.log(
 | 
	
		
			
				|  |  | +                    code="1003",
 | 
	
		
			
				|  |  | +                    msg="命中排序策略2"
 | 
	
		
			
				|  |  | +                )
 | 
	
		
			
				|  |  |                  return await self.rank_v2()
 | 
	
		
			
				|  |  |              case "ArticleRankV3":
 | 
	
		
			
				|  |  | +                self.logger.log(
 | 
	
		
			
				|  |  | +                    code="1003",
 | 
	
		
			
				|  |  | +                    msg="命中排序策略3"
 | 
	
		
			
				|  |  | +                )
 | 
	
		
			
				|  |  |                  return await self.rank_v3()
 | 
	
		
			
				|  |  |              case "ArticleRankV4":
 | 
	
		
			
				|  |  | +                self.logger.log(
 | 
	
		
			
				|  |  | +                    code="1003",
 | 
	
		
			
				|  |  | +                    msg="命中排序策略4"
 | 
	
		
			
				|  |  | +                )
 | 
	
		
			
				|  |  |                  return await self.rank_v4()
 | 
	
		
			
				|  |  |              case "ArticleRankV5":
 | 
	
		
			
				|  |  | +                self.logger.log(
 | 
	
		
			
				|  |  | +                    code="1003",
 | 
	
		
			
				|  |  | +                    msg="命中排序策略5"
 | 
	
		
			
				|  |  | +                )
 | 
	
		
			
				|  |  |                  return await self.rank_v5()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      async def deal(self):
 | 
	
	
		
			
				|  | @@ -253,6 +302,3 @@ class AccountArticleRank(object):
 | 
	
		
			
				|  |  |              return error_params
 | 
	
		
			
				|  |  |          else:
 | 
	
		
			
				|  |  |              return await self.choose_strategy()
 | 
	
		
			
				|  |  | -            # except Exception as e:
 | 
	
		
			
				|  |  | -            #     result = {"code": 2, "info": "account is not exist"}
 | 
	
		
			
				|  |  | -            #     return result
 |