- 📦 Node.js (v16+ o superior)
- 🗄️ MySQL (v5.0 necesario)
- 🔄 Git (opcional)
- 📁 El proyecto debe estar ubicado en
C:\mchicken_api_node - ⚙️ Ejecutar
npm installpara instalar dependencias - 🔧 Configurar la base de datos MySQL con los parámetros en
config/db.js
- 🔑 Editar el archivo
config/db.jscon tus credenciales de MySQL - 📊 Crear la base de datos
pv_mchickene importar el esquema SQL - ✅ Verificar que Node.js esté instalado y en el PATH del sistema
- 🚀 El archivo
startup_api_chicken_node.batdebe estar en la carpeta de inicio de Windows
-
📥 Asegúrate de tener PM2 instalado globalmente:
npm install -g pm2 -
🛠️ Comandos disponibles:
- 🟢
npm run start- Inicia la aplicación en modo producción con PM2 - 🟢
npm run start:dev- Inicia la aplicación en modo desarrollo con PM2 - 🔴
npm run stop- Detiene la aplicación - 🔄
npm run restart- Reinicia completamente la aplicación - 🔄
npm run reload- Recarga la aplicación sin tiempo de inactividad - 📋
npm run logs- Muestra los logs en tiempo real de la aplicación - 📊
npm run status- Muestra el estado actual de la aplicación - 📈
npm run monit- Abre el monitor de recursos de PM2 - 🗑️
npm run delete- Elimina la aplicación de PM2
- 🟢
-
🔍 Monitoreo y Diagnóstico:
- 📊 Ver el estado de la aplicación:
npm run status - 📈 Monitorear recursos en tiempo real:
npm run monit - 📋 Ver logs en tiempo real:
npm run logs - 🔄 Recargar sin downtime:
npm run reload
- 📊 Ver el estado de la aplicación:
-
📂 Estructura de Logs:
- 📝 Los logs generales se encuentran en:
logs/app-1.log ⚠️ Los errores se registran en:logs/error-1.log- 🔄 Los logs se rotan automáticamente para mantener el espacio en disco
- 📝 Los logs generales se encuentran en:
-
⚙️ Configuración:
- 📄 La configuración de PM2 se encuentra en
ecosystem.config.js - 👀 El modo watch está activado para detectar cambios automáticamente
- 🔄 El servidor se ejecuta en modo
fork - 🔒 La aplicación se reinicia automáticamente en caso de errores
- 💾 Límite de memoria configurado a 1GB
- 📄 La configuración de PM2 se encuentra en
-
🚀 Inicio Automático:
- Se debe incluir el archivo
startup_api_chicken_node.baten la carpeta de inicio de Windows - Ruta:
C:\Users\[Usuario]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup - El script verifica e inicia automáticamente:
- La instalación de Node.js
- La instalación de PM2
- La aplicación usando la configuración de PM2
- Se debe incluir el archivo
- 🌐 Acceder a la interfaz web en
http://localhost:3000 - 🔌 La API estará disponible en:
http://localhost:3000/pedidos(admite parámetros de consulta opcionalesfechaInicio=YYYY-MM-DDyfechaFin=YYYY-MM-DD).http://localhost:3000/pedidos/hoy(carga optimizada sólo para el día actual).
- 🔍 Obtener la IP de la máquina servidor usando el comando
ipconfigen la terminal - 🖥️ Desde otras máquinas en la misma red, acceder usando:
- 🌐 Interfaz web:
http://<IP-DEL-SERVIDOR>:3000 - 🔌 API:
http://<IP-DEL-SERVIDOR>:3000/pedidos
- 🌐 Interfaz web:
- Asegurarse de que:
- Ambas máquinas estén en la misma red LAN
- El puerto 3000 no esté bloqueado por el firewall
- PM2 esté ejecutando el servidor (verificar con
pm2 status)
- Para verificar que el servicio está funcionando:
- Abrir el Administrador de Tareas
- Buscar procesos de Node.js y PM2
- Verificar que exista conexión a la base de datos en los logs
- 🏠 Portal Administrativo Central: Acceso unificado en la raíz (
/) para navegar entre las distintas pantallas de cocina y configurar el sistema. - 🎯 Filtro Inteligente de Productos (
pedidos3.html): Pantalla secundaria configurada para mostrar única y exclusivamente las órdenes que contengan productos específicos, recortando los elementos irrelevantes de las facturas para no saturar al cocinero. - 🛠️ Gestión Dinámica de Filtros: Administración en tiempo real de la lista de productos válidos desde el Portal Central de manera sencilla (almacenamiento persistente en JSON).
- 🧹 Mantenimiento de Caché: Botón dedicado para vaciar la memoria de facturas completadas y reiniciar el estado de la aplicación.
- 📅 Filtro por Rango de Fechas Histórico (Desde / Hasta): Disponible en el modal de ajustes de las pantallas KDS para acotar búsquedas históricas personalizadas de pedidos completados, evitando saturar la memoria y bloqueos del servidor.
- 🥫 Filtrado Selectivo de Salsas:
- Backend (SQL): Cláusula
CASE WHENque evalúa de forma optimizada la descripción del producto antes de realizar la subconsulta SQL de combos. - Frontend (JS): Validación
esProductoConSalsaque comprueba si el producto es elegible (únicamente Sanguchitas, Alitas, Friends Box y Box Wings). Para cualquier otro producto, se omiten las salsas por completo.
- Backend (SQL): Cláusula
- 🔄 Endpoint GET
/pedidospara obtener todos los pedidos. - ⚡ Actualización automática cada 10 segundos (incremental).
- 🎨 Identificación Visual de Pedidos:
- 🟢 Verde: Pedidos estándar (Mesa/Para Llevar).
- 🟡 Amarillo: Pedidos de Call Center (detectados automáticamente por palabras clave "callcenter").
- 🔵 Celeste: Pedidos de Autopollo (detectados automáticamente por palabras clave "autopollo").
- 🚨 Alerta de Atraso: Los pedidos con más de 10 minutos de antigüedad muestran un borde rojo parpadeante (efecto "pulso") muy notorio.
- 📡 Indicador de Estado: Punto de conexión en tiempo real (Conectado/Desconectado).
- 📄 Paginación de resultados optimizada.
- 🔊 Alertas sonoras configurables para nuevos pedidos.
- 🌐 Acceso desde múltiples dispositivos en la red local.
- 🔍 Verificar que MySQL esté corriendo
- 📋 Revisar los logs del servidor en la carpeta
C:\mchicken_api_node\logs\ - 🔌 Asegurar que los puertos no estén en uso
🚫 Si la aplicación no inicia automáticamente:
- ✅ Verificar que
startup_api_chicken_node.batesté en la carpeta de inicio - 🔍 Ejecutar el archivo manualmente para ver posibles errores
- 📁 Comprobar que la ruta
C:\mchicken_api_nodeexiste y contiene todos los archivos
🔄 Si la aplicación se reinicia constantemente:
- ❌ Verificar los logs de error en
logs/error.log - 📊 Comprobar el uso de memoria con
npm run status - 🔌 Revisar la conexión a la base de datos
- Si no se puede acceder desde otra máquina:
- Verificar conexión con
ping <IP-DEL-SERVIDOR> - Comprobar que el firewall permita conexiones al puerto 3000
- Confirmar que ambos dispositivos estén en la misma red
- Verificar conexión con
- Para problemas con PM2:
- Usar
npm run statuspara ver el estado de la aplicación - Verificar los logs con
npm run logs - Intentar reiniciar con
npm run restart - En caso necesario, eliminar y volver a crear el proceso con
npm run deleteseguido denpm run start
- Usar
Si los cambios que funcionan con node server.js no se reflejan en producción con PM2, sigue estos pasos:
-
🛑 Detener completamente PM2:
pm2 delete all
-
🧹 Limpiar los logs:
pm2 flush
-
🗑️ Eliminar archivos de logs antiguos:
del logs\*.log -
🚀 Reiniciar la aplicación en modo producción:
npm run start
-
📋 Verificar el estado:
npm run status
-
👀 Monitorear logs en tiempo real:
npm run logs
Si los problemas persisten:
-
🔍 Revisar los logs de error:
type logs\error-1.log
-
📊 Monitorear el uso de recursos:
npm run monit
-
🔄 Intentar un reload en lugar de restart:
npm run reload
- Asegúrate de que PM2 esté usando la configuración correcta del
ecosystem.config.js - El modo watch debe estar activo para detectar cambios automáticamente
- Los archivos ignorados en
ignore_watchno triggearán reinicios - Los cambios en archivos estáticos pueden requerir un
reloadmanual - En caso de problemas de memoria, revisa
max_memory_restartenecosystem.config.js