Releases: FernandezIvan323/AppTurnos
Releases · FernandezIvan323/AppTurnos
Release list
v1.1.4 — Pedidos pickup, turnos FIFO, historial mesero
v1.1.4 (2026-06-23) — Pedidos pickup, turnos FIFO, historial mesero
Nuevas funcionalidades
-
Pedidos Para llevar (pickup): nueva pagina completa con:
- Tablero Kanban de 3 columnas (pendiente, preparacion, listo para recoger)
- Creacion desde catalogo con carrito, tiempo estimado (5-30 min) y notas por item
- Cobro integrado (efectivo, tarjeta, transferencia) directamente desde la vista
- Cancelacion con motivo obligatorio
-
Sistema de turnos FIFO: funcion assignTurns() aplicada en:
- Domicilios (badge del siguiente pedido con borde especial)
- Mesas ocupadas (ordenadas por antiguedad)
- Caja (turno numerico en cada pedido)
- Pickup (turno y countdown del tiempo estimado)
-
Historial de mesero: nuevo modal en Staff que muestra pedidos, items, totales y propinas
-
Reportes redisenados con 5 tabs:
- Resumen: 6 StatCards, metodos de pago, grafico de ventas, comparativa
- Productos: top productos + productos nunca vendidos
- Clientes: top 10 por gasto total
- Operacion: horarios pico + ventas por categoria
- Historial: tabla de dias con ventas, gastos, neto y estado del corte
-
Endpoint /reports/daily-history: historial de dias con ventas, gastos y neto
-
Endpoint /reports/waiter-history: historial de pedidos por mesero con items y propinas
Mejoras
- Staff/Personal:
- Asignacion de mesas mejorada: pre-selecciona mesas ya asignadas, muestra mesero en tabla
- ConfirmModal para eliminar repartidores y mesas (reemplaza confirm() nativo)
- Badge 'Fuera de turno' ahora en rojo
- Reporte diario: incluye metodos de pago y conteo de pedidos pickup
- BarChart: modo vertical, colores personalizados, valores en barras
- Dark mode completado: DailyReport, Inventory, Expenses
- Caja: filtros incluyen solo para llevar
Fixes
- Asignaciones: removido ON CONFLICT DO NOTHING
- Encoding: corregido character corrupto N en tabla de mesas
- Expenses: resumen usa fecha del filtro activo
- Backend: migracion estimate_minutes, columnas pickup_orders/pickup_count
v1.1.3 — Control de deudas y estabilidad
v1.1.3 (2026-06-09) - Control de deudas y estabilidad
💸 Control de deudas (pedidos no pagados)
- Boton "Entregado (deuda)" en domicilios y mesas cuando el cliente no paga.
- Nueva pagina /debts con listado completo, filtro por tipo (delivery/mesa), antiguedad y boton "Cobrar".
- Endpoints
POST /orders/:id/mark-deliveredyPOST /orders/:id/pay-debt. - Corte de caja ya no bloquea por deudas pendientes.
📊 Historial de repartidor
- Muestra el total de dinero entregado acumulado por cada repartidor.
🎨 UI
- Modal de confirmacion personalizado (ConfirmModal.jsx) reemplaza el confirm() nativo.
- Eliminada seccion "Como empezar" del Dashboard.
🐛 Fixes
- Query SQL de historial de entregas corregida (LEFT JOIN customers faltante causaba error 500).
- ServerStatus ya no recarga la pagina al recuperarse de error transitorio.
- Encoding UTF-8 corrupto reparado en toda la UI.
- Kill-Port ahora mata toda la cadena node (hijo + --watch padre + huerfanos).
v1.1.2
fix: ServerStatus ya no recarga la pagina al recuperarse de un error …
v1.1.0 — Seguridad integral de datos
🔒 Seguridad
- Helmet: cabeceras HTTP de seguridad (CSP, XSS, HSTS, X-Frame-Options).
- CORS restringido: solo orígenes permitidos configurados en \CORS_ORIGINS.
- Rate limiting: máximo 10 intentos de login cada 15 minutos por IP.
- JWT_SECRET: secreto criptográfico de 64 bytes (generado con \crypto.randomBytes).
- SQL Injection fix: timezone ahora usa query parametrizada en \withTransaction.
- Error handler: errores 500 no exponen \err.message\ interno al cliente.
- Seed seguro: PINs por defecto cambiados a \7482\ (admin) y \3197\ (meseros).
🎨 Temas
- Obsidian Wine: nuevo tema oscuro con paleta vino tinto (fondo #0b090a, rojos vívidos).
- Calcite: nuevo tema claro con grises cálidos, naranja #FD7B41\ y durazno #EDBF9B.
🛠️ Estabilidad
- Zombie ports: \Kill-Port\ mata toda la cadena node (hijo + watcher --watch\ padre + huérfanos), espera 5s a que el puerto se libere.
- Puerto 3001: \server/index.js\ reintenta hasta 5 veces si el puerto está ocupado (EADDRINUSE).
- stop-server.ps1: ahora también mata el watcher --watch\ padre.