feat(silo): implement BOM auto-extraction from Assembly links #276

Closed
opened 2026-02-19 06:47:57 +00:00 by forbes · 0 comments
Owner

Summary

The BOM_MERGE.md specification describes auto-populating Silo BOM from Assembly component links on save/commit. None of this is currently implemented.

The existing Silo_BOM command provides manual BOM editing only (view, add, edit, remove entries via server API). The specification requires automatic extraction.

What needs to be built

Phase 1: Client-side extraction

  • Walk App::Assembly / Assembly::AssemblyObject to find component links
  • Detect cross-document App::Link references
  • Count quantities via ElementCount arrays
  • Resolve Silo UUIDs to part numbers via GET /api/items/by-uuid/{uuid}
  • Build multi-level BOM with BomEntry dataclass
  • Diff local BOM against server BOM (added/removed/quantity-changed)

Phase 2: Server integration

  • POST /api/items/{pn}/bom/merge endpoint call
  • SSE bom_merge event handling in Activity pane
  • Part registration workflow for unregistered components

Phase 3: Origin_Commit hook

  • Trigger BOM extraction on Origin_Commit (post-commit step)
  • Display merge results in Activity pane

References

  • docs/BOM_MERGE.md — full specification
  • mods/silo/freecad/silo_commands.py — existing manual BOM UI
  • mods/silo/silo-client/silo_client/init.py — client API methods
## Summary The BOM_MERGE.md specification describes auto-populating Silo BOM from Assembly component links on save/commit. None of this is currently implemented. The existing Silo_BOM command provides manual BOM editing only (view, add, edit, remove entries via server API). The specification requires automatic extraction. ## What needs to be built ### Phase 1: Client-side extraction - Walk App::Assembly / Assembly::AssemblyObject to find component links - Detect cross-document App::Link references - Count quantities via ElementCount arrays - Resolve Silo UUIDs to part numbers via GET /api/items/by-uuid/{uuid} - Build multi-level BOM with BomEntry dataclass - Diff local BOM against server BOM (added/removed/quantity-changed) ### Phase 2: Server integration - POST /api/items/{pn}/bom/merge endpoint call - SSE bom_merge event handling in Activity pane - Part registration workflow for unregistered components ### Phase 3: Origin_Commit hook - Trigger BOM extraction on Origin_Commit (post-commit step) - Display merge results in Activity pane ## References - docs/BOM_MERGE.md — full specification - mods/silo/freecad/silo_commands.py — existing manual BOM UI - mods/silo/silo-client/silo_client/__init__.py — client API methods
forbes added the enhancement label 2026-02-19 06:47:57 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/create#276