La mejor práctica para liberar inventario en una base de datos

Estoy creando una aplicación de venta de boletos que rastrea un inventario de boletos y los desactiva cuando se agota un boleto en particular.

Me pregunto cuál es la mejor práctica para devolver el inventario a la tienda cuando un pedido se abandona a mitad de camino.

El flujo actual:

os usuarios agreganitems a unaorder comoline_items y elorder está marcado como completado en el pago exitosoitems tiene unquantity_available que se actualiza en función de suline_items Barro periódicamente pororders sin acción en> 20 minutos, elimine esas órdenes 'line_items y actualice laquantity_available

Parece que me falta algo con esto. Por un lado, pierdo la capacidad de revisar los pedidos abandonados en detalle (todavía tengo pagos / rechazos, etc. pero no líneas de pedido). Y si un usuario intenta reanudar un pedido anterior después de 21 minutos, tendrá que comenzar de nuevo.

or el contrario, inmoviliza el inventario durante 20 minutos, lo que podría perder las ventas cuando un espectáculo está casi agotado.

Cualquier idea sería muy apreciada. Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta