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