¿Cómo atender clínicas, restaurantes y salones desde un solo sistema de reservas?
Share

In this article
Modela una entidad de reserva genérica y permite que cada sector la extienda con una carga útil tipada: un historial de paciente, un pedido de mesa o una selección de servicio. Los motores de reserva, notificación y facturación permanecen agnósticos al sector, por lo que solo cambia el esquema de extensión por sector y la base de código nunca se bifurca.
¿Por qué no construir un flujo de reservas separado por sector?
Las clínicas reservan citas, los restaurantes toman pedidos de mesa y los salones venden espacios de servicio, por lo que cada uno parece un producto diferente. Bifurcar por sector triplica el código de reservas, WhatsApp y facturación, y hace que cada corrección se aplique tres veces. Las partes compartidas son las mismas; solo difiere el objeto central.
¿Cómo es una entidad de reserva genérica?
Una reserva base con los campos compartidos (negocio, cliente, espacio, estado) más una carga útil tipada por sector: un historial de paciente para clínicas, un pedido de mesa y menú para restaurantes, una selección de servicio para salones. Los motores operan sobre la base; el código vertical solo lee y escribe su carga útil.
¿Cómo evitar la doble reserva de un espacio?
Asigna a cada espacio un campo de versión. Si dos clientes intentan reservar en milisegundos, la escritura que pierde genera un conflicto en lugar de una sobrescritura silenciosa y reintenta contra el estado actual del espacio. Las escrituras de espacios son breves y rara vez disputadas, por lo que el bloqueo optimista supera a un bloqueo mantenido durante toda la solicitud.
¿Cómo evitar que un negocio limitado ralentice el resumen semanal de todos?
Ejecuta la sincronización del Perfil de Negocio de Google y la generación de resúmenes como trabajos en una cola RabbitMQ con un consumidor por negocio, cada uno con su propio retroceso. Un límite de velocidad en una cuenta solo retrasa el trabajo de esa cuenta. Las instantáneas de última sincronización y los contadores de límite por negocio se almacenan en Redis.
Publicado originalmente en sakshamjain.codes/blog/one-booking-engine-for-clinics-restaurants-salons. ¿Necesitas esto desarrollado? Consulta mis servicios en NexoRush o envíame un mensaje.