diff --git a/src/Mod/FreeCADExchange/AutoRouting.py b/src/Mod/FreeCADExchange/AutoRouting.py index 008d806..5ecafff 100644 --- a/src/Mod/FreeCADExchange/AutoRouting.py +++ b/src/Mod/FreeCADExchange/AutoRouting.py @@ -1155,6 +1155,9 @@ def format_route_all_report(report): prepared_layout.get("surface_carriers", 0), prepared_layout.get("terminal_access_carriers", 0), ) + errors = report.get("errors", []) or [] + if errors: + message += "\n首个错误:{0}".format(str(errors[0])) auto_bound = report.get("auto_bound_terminals", 0) auto_created = report.get("auto_created_terminals", 0) if auto_bound or auto_created: @@ -1172,12 +1175,12 @@ def format_route_all_report(report): ) if report.get("local_terminals", 0) > 0: message += " 请先从 QET 重新导入/更新工程端子,使端子 UUID 不再是 local:...。" - sample = (report.get("missing_endpoint_samples") or [None])[0] - if sample: - message += "\n缺失示例:{0} -> {1}".format( - sample.get("start_terminal_uuid", ""), - sample.get("end_terminal_uuid", ""), - ) + sample = (report.get("missing_endpoint_samples") or [None])[0] + if sample: + message += "\n缺失示例:{0} -> {1}".format( + sample.get("start_terminal_uuid", ""), + sample.get("end_terminal_uuid", ""), + ) return message diff --git a/tests/python/freecad_exchange_auto_routing_test.py b/tests/python/freecad_exchange_auto_routing_test.py index 0ee9b9b..ec181ce 100644 --- a/tests/python/freecad_exchange_auto_routing_test.py +++ b/tests/python/freecad_exchange_auto_routing_test.py @@ -989,6 +989,35 @@ class AutoRoutingTest(unittest.TestCase): self.assertIn("端子匹配失败", message) self.assertIn("local:", message) + def test_route_all_report_includes_network_and_first_error(self): + _install_fake_freecad() + _terminal_objects, _wiring_objects, _routing_network, auto_routing = _reload_modules() + report = { + "total_wires": 2, + "routed": 1, + "collision_warnings": 1, + "skipped_missing_terminal": 1, + "prepared_layout": { + "wire_duct_carriers": 2, + "surface_carriers": 4, + "terminal_access_carriers": 6, + }, + "missing_endpoint_samples": [ + { + "start_terminal_uuid": "terminal-a", + "end_terminal_uuid": "terminal-b", + } + ], + "errors": ["没有可用的线槽/路由路径网络"], + } + + message = auto_routing.format_route_all_report(report) + + self.assertIn("routed=1", message) + self.assertIn("线槽路径 2 条", message) + self.assertIn("首个错误:没有可用的线槽/路由路径网络", message) + self.assertIn("缺失示例:terminal-a -> terminal-b", message) + def test_bind_wire_task_terminals_from_payload_does_not_create_wires(self): _install_fake_freecad() terminal_objects, wiring_objects, _routing_network, auto_routing = _reload_modules()