From 287c506725b2d970f721f80169f83c2418cb0991 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 04 六月 2025 18:39:02 +0800
Subject: [PATCH] 添加新版低吸中间服务器

---
 data_server.py |   73 +++++++++++++++++++++++-------------
 1 files changed, 47 insertions(+), 26 deletions(-)

diff --git a/data_server.py b/data_server.py
index 4bb5715..e16b735 100644
--- a/data_server.py
+++ b/data_server.py
@@ -1,24 +1,21 @@
 import http
 import json
+import random
 import socketserver
-import time
 from http.server import BaseHTTPRequestHandler
 
 import dask
 
 from code_attribute import gpcode_manager
-from log_module import log_analyse, log_export
-from output import limit_up_data_filter, output_util, code_info_output
+from log_module import log_analyse, log_export, log, request_log_util
+from output import limit_up_data_filter, output_util
 from output.limit_up_data_filter import IgnoreCodeManager
 from third_data import kpl_util, kpl_data_manager, kpl_api
 from third_data.code_plate_key_manager import KPLPlateForbiddenManager
 from third_data.kpl_data_manager import KPLLimitUpDataRecordManager, KPLDataManager, KPLCodeLimitUpReasonManager
 from third_data.kpl_util import KPLPlatManager, KPLDataType
-from trade import trade_manager
 from trade.l2_trade_util import BlackListCodeManager
-from utils import tool, global_util, kp_client_msg_manager, hosting_api_util
-
-from utils.history_k_data_util import HistoryKDatasUtils
+from utils import tool, global_util, hosting_api_util
 
 import urllib.parse as urlparse
 from urllib.parse import parse_qs
@@ -45,6 +42,17 @@
         if not total_datas:
             KPLLimitUpDataRecordManager.load_total_datas()
             total_datas = KPLLimitUpDataRecordManager.total_datas
+
+        current_datas_results = hosting_api_util.common_request({"ctype": "get_kpl_limit_up_datas"})
+        if type(current_datas_results) == str:
+            current_datas_results = json.loads(current_datas_results)
+        current_datas = current_datas_results.get("data")  # KPLLimitUpDataRecordManager.latest_origin_datas
+        current_block_codes = {}
+        for c in current_datas:
+            if c[5] not in current_block_codes:
+                current_block_codes[c[5]] = set()
+            current_block_codes[c[5]].add(c[0])
+
         # 閫氳繃娑ㄥ仠鏃堕棿鎺掑簭
         total_datas = list(total_datas)
 
@@ -64,12 +72,16 @@
                 limit_up_reason_want_count_dict[d[2]] = 0
             if d[3] in want_codes:
                 limit_up_reason_want_count_dict[d[2]] += 1
-        # (鏉垮潡鍚嶇О锛屾定鍋滀唬鐮佹暟閲忥紝鎯充拱鍗曟暟閲�,娑ㄥ仠鏃堕棿)
+        # (鏉垮潡鍚嶇О锛屾定鍋滀唬鐮佹暟閲忥紝鐐告澘鏁伴噺锛屾兂涔板崟鏁伴噺,娑ㄥ仠鏃堕棿)
         limit_up_reason_statistic_info = [
-            (k, len(limit_up_reason_dict[k]), limit_up_reason_want_count_dict.get(k), limit_up_reason_dict[k][0][5]) for
+            (k, len(limit_up_reason_dict[k]),
+             len(limit_up_reason_dict[k]) - (len(current_block_codes[k]) if k in current_block_codes else 0),
+             limit_up_reason_want_count_dict.get(k), limit_up_reason_dict[k][0][5]) for
             k in
             limit_up_reason_dict]
-        limit_up_reason_statistic_info.sort(key=lambda x: int(x[3]))
+        limit_up_reason_statistic_info.sort(
+            key=lambda x: len(current_block_codes.get(x[0])) if x[0] in current_block_codes else 0)
+        limit_up_reason_statistic_info.reverse()
 
         codes_set = set([d[3] for d in total_datas])
         # 鍒ゆ柇鏄緳鍑狅紝鍒ゆ柇鏄惁娑ㄥ仠锛屽垽鏂槸鍚︾偢鏉匡紝鍔犺浇鍒嗘暟
@@ -259,28 +271,37 @@
     def do_GET(self):
         path = self.path
         url = urlparse.urlparse(path)
-        if url.path == "/kpl/get_limit_up_list":
-            response_data = self.__get_limit_up_list()
-            self.send_response(200)
-            # 鍙戠粰璇锋眰瀹㈡埛绔殑鍝嶅簲鏁版嵁
-            self.send_header('Content-type', 'application/json')
-            self.end_headers()
-            self.wfile.write(response_data.encode())
-        else:
-            ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
-            result = hosting_api_util.get_from_data_server(url.path, ps_dict)
-            self.__send_response(result)
+        request_log_util.request_info("DATA_SERVER_GET", f"GET 璇锋眰寮�濮嬶細{url.path}")
+        try:
+            if url.path == "/kpl/get_limit_up_list":
+                response_data = self.__get_limit_up_list()
+                self.send_response(200)
+                # 鍙戠粰璇锋眰瀹㈡埛绔殑鍝嶅簲鏁版嵁
+                self.send_header('Content-type', 'application/json')
+                self.end_headers()
+                self.wfile.write(response_data.encode())
+            else:
+                ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
+                result = hosting_api_util.get_from_data_server(url.path, ps_dict)
+                self.__send_response(result)
+        finally:
+            request_log_util.request_info("DATA_SERVER_GET", f"GET 璇锋眰缁撴潫")
 
     def do_POST(self):
         path = self.path
         url = urlparse.urlparse(path)
-        if url.path == "/upload_kpl_data":
-            # 鎺ュ彈寮�鐩樺暒鏁版嵁
-            params = self.__parse_request()
-            result_str = self.__process_kpl_data(params)
-            self.__send_response(result_str)
+        request_log_util.request_info("DATA_SERVER_POST", f"POST 璇锋眰寮�濮嬶細{url.path}")
+        try:
+            if url.path == "/upload_kpl_data":
+                # 鎺ュ彈寮�鐩樺暒鏁版嵁
+                params = self.__parse_request()
+                result_str = self.__process_kpl_data(params)
+                self.__send_response(result_str)
+        finally:
+            request_log_util.request_info("DATA_SERVER_POST", f"POST 璇锋眰缁撴潫")
 
     def __process_kpl_data(self, data):
+        data = json.loads(json.dumps(data).replace("姒傚康", ""))
         type_ = data["type"]
         print("寮�鐩樺暒type:", type_)
         if type_ == KPLDataType.BIDDING.value:

--
Gitblit v1.8.0