Эх сурвалжийг харах

refactor(api): remove delivery allocation, pass cust_code_list to recommend models

Sherlock 1 долоо хоног өмнө
parent
commit
24028e3c38
1 өөрчлөгдсөн 9 нэмэгдсэн , 7 устгасан
  1. 9 7
      api/recommend.py

+ 9 - 7
api/recommend.py

@@ -15,7 +15,7 @@ router = APIRouter()
 @router.post("/recommend")
 async def recommend(request: RecommendRequest, backgroundTasks: BackgroundTasks):
     """推荐接口"""
-    logger.info(f"Recommend request: city={request.city_uuid}, product={request.product_code}, recall={request.recall_cust_count}")
+    logger.info(f"Recommend request: city={request.city_uuid}, product={request.product_code}, core_custs={len(request.cust_code_list)}")
 
     gbdtlr_model_path = os.path.join("./models/rank/weights", request.city_uuid, "gbdtlr_model.pkl")
     if not os.path.exists(gbdtlr_model_path):
@@ -30,20 +30,22 @@ async def recommend(request: RecommendRequest, backgroundTasks: BackgroundTasks)
     products_in_order = dao.get_product_from_order(request.city_uuid)["product_code"].unique().tolist()
     if request.product_code in products_in_order:
         logger.info(f"Using GBDT-LR model for existing product {request.product_code}")
-        recommend_list = recommend_model.get_recommend_list_by_gbdtlr(request.product_code, recall_count=request.recall_cust_count)
+        recommend_list = recommend_model.get_recommend_list_by_gbdtlr(
+            request.product_code, cust_code_list=request.cust_code_list
+        )
     else:
         logger.info(f"Using Item2Vec model for new product {request.product_code}")
-        recommend_list = recommend_model.get_recommend_list_by_item2vec(request.product_code, recall_count=request.recall_cust_count)
+        recommend_list = recommend_model.get_recommend_list_by_item2vec(
+            request.product_code, cust_code_list=request.cust_code_list
+        )
 
-    recommend_data = recommend_model.get_recommend_and_delivery(recommend_list, delivery_count=request.delivery_count)
     request_data = []
-    for index, data in enumerate(recommend_data):
+    for index, data in enumerate(recommend_list):
         request_data.append(
             {
                 "id": index + 1,
                 "cust_code": data["cust_code"],
                 "recommend_score": data["recommend_score"],
-                "delivery_count": data["delivery_count"],
             }
         )
 
@@ -59,7 +61,7 @@ def generate_and_upload_report(request: RecommendRequest):
     logger.info(f"Background task started: generating report for {request.city_uuid}/{request.product_code}")
     try:
         report_util = ReportUtils(request.city_uuid, request.product_code)
-        report_util.generate_all_data(request.recall_cust_count, request.delivery_count)
+        report_util.generate_all_data(request.cust_code_list)
 
         reports_dir = os.path.join("./data/reports", request.city_uuid, request.product_code)
         report_files = ["卷烟信息表", "品规商户特征关系表", "相似卷烟表", "商户售卖推荐表"]