feat(silo): client-side BOM diff/merge submission and Activity pane rendering #74
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Phase 2 — Client-Side Diff Computation + Activity Pane BOM Merge Events
Ref:
docs/BOM_MERGE.mdPhases 2 & 6, issue #68Depends on: #73 (link extraction)
Summary
After
extract_bom_links()resolves assembly components to part numbers, diff the local BOM against the existing server BOM (_client.get_bom(part_number)), then POST the merge to the newPOST /api/items/{partNumber}/bom/mergeendpoint. Render the server's merge response andbom_mergeSSE events in the Activity pane (SiloAuthDockWidget).Requirements
Diff + Merge Submission (
bom_sync.py)diff_bom(local_entries, remote_entries)— compare assembly-derived BOM against_client.get_bom()responseadded,removed,quantity_changed,unchangedremoveditems are never auto-deleted — flagged as unreferenced warningssubmit_bom_merge(part_number, resolved_entries, client)— POST to/api/items/{partNumber}/bom/merge{"source": "assembly", "entries": [{"child_part_number": "...", "quantity": N, "source": "assembly"}, ...]}resolve_urlfor web UI linkActivity Pane (
silo_commands.py)bom_mergetoSiloEventListenerevent handling (currently handlesserver.state,item_updated,revision_created)bom_merged(str, str)— part_number, summary_refresh_activity_panel():resolve_urlfrom server responseMerge Rules
API Dependency
Requires
POST /api/items/{partNumber}/bom/mergeendpoint andbom_mergeSSE event type on the server (separate server-side issue).Out of Scope
Implemented in
mods/silo/freecad/bom_sync.pyas part of #276.diff_bom()andapply_bom_diff()handle client-side diff/merge.