02 — System Diagram

🔍 Open the Interactive Diagram Viewer — pan, zoom, per-area tabs, the full ERD and a focus mode. CatalogueItem is the hub table, so its links can be hidden to declutter the overview.

Regenerate the viewer after any DSL, menu_config.yaml or diagram_config.yaml change: python scripts/build_diagram_viewer.py catalogue.

flowchart TD
  CAT[CatalogueCategory]
  ORG[Organisation]
  ITEM[CatalogueItem]
  ID[CatalogueIdentifier]
  SUB[ItemSubstitution]
  APP[ItemApplicability]
  SH[CatalogueStatusHistory]

  CAT --> ITEM
  CAT --> CAT
  ORG --> ITEM
  ITEM -- superseded by --> ITEM
  ITEM --> ID
  ITEM -- source / substitute --> SUB
  ITEM --> APP
  ITEM --> SH

How other applications use it (item pickers: R10.2)

sequenceDiagram
  participant F as Form in Work / Inventory / Purchasing
  participant A as That app's server
  participant C as Catalogue
  F->>A: type "oil filter"
  A->>C: catalogue.search_items (direct, read-only)
  C-->>A: matching items (code, description, unit)
  A-->>F: choose one
  F->>F: catalogue_item_cid + catalogue_item_ref filled in
  Note over F,C: later, the item code links ↗ to the item here

The search is called directly and synchronously (not through the orchestrator), because a person is waiting for it. Changes to items are published as events through the orchestrator.