MO Operations
Create Manual MO Operation
Create a manual operation against a specific MO. The new row is stamped source='manual' with bom_operation_id=null.
Update MO Operation
Update an MO operation. Allowed on both source='manual' AND source='from_bom' rows — edits to from_bom rows do NOT propagate back to the BOM master.
Delete MO Operation
Delete an MO operation. Allowed on both source='manual' AND source='from_bom' rows — industry pattern lets an operator drop an inherited step on a one-off MO. The linked BOM operation is untouched.
Start Operation Timer
Start the per-operation timer (shop-floor use). Stamps started_at=now() and sets operator_id to the authenticated user. Rejects with 422 if the operation is already done.
Complete Operation Timer
Stop the timer and mark the operation done. When `actual_time_minutes` is omitted it's computed from the started_at timestamp.