Freeze an Order Item's Recipe at order time
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>
This commit is contained in:
@@ -30,6 +30,9 @@ _Avoid_: Line item (implies a billing-only concept; this also carries preparatio
|
||||
A bearer credential issued to a guest customer (one without an account) at Order placement time. Since a guest has no session, this token is the only proof of ownership accepted on later calls against that Order (status lookup, cancellation, pickup).
|
||||
_Avoid_: Session (guests never get a session; this is a different, bearer-credential mechanism)
|
||||
|
||||
**Recipe**:
|
||||
The ordered list of Preparation Steps required to prepare a Menu Item. A Menu Item's Recipe can be edited later by an operator; an Order Item freezes a copy of the Recipe at the moment it's ordered, so a later Recipe edit never reshapes a Step list a customer already paid for.
|
||||
|
||||
**Preparation Step**:
|
||||
One stage of preparing an Order Item, requiring a Machine carrying a specific Machine Tag, with an estimated duration. An Order Item consists of one or more Steps performed in sequence — the next Step cannot begin until the previous one finishes. The customer can see their Order Item's full Step list, current queue position, and approximate time to completion.
|
||||
_Avoid_: Stage (use Step consistently)
|
||||
|
||||
Reference in New Issue
Block a user