From 2d7183f8ddb8c921baa6855190f3af5cb65098d3 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 26 Mar 2025 16:45:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=AE=80=E5=8C=96validate=20dag=20?= =?UTF-8?q?=E7=9A=84=E6=8A=A5=E9=94=99=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mtm/models.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/apps/mtm/models.py b/apps/mtm/models.py index 939ddab4..a2de8d52 100644 --- a/apps/mtm/models.py +++ b/apps/mtm/models.py @@ -294,9 +294,10 @@ class Route(CommonADModel): # 3. 检查final_material_out是否是终点 final_id = final_material_out.id if final_id in reverse_graph: - raise ParseError( - f"最终物料 {final_material_out.name}(ID:{final_id}) 不能作为任何Route的输入" - ) + # raise ParseError( + # f"最终物料 {final_material_out.name}(ID:{final_id}) 不能作为任何Route的输入" + # ) + raise ParseError("最终物料不可作为输入") # 4. BFS检查路径可达性(使用material_id操作) visited = set() @@ -313,10 +314,11 @@ class Route(CommonADModel): # 5. 检查未到达的物料 unreachable_ids = all_material_ids - visited if unreachable_ids: - unreachable_materials = Material.objects.filter(id__in=unreachable_ids).values_list('name', flat=True) - raise ParseError( - f"以下物料无法到达最终物料: {list(unreachable_materials)}" - ) + # unreachable_materials = Material.objects.filter(id__in=unreachable_ids).values_list('name', flat=True) + # raise ParseError( + # f"以下物料无法到达最终物料: {list(unreachable_materials)}" + # ) + raise ParseError("存在无法到达的节点") # 6. DFS检查循环依赖 visited_cycle = set() @@ -337,8 +339,9 @@ class Route(CommonADModel): for material_id in all_material_ids: if has_cycle(material_id): - cycle_material = Material.objects.get(id=material_id) - raise ParseError(f"循环依赖涉及物料: {cycle_material.name}(ID:{material_id})") + # cycle_material = Material.objects.get(id=material_id) + # raise ParseError(f"循环依赖涉及物料: {cycle_material.name}(ID:{material_id})") + raise ParseError('存在循环依赖') return True