Prechádzať zdrojové kódy

525完善节点meta数据的非标准json格式解析

Lan 1 mesiac pred
rodič
commit
b2cf18c1af

BIN
backend/api/__pycache__/api_calculate.cpython-310.pyc


BIN
backend/api/models/__pycache__/file.cpython-310.pyc


+ 6 - 7
backend/api/models/file.py

@@ -57,12 +57,11 @@ def safe_json_parse(json_str: str, default: Any = None) -> Any:
     # 预处理空字符串
     stripped_str = json_str.strip()
     if not stripped_str:
-        return default if default is not None else []
-
+        raise ValueError("Empty JSON string")
     try:
         data = json.loads(stripped_str)
-    except json.JSONDecodeError:
-        return default if default is not None else []
+    except json.JSONDecodeError as e:
+        raise ValueError(f"Invalid JSON: {e}")
 
     # 递归检查嵌套空列表
     def is_empty_nested_list(obj):
@@ -540,11 +539,11 @@ class File(models.Model):
                                     break
                             node['meta'] = metaJson
                         except Exception as error:
-                            logger.info(f"尝试以json格式解析文件meta内容{line[el]}失败,尝试以非标准格式解析{error}")
+                            # logger.info(f"尝试以json格式解析文件meta内容{line[el]}失败,尝试以非标准格式解析{error}")
                             # 尝试以冒号分隔格式解析
-                            elList = el.split(':')
+                            elList = line[el].strip().split(':', 1)
                             if len(elList) != 2:
-                                logger.info(f"尝试以非标准格式解析文件meta内容{el}失败,放弃解析")
+                                # logger.info(f"尝试以非标准格式解析文件meta内容{el}失败,放弃解析")
                                 continue
                             else:
                                 node['meta'].append({

BIN
backend/db.sqlite3


+ 3 - 1
scheduler/algo1Folder/controller.py

@@ -136,7 +136,9 @@ def main_process():
     data_node = fetchedData['nodes']
     # 清空所有原有meta
     for node in data_node:
-        node['meta'] = []
+        for meta in range(len(node['meta'])-1, -1, -1):
+            if 'optimize' in node['meta'][meta]:
+                del node['meta'][meta]
     # 修改从flask获取edges数据
     data_edge = fetchedData['edges'] # [{'form': X, 'to': X, 'meta': [{}{}{}]}]
     # 清空所有原有meta

BIN
scheduler/algo1Folder/测试输出/边集(教师模型测试).xlsx


BIN
scheduler/algo1Folder/测试输出/边集(教师测试删除).xlsx


BIN
scheduler/algo1Folder/测试输出/边集(教师预测).xlsx


+ 3 - 1
scheduler/algo2Folder/controller.py

@@ -65,7 +65,9 @@ if not fetchedData:
 input_nodes = []
 for line in fetchedData['nodes']:
     # 清空原有meta
-    line['meta'] = []
+    for meta in range(len(line['meta'])-1, -1, -1):
+        if 'group' in line['meta'][meta]:
+            del line['meta'][meta]
     input_nodes.append([int(line['id']), str(line['type']).upper()])
 input_edges = []
 for line in fetchedData['edges']:

+ 3 - 1
scheduler/algo3Folder/controller.py

@@ -123,7 +123,9 @@ def main_process():
     data_node = fetchedData['nodes']
     # 清空所有原有meta
     for node in data_node:
-        node['meta'] = []
+        for meta in range(len(node['meta'])-1, -1, -1):
+            if 'predict' in node['meta'][meta]:
+                del node['meta'][meta]
     # 修改从flask获取edges数据
     data_edge = fetchedData['edges'] # [{'form': X, 'to': X, 'meta': [{}{}{}]}]
     # 清空所有原有meta

BIN
scheduler/algo3Folder/测试输出/边集(测试).xlsx


BIN
scheduler/algo3Folder/测试输出/边集(预测).xlsx