02 — System Diagram

🔍 Open the Interactive Diagram Viewer — pan, mouse-wheel zoom, fit-to-screen, full-screen, per-area tabs, the full ERD, and a focus mode that draws one model and its neighbours at a chosen depth. HandlingPlan fans out to many tables, 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 coast_13_stevedoring.

Handling Plans

flowchart LR
  PRO[HandlingProvider] --> PLA[HandlingPlan]
  PLA[HandlingPlan] --> INS[HandlingInstruction]
  INS[HandlingInstruction] --> INS
  PLA[HandlingPlan] --> SHI[HandlingShift]

Tally & Corrections

flowchart LR
  INS[HandlingInstruction] --> TAL[HandlingTally]
  SHI[HandlingShift] --> TAL[HandlingTally]
  TAL[HandlingTally] -- original --> COR[HandlingTallyCorrection]
  TAL[HandlingTally] -- replacement --> COR[HandlingTallyCorrection]

Discrepancies & Reconciliation

flowchart LR
  PLA[HandlingPlan] --> DIS[HandlingDiscrepancy]
  INS[HandlingInstruction] --> DIS[HandlingDiscrepancy]
  TAL[HandlingTally] --> DIS[HandlingDiscrepancy]
  PLA[HandlingPlan] --> REC[HandlingReconciliation]
  DIS[HandlingDiscrepancy] --> EXC[HandlingException]
  PLA[HandlingPlan] --> EXC[HandlingException]

Activity & Equipment

flowchart LR
  SHI[HandlingShift] --> ACT[HandlingActivity]
  EQU[HandlingEquipment] --> ACT[HandlingActivity]

No shared tables and no foreign keys: sibling applications are linked by canonical_ref strings and by messages. A tally is evidence, never a movement; a verified activity is evidence, never a cost.

flowchart LR
  subgraph coast_13_stevedoring
    PL[HandlingPlan]
    TY[HandlingTally]
    AC[HandlingActivity]
    RC[HandlingReconciliation]
    EX[HandlingException]
  end
  subgraph coast_02_manifest
    EC[effective cargo]
  end
  subgraph coast_06_voyage
    VS[voyage and call snapshots]
    CM[cargo call mapping]
    VC[call completion]
  end
  subgraph coast_03_tracking
    MV[movement accepted]
  end
  subgraph coast_11_portinterface
    TN[terminal notice]
  end
  subgraph coast_08_portcosts
    PC[supplier invoice matching]
  end
  subgraph coast_16_assurance
    AS[cases and actions]
  end
  EC -. "manifest.effective_cargo" .-> PL
  VS -. "voyage.snapshot / voyage.portcall_snapshot" .-> PL
  CM -. "voyage.cargo_call_mapped" .-> PL
  MV -. "evidence only" .-> TY
  TN -. "evidence only" .-> PL
  TY -. "handling.tally_verified" .-> VC
  AC -. "handling.activity_verified" .-> PC
  AC -. "handling.activity_verified" .-> VC
  RC -. "handling.reconciled" .-> VC
  TY -. "handling.tally_verified" .-> AS
  RC -. "handling.reconciled" .-> AS
  EX -. "handling.exception_raised / resolved" .-> AS
  AS -. "assurance.action_requested" .-> EX