rambo 3 месяцев назад
Родитель
Сommit
c0feee211e
6 измененных файлов с 81 добавлено и 15 удалено
  1. 4 2
      python/api.py
  2. 1 0
      python/models.py
  3. 22 2
      python/service/run_main.py
  4. 40 6
      python/settings.py
  5. 5 1
      python/sockets/socket_server.py
  6. 9 4
      python/temp.py

+ 4 - 2
python/api.py

@@ -87,6 +87,7 @@ async def forwardRequest(request: HlmForwardRequest):
 def fromExcelHandler(params: HandlerDetail):
     excel_path = params.excel_path
     token = "Bearer " + params.token
+    uuid = params.uuid
     excel_df = pd.read_excel(excel_path, sheet_name=0, header=0)
     handler_result = []
     handler_result_folder = ""
@@ -98,7 +99,7 @@ def fromExcelHandler(params: HandlerDetail):
         raise UnicornException("缺失 [款号] 列")
     goods_art_dirs = excel_df.groupby(excel_df["款号"])
     obj = None
-    run_main = RunMain(obj, token)
+    run_main = RunMain(obj, token, uuid)
     temp_class = {}
     # 可用模板列表-需要导包
     temp_name_list = []
@@ -288,7 +289,8 @@ def group_by_style_number(data):
 async def handle_detail(request: Request, params: HandlerDetail):
     obj = None
     token = "Bearer " + params.token
-    run_main = RunMain(obj, token)
+    uuid = params.uuid
+    run_main = RunMain(obj, token, uuid)
     goods_art_no_arrays = params.goods_art_no
     is_only_cutout = params.is_only_cutout
     handler_result = []

+ 1 - 0
python/models.py

@@ -89,6 +89,7 @@ class HandlerDetail(BaseModel):
     """获取可执行程序命令列表"""
 
     goods_art_no: list[str] = Field(default=None, description="货号")
+    uuid: str = Field(default=None, description="uuid")
     token: str = Field(default="", description="惠利玛请求token")
     template_image_order:str = Field(default="", description="模板图片排序")
     excel_path: Optional[str] = Field(default="", description="excel路径")

+ 22 - 2
python/service/run_main.py

@@ -17,6 +17,7 @@ from functools import partial
 import pickle
 from  .base_deal import BaseDealImage
 from middleware import UnicornException
+from settings import recordDataPoint
 
 class RunMain():
     # run_end_sign = Signal(dict)
@@ -30,10 +31,11 @@ class RunMain():
 
     # dialog_result_signal = Signal(str)
 
-    def __init__(self, windows, token):
+    def __init__(self, windows, token, uuid):
         super().__init__()
         self.windows = windows
         self.token = token
+        self.uuid = uuid
         self.dialog_result = ""
         self.data_mode_generate_detail = DataModeGenerateDetail(token=token)
         # self.dialog_result_signal.connect(self.on_dialog_result)
@@ -281,7 +283,13 @@ class RunMain():
                                  windows=windows,
                                  logo_path=logo_path,
                                  )
-
+        goods_arts = [goods_art_no_folder_data["folder_name"] for goods_art_no_folder_data in all_goods_art_no_folder_data]
+        recordDataPoint(
+            token=self.token,
+            uuid=self.uuid,
+            page="抠图结束",
+            data=goods_arts,
+        )
         # ==============完成处理==============
         # self.set_state(state_value=2)
         callback_func("已结束抠图处理")
@@ -811,6 +819,12 @@ class RunMain():
                     config_data["success_handler"].append(
                             {"goods_art_no": goods_no, "success": True, "info": "处理成功"}
                         )
+                    recordDataPoint(
+                        token=self.token,
+                        uuid=self.uuid,
+                        page="详情图生成成功",
+                        data={"goods_art_no": goods_no,"temp_name": _temp_name},
+                    )
                 except BaseException as e:
                     self.show_progress_detail(
                             {
@@ -828,6 +842,12 @@ class RunMain():
                             "info": "款:{}生成详情异常:{}".format(goods_no, e),
                         }
                     )
+                    recordDataPoint(
+                        token=self.token,
+                        uuid=self.uuid,
+                        page="详情图生成失败",
+                        data={"goods_art_no": goods_no, "temp_name": _temp_name,"message": str(e)},
+                    )
 
         # ==============完成处理==============
         self.set_state(state_value=2)

+ 40 - 6
python/settings.py

@@ -1,7 +1,10 @@
+from wsgiref import headers
 from dotenv import load_dotenv, find_dotenv
 from pathlib import Path  # Python 3.6+ only
 import configparser, json, pytz
+import requests
 import pillow_avif
+
 TIME_ZONE = pytz.timezone("Asia/Shanghai")
 from numpy import true_divide
 from databases import (
@@ -13,6 +16,7 @@ from databases import (
     SqlQuery,
     batch_insert_device_configs,
 )
+
 # 初始化数据表
 create_all_database()
 session = SqlQuery()
@@ -31,14 +35,18 @@ if len(all_sys_configs) == 0:
     batch_insert_sys_configs(session, sys_config_json)
 # 初始化数据表---结束
 
+
 def get_config_by_items(config_dict):
     __config_dict = {}
     for i, k in config_dict:
         __config_dict[i] = k
     return __config_dict
+
+
 keys = ["面料", "里料"]
 
-def getSysConfigs(key,item,default=None):
+
+def getSysConfigs(key, item, default=None):
     session = SqlQuery()
     crud = CRUD(SysConfigs)
     one_item = crud.read(session, conditions={"key": key})
@@ -47,12 +55,14 @@ def getSysConfigs(key,item,default=None):
         print(item, config.get(item, default))
     return config.get(item, default)
 
+
 def get_dict_value(_dict, key, default=None):
     if key in _dict:
         return _dict[key]
     else:
         return default
 
+
 MACHINE_LEVEL = (
     "二档"
     if getSysConfigs("other_configs", "device_speed", "二档") == ""
@@ -181,7 +191,7 @@ Company = "惠利玛"
 is_test_plugins = true_divide
 
 
-OUT_PIC_MODE = "."+getSysConfigs("basic_configs", "image_out_format", "png")  # ".png"
+OUT_PIC_MODE = "." + getSysConfigs("basic_configs", "image_out_format", "png")  # ".png"
 
 OUT_PIC_SIZE = (
     [1600]
@@ -208,7 +218,9 @@ RUNNING_MODE = getSysConfigs("other_configs", "running_mode", "普通模式")
 DEFAULT_CUTOUT_MODE = getSysConfigs("other_configs", "cutout_mode", "普通抠图")
 
 
-CUTOUT_MODE = 0 if getSysConfigs("other_configs", "cutout_mode", "普通抠图") =="普通抠图" else 1
+CUTOUT_MODE = (
+    0 if getSysConfigs("other_configs", "cutout_mode", "普通抠图") == "普通抠图" else 1
+)
 import importlib
 
 # plugins = [
@@ -249,9 +261,7 @@ CHECK_LOWER_Y = int(
     getSysConfigs("other_configs", "check_lower_y", 4)
 )  # 检测亮度区域,倒数第几行
 IS_GET_GREEN_MASK = (
-    True
-    if getSysConfigs("other_configs", "is_get_green_mask", "否") == "是"
-    else False
+    True if getSysConfigs("other_configs", "is_get_green_mask", "否") == "是" else False
 )  # 是否进行绿幕抠图
 IMAGE_SAVE_MAX_WORKERS = int(
     getSysConfigs("other_configs", "image_save_max_workers", 4)
@@ -259,3 +269,27 @@ IMAGE_SAVE_MAX_WORKERS = int(
 COLOR_GRADATION_CYCLES = int(
     getSysConfigs("other_configs", "color_gradation_cycles", 22)
 )  # 色阶处理循环次数
+
+
+def recordDataPoint(token=None, page="", uuid=None, data=""):
+    """记录日志"""
+    if token == None:
+        return
+    if page == "":
+        return
+    if uuid == None:
+        return
+    headers = {"Content-Type": "application/json", "authorization": "Bearer " + token}
+    params = {
+        "site": 1,
+        "type": 5,
+        "channel": "aigc-camera",
+        "uuid": uuid,
+        "page": page,
+        "page_url": "/",
+        "describe": {"action": page, "data": data},
+        "time": 0,
+    }
+    return requests.post(
+        headers=headers, data=json.dumps(params), url=DOMAIN + "/api/record/point"
+    )

+ 5 - 1
python/sockets/socket_server.py

@@ -148,6 +148,7 @@ async def MsgCallback(msg):
                 # temp_photo_name = PhotoFilename
                 # 更新拍照记录
                 print("PhotoFilename", PhotoFilename, PhotoOrigin)
+                goods_art_no = None
                 if PhotoOrigin != "" and PhotoOrigin != "external":
                     goods_art_no, id = PhotoOrigin.split(",")
                     # 创建任务来处理数据库更新,避免阻塞回调
@@ -155,7 +156,10 @@ async def MsgCallback(msg):
                 data = conn_manager.jsonMessage(
                     code=0,
                     msg=f"照片获取成功",
-                    data={"photo_file_name": PhotoFilename},
+                    data={
+                        "photo_file_name": PhotoFilename,
+                        "goods_art_no": goods_art_no,
+                    },
                     msg_type="smart_shooter_photo_take",
                 )
                 await conn_manager.send_personal_message(data, smart_shooter.websocket)

+ 9 - 4
python/temp.py

@@ -1,5 +1,10 @@
-from PIL  import Image
-import pillow_avif
+from PIL import Image
+from settings import recordDataPoint
 
-image = Image.open("test.jpg")
-image.save("abc.webp",format="webp")
+result = recordDataPoint(
+    token="7a6d7d43419df1f98bf00efa100f94b5f6e33c43",
+    uuid="1000548b-5a5e-5ff5-d322-0842bf2beb86",
+    page="抠图完成",
+    goods_art_no="12345"
+)
+print("result", result.json())