Price was already snapshotted per Order Item so later menu changes don't rewrite history, but the Recipe (Step list) wasn't: advancing an Order Item looked up its next Step from the live menuItemSteps table, so an operator editing a Menu Item's Recipe mid-cook could silently reshape an Order already in flight (different Machine Tag, duration, or Step order than what the customer paid for). Adds order_item_steps as a per-Order-Item copy of the Recipe, taken at placement time; placeOrder, advanceOrderItemStep, and getOrderStatus now all read from that snapshot instead of the live menu. Recorded as docs/adr/0005 and added Recipe as a formal CONTEXT.md term. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
786 B
786 B
Recipe snapshot per Order Item
An Order Item's full Recipe (every Preparation Step, in order) is copied from the Menu Item's live Recipe into a per-Order-Item orderItemSteps table at order-placement time, rather than each Step being looked up from the live Recipe as the Order Item progresses. We chose this because price is already snapshotted per Order Item for the same reason ("later menu changes don't rewrite history") — an operator editing a Menu Item's Recipe (reordering Steps, changing a Step's Machine Tag or duration) should never reshape an Order Item a customer already paid for and is partway through cooking. The live menuItemSteps table remains the source of truth for menu browsing and for new Orders; only orderItemSteps is read once an Order Item exists.