feat: push DAG on save and commit
Adds _push_dag_after_upload() helper that extracts the feature DAG and pushes it to Silo after a successful file upload. Hooked into both Silo_Save and Silo_Commit commands. DAG sync failures are logged as warnings and never block the save/commit. Closes kindred/create#216
This commit is contained in:
@@ -717,6 +717,28 @@ class Silo_New:
|
|||||||
return _server_mode == "normal"
|
return _server_mode == "normal"
|
||||||
|
|
||||||
|
|
||||||
|
def _push_dag_after_upload(doc, part_number, revision_number):
|
||||||
|
"""Extract and push the feature DAG after a successful upload.
|
||||||
|
|
||||||
|
Failures are logged as warnings -- DAG sync must never block save.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
from dag import extract_dag
|
||||||
|
|
||||||
|
nodes, edges = extract_dag(doc)
|
||||||
|
if not nodes:
|
||||||
|
return
|
||||||
|
|
||||||
|
result = _client.push_dag(part_number, revision_number, nodes, edges)
|
||||||
|
node_count = result.get("node_count", len(nodes))
|
||||||
|
edge_count = result.get("edge_count", len(edges))
|
||||||
|
FreeCAD.Console.PrintMessage(
|
||||||
|
f"DAG synced: {node_count} nodes, {edge_count} edges\n"
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
FreeCAD.Console.PrintWarning(f"DAG sync failed: {e}\n")
|
||||||
|
|
||||||
|
|
||||||
class Silo_Save:
|
class Silo_Save:
|
||||||
"""Save locally and upload to MinIO."""
|
"""Save locally and upload to MinIO."""
|
||||||
|
|
||||||
@@ -787,6 +809,8 @@ class Silo_Save:
|
|||||||
new_rev = result["revision_number"]
|
new_rev = result["revision_number"]
|
||||||
FreeCAD.Console.PrintMessage(f"Uploaded as revision {new_rev}\n")
|
FreeCAD.Console.PrintMessage(f"Uploaded as revision {new_rev}\n")
|
||||||
|
|
||||||
|
_push_dag_after_upload(doc, part_number, new_rev)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
FreeCAD.Console.PrintWarning(f"Upload failed: {e}\n")
|
FreeCAD.Console.PrintWarning(f"Upload failed: {e}\n")
|
||||||
FreeCAD.Console.PrintMessage("File saved locally but not uploaded.\n")
|
FreeCAD.Console.PrintMessage("File saved locally but not uploaded.\n")
|
||||||
@@ -841,6 +865,8 @@ class Silo_Commit:
|
|||||||
new_rev = result["revision_number"]
|
new_rev = result["revision_number"]
|
||||||
FreeCAD.Console.PrintMessage(f"Committed revision {new_rev}: {comment}\n")
|
FreeCAD.Console.PrintMessage(f"Committed revision {new_rev}: {comment}\n")
|
||||||
|
|
||||||
|
_push_dag_after_upload(doc, part_number, new_rev)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
FreeCAD.Console.PrintError(f"Commit failed: {e}\n")
|
FreeCAD.Console.PrintError(f"Commit failed: {e}\n")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user