Kitchen — Métricas
¿Qué es?
La pantalla de Métricas muestra estadísticas de rendimiento de la cocina: volumen de órdenes, tiempos de preparación, tasas de urgencia y artículos más preparados.
URL: .../metrics en la Kitchen app.
---
Encabezado y selector de rango
En el encabezado, tres botones para seleccionar el período:
- 24h — últimas 24 horas (default)
- 7d — últimos 7 días
- 30d — últimos 30 días
Botón de recarga manual (ícono de recarga).
Los datos se filtran por la sucursal activa si hay una seleccionada.
---
Tarjetas KPI (fila superior)
Cuatro tarjetas en grid responsivo (1 columna móvil, 2 tablet, 4 desktop):
| Tarjeta | Qué muestra |
|---|---|
| Total de órdenes | Número de órdenes en el período. Subtítulo: cuántas fueron "entregadas" |
| Tiempo promedio de preparación | Minutos promedio desde created_at hasta ready o delivered. Muestra "—" si no hay datos |
| Tasa de urgencia | Porcentaje de órdenes que tardaron más de urgencyThresholdMinutes (default 20 min) en prepararse. Se muestra en rojo si supera el 20% |
| Top artículo | Artículo más preparado en el período con su cantidad |
---
Gráfica: Órdenes por hora
Barra horizontal de 24 columnas (una por hora del día), solo disponible para el rango de 24h. Muestra el volumen de órdenes en cada hora del día.
Útil para identificar las horas pico y ajustar el personal.
---
Por estado
Pequeña lista con el conteo de órdenes por estado final en el período:
- Pendiente
- Preparando
- Listo
- Entregado
- Cancelado
Cada estado tiene un punto de color identificativo.
---
Top artículos de cocina
Lista de los artículos más preparados en el período, en orden descendente:
- Posición (1, 2, 3...)
- Nombre del artículo
- Cantidad preparada
- Barra de progreso horizontal (relativa al artículo más preparado)
---
API de métricas
Los datos se obtienen de GET /api/metrics?companyId=X&range=24h&branchId=Y. El endpoint devuelve:
ordersPerHour: array de{hour, total}para las últimas 24hordersByStatus: array de{status, total}avgPrepMinutes: tiempo promedio en minutos (null si no hay datos)urgencyRate: porcentaje (0–100) de órdenes que excedieron el umbraltopArticles: array de{name, quantity}ordenado descendenterange: el período consultado (24h,7d,30d)