Orders & Fulfillment
Every state change is a compile-time contract
An explicit state machine — illegal transitions can't happen
Orders move through a typed state machine, not a free-text status column, so a transition like Shipped → Pending Approval is caught before it ever reaches production. One order can split across multiple suppliers, each with its own fulfillment group and independent ETA.
Primary path
Draft to closed
Approval is modeled as its own sub-state — an approver ID and an SLA deadline attached to the order — rather than overloading the main status. That lets an SLA-breach escalation job run without ever touching order-status semantics.
Split fulfillment
One order, two suppliers
The buyer sees one unified order. Underneath, each fulfillment group tracks its own supplier, status, and ETA — the "unified view" is a read-model join, not a data-model compromise.
Shipped
Meridian Supply Co.
Nitrile gloves ×4,000, Face shields ×500
ETA: 2 days
Processing
Coastal Packaging Group
Corrugated mailers ×12,000
ETA: 5 days