Ver código fonte

更新提示

lijunliang 1 ano atrás
pai
commit
01029feda5
4 arquivos alterados com 39 adições e 33 exclusões
  1. 4 4
      app.py
  2. 5 5
      client.py
  3. 29 23
      tables/fields/fieldtype.py
  4. 1 1
      util/mogodb_helper.py

+ 4 - 4
app.py

@@ -104,7 +104,7 @@ def check(obj: any, rules) -> any:
             func = nofield_checker.errors_tables[field]
             # 开始执行函数
             if func(obj, catch_content):
-                qa["0000"] = f"{field}不存在!!"
+                qa["0000"] = f"{field}不存在!!"
             field_qa["%s_qa" % field] = qa
             continue
         # 字段存在,判断类型是否正确如值为null的,并把英文括号转换为中文括号
@@ -112,14 +112,14 @@ def check(obj: any, rules) -> any:
         func_type = fieldtype_checker.errors_tables[field]
         value = func_type(obj.get(field))
         if value is True:
-            qa["0001"] = 0
+            qa["0001"] = f"{field}:类型不正确、空值"
             field_qa["%s_qa" % field] = qa
             continue
         checker = check_chain[field]["checker"]  # 获取检测器
         for err,err_detail in rules[field].items():  # 获取检测的规则
             # 错误类型检查
             if err not in checker.errors_tables:
-                qa[err] = "404:服务端未定义错误类型"
+                qa[err] = f"{field}:服务端未定义错误类型"
                 field_qa["%s_qa" % field] = qa
                 continue
             func = checker.errors_tables[err]["checkFn"]  # 获取检查方法
@@ -130,7 +130,7 @@ def check(obj: any, rules) -> any:
                     qa[err] = err_detail.get("name","")
             else:
                 # 参数不满足要求
-                qa[err] = "400:必须参数(字段)缺失"
+                qa[err] = f"{field}:必须参数(字段)缺失"
         field_qa["%s_qa" % field] = qa
     return field_qa
 

+ 5 - 5
client.py

@@ -16,7 +16,7 @@ timeout = 120
 # 开始评估
 def start_quality(data: dict, rules_id: int, a2s_ip, topic, timeout, retry=3):
     # 本次不使用SSL,所以channel是不安全的
-    row = {"data": data, "hash_id": rules_id}
+    row = {"data": data, "rules_id": rules_id}
     bytes_data = json_serialize(row)
     for t in range(retry):
         try:
@@ -68,7 +68,7 @@ if __name__ == '__main__':
         "entidlist": [
             "9c3175a41aa372fa1c2398726e8d9e60"
         ],
-        "budget": 10,
+        "budget": '',
         "keywords": "中共,岳阳市纪律检查委员会,文件柜,网上超市,采购,项目,成交,公告",
         "projectcode": "1943372000010199466",
         "projectname": "中共岳阳市纪律检查委员会关于文件柜的网上超市采购项目采购项目",
@@ -89,7 +89,7 @@ if __name__ == '__main__':
         "purchasinglist": [
             {
                 "itemname": "信发XF-012双节保密柜",
-                "brandname": "其家",
+                "brandname": "其家",
                 "model": "保密柜",
                 "number": 7.0,
                 "unitprice": 2480.0,
@@ -98,11 +98,11 @@ if __name__ == '__main__':
                 "score": 0.9505
             }
         ],
-        "purchasingsource": "[{\"start\": 26, \"verify\": \"确定\", \"direction\": \"h\", \"type\": \"识别\", \"header\": {\"itemname\": \"标的名称\", \"brandname\": \"品牌\", \"model\": \"规格型号\", \"number\": \"数量\", \"unitprice\": \"单价(元)\", \"totalprice\": \"成交金额(元)\"}, \"file_name\": \"公告\"}]",
+        "purchasingsource": "[{\"start\": 26, \"verify\": \"确定\", \"direction\": \"h\", \"type\": \"识别\", \"header\": {\"itemname\": \"标的名称\", \"brandname\": \"品牌\", \"model\": \"规格型号\", \"number\": \"数量\", \"unitprice\": \"单价(元)\", \"totalprice\": \"总价(元)\"}, \"file_name\": \"公告\"}]",
         "state": int(200)
     }
     # 规则查询,根据必要条件 公司名称(用户ID)、版本号
-    rules_id=get_rule("拓普","v1.0")
+    rules_id=get_rule("北京剑鱼信息技术有限公司","v1.1")
     print(rules_id)
     # 评估调用
     result = start_quality(data, rules_id, a2s_ip, topic, timeout)

+ 29 - 23
tables/fields/fieldtype.py

@@ -4,103 +4,109 @@ class FieldTypeChecker(object):
     """
         有值,类型判断
     """
+
     def __init__(self):
         self.errors_tables = {
             "title": self.check_title_type,
             "projectname": self.check_projectname_type,
-            "buyer":self.check_buyer_type,
+            "buyer": self.check_buyer_type,
             "winner": self.check_winner_type,
             "budget": self.check_budget_type,
             "bidamount": self.check_bidamount_type,
-            "area":self.check_region_type,
+            "area": self.check_region_type,
             "projectcode": self.check_projectcode_type,
-            "multipackage":self.check_multipackage_type,
-            "purchasinglist":self.check_purchasinglist_type,
+            "multipackage": self.check_multipackage_type,
+            "purchasinglist": self.check_purchasinglist_type,
         }
 
-    def check_bidamount_type(self,value) -> bool:
+    def check_bidamount_type(self, value) -> bool:
         """
         中标金额类型检测
         :param obj:代表一个item
         :return:返回true 代表异常
         """
-        if isinstance(value,(int,float)):
+        if isinstance(value, (int, float)):
             return False
         return True
 
-    def check_budget_type(self,value) -> bool:
+    def check_budget_type(self, value) -> bool:
         """
         预算类型检测
         :param obj:代表一个item
         :return:返回true 代表异常
         """
-        if isinstance(value,(int,float)):
+        if isinstance(value, (int, float)):
             return False
         return True
 
-    def check_winner_type(self,value):
+    def check_winner_type(self, value):
         """
         中标单位类型检测
         :param obj:代表一个item
         :return:返回true 代表异常
         """
         if isinstance(value, str):
-            value=value.replace("(","(").replace(")",")")
+            value = value.replace("(", "(").replace(")", ")")
             return value
         return True
 
-    def check_buyer_type(self,value):
+    def check_buyer_type(self, value):
         """
         采购单位类型检测
         :param obj:代表一个item
         :return:返回true 代表异常
         """
         if isinstance(value, str):
-            value=value.replace("(","(").replace(")",")")
+            value = value.replace("(", "(").replace(")", ")")
             return value
         return True
 
-    def check_region_type(self,value):
+    def check_region_type(self, value):
         if isinstance(value, str):
-            value=value.replace("(","(").replace(")",")")
+            value = value.replace("(", "(").replace(")", ")")
             return value
         return True
 
-    def check_title_type(self,value):
+    def check_title_type(self, value):
         """
         :param obj:代表一个item
         :return:返回true 代表异常
         """
         if isinstance(value, str):
-            value=value.replace("(","(").replace(")",")")
+            value = value.replace("(", "(").replace(")", ")")
             return value
         return True
 
-    def check_projectname_type(self,value):
+    def check_projectname_type(self, value):
         """
         :param obj:代表一个item
         :return:返回true 代表异常
         """
         if isinstance(value, str):
-            value=value.replace("(","(").replace(")",")")
+            value = value.replace("(", "(").replace(")", ")")
             return value
         return True
 
-    def check_projectcode_type(self,value):
+    def check_projectcode_type(self, value):
         """
         :param obj:代表一个item
         :return:返回true 代表异常
         """
         if isinstance(value, str):
-            value=value.replace("(","(").replace(")",")")
+            value = value.replace("(", "(").replace(")", ")")
             return value
         return True
-    def check_multipackage_type(self,value) -> bool:
+
+    def check_multipackage_type(self, value) -> bool:
         """
         :param obj:代表一个item
         :return:返回true 代表异常
         """
         pass
 
-    def check_purchasinglist_type(self,value):
-        pass
+    def check_purchasinglist_type(self, value):
+        if not value:
+            return True
+        if not isinstance(value, list):
+            return True
+        return value

+ 1 - 1
util/mogodb_helper.py

@@ -65,7 +65,7 @@ class MongoDBInterface:
 
     def find_relus(self, collection_name, hash_id):
         collection = self.db[collection_name]
-        row = collection.find_one({"hash_id": hash_id})
+        row = collection.find_one({"rules_id": hash_id})
         return row
 
     def find_rule_by_company(self, collection_name, company, version):