📄 Documentación de Procesos – MenuQR
Este documento describe el flujo operativo de la plataforma MenuQR, un ecosistema SaaS para la digitalización de menús y catálogos de restaurantes mediante códigos QR.
🏗️ Arquitectura y Actores
- Staff / Super Admin: Administra la plataforma, planes y soporte a nivel global.
- Merchant (Negocio): Entidad que gestiona su menú, recibe y procesa órdenes.
- Customer (Público): Usuario final que interactúa con el menú vía QR.
🔄 Proceso 1: Ciclo de Vida de una Orden (End-to-End)
-
Ingreso al Menú:
- El Cliente escanea el código QR físico en el restaurante.
- Sistema: Captura el
slugdel negocio y carga el menú desde/c/[slug].
-
Exploración del Menú:
- SvelteKit consulta la tabla
productsfiltrando porbusiness_id(Aislamiento RLS). - Los productos se agrupan por categorías con
sort_order. - Productos sin stock se muestran como “No disponible”.
- SvelteKit consulta la tabla
-
Configuración del Carrito:
- El Cliente selecciona productos y define cantidades y notas especiales.
- El sistema calcula el
subtotaldinámicamente usando los precios de la DB.
-
Checkout e Integración de Pagos (Wompi):
- Firma de Integridad: El backend genera un hash SHA-256 combinando:
referencia + monto + integrity_secret. - Widget: Se abre el Widget de Wompi para el pago.
- Gateway: ¿Pago Exitoso?
- NO: El cliente regresa al carrito con un mensaje de error.
- SÍ: Wompi dispara un Webhook al endpoint
/api/wompi/webhook.
- Firma de Integridad: El backend genera un hash SHA-256 combinando:
-
Procesamiento de la Orden:
- Base de Datos: Se crea el registro en
ordersyorder_items. Estado inicial:pending. - Notificación sonora: El merchant escucha el sonido de nuevo pedido (Web Audio API).
- Realtime: La orden aparece automáticamente en el Kanban del merchant.
- Base de Datos: Se crea el registro en
-
Gestión de la Orden (Kanban):
- El Merchant mueve la orden por estados:
pending→confirmed→in_delivery→delivered. - Puede editar items, datos del cliente, método de pago y dirección.
- Puede aprobar o rechazar propuestas de cambio del cliente.
- El Merchant mueve la orden por estados:
-
Comunicación con el Cliente:
- El Merchant usa plantillas predefinidas con
wa.mepara notificar estados por WhatsApp.
- El Merchant usa plantillas predefinidas con
-
Cierre:
- El proceso termina cuando el estado es
deliveredocancelled.
- El proceso termina cuando el estado es
🎫 Proceso 2: Gestión de Soporte Técnico (SaaS Helpdesk)
-
Detección de Incidencia: El Merchant encuentra un problema y accede al panel de soporte desde
/dashboard/support. -
Creación del Ticket:
- Ingresa
Asunto,DescripciónyPrioridad(Baja, Media, Alta, Crítica). - DB: Inserción en
support_tickets.
- Ingresa
-
Triage y Asignación:
- El Staff (Super Admin) recibe notificación y cambia estado a
in_progress. - Se crea un hilo en
support_messagespara comunicación directa en tiempo real (Supabase Realtime).
- El Staff (Super Admin) recibe notificación y cambia estado a
-
Resolución:
- Decisión: ¿Se requiere cambio de código o base de datos?
- SÍ: Se escala a Hotfix en Gitflow.
- NO: Se resuelve mediante configuración o respuesta directa.
- Decisión: ¿Se requiere cambio de código o base de datos?
-
Validación y Cierre:
- El Staff marca como
resolved. - El Merchant puede cerrar el ticket desde su lado.
- El Staff marca como
💳 Proceso 3: Onboarding y Configuración de Comercio
-
Registro de Identidad: El usuario crea su cuenta desde
/register. -
Configuración del Negocio:
- Se define el
slugúnico, nombre, logo y datos del negocio (businesses). - Se asigna un Plan SaaS que define límites (categorías, productos, pedidos).
- Se define el
-
Carga de Inventario:
- Creación de categorías y productos iniciales desde
/dashboard/catalog. - Generación del Código QR Maestro con tarjeta descargable desde
/dashboard/qr.
- Creación de categorías y productos iniciales desde
-
Configuración de Pagos (Opcional):
- El Merchant puede ingresar sus propias Keys de Wompi en
/dashboard/settings/paymentspara recibir pagos directos (B2C).
- El Merchant puede ingresar sus propias Keys de Wompi en
-
Suscripción al SaaS:
- El Merchant selecciona y paga un plan desde
/dashboard/settings/billingusando el widget de Wompi.
- El Merchant selecciona y paga un plan desde
📊 Guía para Diagramación (BPMN / Swimlanes)
Para diagramar los procesos, usar estas Calles (Lanes):
| Lane | Responsabilidad |
|---|---|
| Cliente | Escanea QR, elige productos, paga |
| Sistema (MenuQR) | Procesa lógica, calcula totales, valida firmas, notifica |
| Pasarela (Wompi) | Procesa la transacción bancaria |
| Merchant (Negocio) | Recibe órdenes, prepara pedidos, cambia estados |
| Staff (Soporte) | Interviene solo en el Proceso 2 (tickets) |