📋 Tabla de Contenidos
- Problemas Comunes de Instalación
- Problemas de Conexión y Acceso
- Problemas de Base de Datos
- Problemas de Email y Notificaciones
- Problemas de Rendimiento
- Problemas de Frontend
- Problemas de Seguridad
- Herramientas de Diagnóstico
- Contacto de Soporte
⚠️ IMPORTANTE
Antes de contactar soporte, revisa esta guía completamente y ejecuta los scripts de diagnóstico proporcionados en la sección de Herramientas de Diagnóstico.
🚀 Problemas Comunes de Instalación
❌ "Node.js no encontrado" o versión incompatible
🔍 Síntomas
- Error:
command not found: node - Error:
Node.js version too old - Error:
npm command not found
🛠️ Soluciones
Opción 1: Instalar Node.js correcto
# Verificar versión requerida
cat package.json | grep '"node"'
# Instalar Node.js 18+ (recomendado)
# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
# CentOS/RHEL
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs
# macOS (usando Homebrew)
brew install node@18
# Windows
# Descargar desde https://nodejs.org
Opción 2: Usar NVM (Node Version Manager)
# Instalar NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# Recargar terminal
source ~/.bashrc
# Instalar y usar Node.js 18
nvm install 18
nvm use 18
nvm alias default 18
✅ Verificación
node --version # Debe mostrar v18.x o superior
npm --version # Debe mostrar 9.x o superior
❌ "Error al instalar dependencias"
🔍 Síntomas
- Error:
npm install failed - Error:
EACCES: permission denied - Error:
network timeout
🛠️ Soluciones
Opción 1: Limpiar caché y reinstalar
# Limpiar caché de npm
npm cache clean --force
# Eliminar node_modules y package-lock.json
rm -rf node_modules package-lock.json
# Reinstalar dependencias
npm install
Opción 2: Problemas de permisos
# Cambiar propietario de npm (Linux/macOS)
sudo chown -R $(whoami) ~/.npm
sudo chown -R $(whoami) /usr/local/lib/node_modules
# O usar npx (sin instalación global)
npx npm install
❌ "Error de permisos al ejecutar scripts"
🔍 Síntomas
- Error:
EACCES: permission denied - Error:
operation not permitted - Error:
cannot create directory
🛠️ Soluciones
Opción 1: Cambiar permisos
# Dar permisos al directorio
sudo chown -R $USER:$USER /path/to/sistema-marketing-recordatorios
chmod -R 755 /path/to/sistema-marketing-recordatorios
Opción 2: Usar directorio alternativo
# Clonar en directorio con permisos
cd ~
git clone https://github.com/cda-colombia/sistema-marketing-recordatorios.git
cd sistema-marketing-recordatorios
npm install
🔐 Problemas de Conexión y Acceso
❌ "No se puede conectar al servidor"
🔍 Síntomas
- Error:
ECONNREFUSED - Error:
Connection refused - Página en blanco o timeout
🛠️ Soluciones
Paso 1: Verificar si el servidor está corriendo
# Verificar procesos de Node.js
ps aux | grep node
# Verificar puerto en uso
netstat -tlnp | grep :4321
# o en macOS/Linux moderno
ss -tlnp | grep :4321
Paso 2: Iniciar el servidor
# Iniciar servidor de desarrollo
npm run dev
# Verificar que inicie correctamente
# Debería mostrar: "Local: http://localhost:4321/"
❌ "Error de autenticación o login fallido"
🔍 Síntomas
- Error: "Credenciales inválidas"
- Error: "Token expirado"
- Ciclo infinito de login
🛠️ Soluciones
Paso 1: Verificar credenciales por defecto
# Conectar a base de datos
mysql -u app_notificaciones -p notificaciones_automotrices
# Verificar usuario admin
SELECT email, password_hash FROM usuarios WHERE rol_id = 1;
Paso 2: Verificar configuración JWT
# Verificar .env
cat .env | grep JWT
# Asegurar que JWT_SECRET tenga 32+ caracteres
# JWT_SECRET=clave_secreta_de_al_menos_32_caracteres
Paso 3: Limpiar cookies y caché
En el navegador:
- Abrir DevTools (F12)
- Ir a Application → Storage
- Limpiar Local Storage, Session Storage y Cookies
- Recargar página (Ctrl+F5)
🗄️ Problemas de Base de Datos
❌ "Error de conexión a MySQL"
🔍 Síntomas
- Error:
ECONNREFUSEDpara MySQL - Error:
Access denied for user - Error:
Can't connect to MySQL server
🛠️ Soluciones
Paso 1: Verificar MySQL está corriendo
# Linux (systemd)
systemctl status mysql
systemctl start mysql
# Linux (init.d)
service mysql status
service mysql start
# macOS (brew)
brew services list | grep mysql
brew services start mysql
# Windows
# Ir a Services → MySQL → Start
Paso 2: Verificar credenciales en .env
# Verificar configuración
cat .env | grep DB_
# Probar conexión manual
mysql -u TU_USUARIO -p -h localhost notificaciones_automotrices
❌ "Error: Tabla no existe"
🔍 Síntomas
- Error:
Table 'notificaciones_automotrices.usuarios' doesn't exist - Error:
Unknown columnen consultas - Error:
Base de datos vacía
🛠️ Soluciones
Paso 1: Importar schema completo
# Importar schema SQL
mysql -u app_notificaciones -p notificaciones_automotrices < schema.sql
# Verificar tablas creadas
mysql -u app_notificaciones -p notificaciones_automotrices -e "SHOW TABLES;"
📧 Problemas de Email y Notificaciones
❌ "SendGrid API Key inválida"
🔍 Síntomas
- Error:
401 Unauthorizedde SendGrid - Error:
Invalid API key - Notificaciones no se envían
🛠️ Soluciones
Paso 1: Verificar API Key
# Verificar configuración
cat .env | grep SENDGRID
# Probar API Key manualmente
curl -X GET "https://api.sendgrid.com/v3/user/account" \
-H "Authorization: Bearer TU_API_KEY"
Paso 2: Generar nueva API Key
- Inicia sesión en SendGrid
- Ve a Settings → API Keys
- Crea nueva API Key con permisos:
- Mail Send: Full Access
- Template Access: Read Access
- Copia la nueva API Key y actualiza .env
❌ "Emails no llegan a destinatarios"
🔍 Síntomas
- Sistema dice "enviado" pero no llegan
- Emails en carpeta de spam
- Bounce o rechazo de emails
🛠️ Soluciones
Paso 1: Verificar cola de notificaciones
-- Verificar estado de notificaciones
SELECT
estado,
COUNT(*) as total,
MAX(creado_en) as ultimo
FROM cola_notificaciones
GROUP BY estado;
Paso 2: Procesar cola manualmente
# Procesar notificaciones pendientes
curl -X POST http://localhost:4321/api/notificaciones/procesar \
-H "Authorization: Bearer TU_ADMIN_TOKEN"
# Verificar respuesta
# Debería mostrar: processed, sent, failed counts
⚡ Problemas de Rendimiento
❌ "Aplicación muy lenta"
🔍 Síntomas
- Páginas que tardan > 5 segundos en cargar
- Dashboard sin actualizar
- Timeout en operaciones
🛠️ Soluciones
Paso 1: Monitorear recursos del sistema
# Uso de CPU y memoria
top -p $(pgrep -f "node.*4321")
# Uso de disco
df -h
# Uso de memoria
free -h
# Conexiones de red
netstat -an | grep :4321 | wc -l
Paso 2: Optimizar consultas SQL
-- Identificar consultas lentas
SELECT
query_time,
lock_time,
rows_sent,
rows_examined,
sql_text
FROM mysql.slow_log
ORDER BY query_time DESC
LIMIT 10;
🛠️ Herramientas de Diagnóstico
🔍 Scripts de Diagnóstico Automático
📋 health-check.sh
#!/bin/bash
# health-check.sh - Diagnóstico completo del sistema
echo "🔍 DIAGNÓSTICO DEL SISTEMA CDA"
echo "================================"
# 1. Verificar servicios
echo "📊 Estado de Servicios:"
systemctl is-active mysql && echo "✅ MySQL: Activo" || echo "❌ MySQL: Inactivo"
systemctl is-active nginx && echo "✅ Nginx: Activo" || echo "❌ Nginx: Inactivo"
pgrep -f "node.*4321" > /dev/null && echo "✅ Node.js: Activo" || echo "❌ Node.js: Inactivo"
# 2. Verificar puertos
echo -e "\n🔌 Puertos en uso:"
netstat -tlnp | grep -E "(80|443|3306|4321)" || echo "❌ Puertos no encontrados"
# 3. Verificar espacio en disco
echo -e "\n💾 Espacio en disco:"
df -h | grep -E "(/$|/var)" | awk '{print $5 " " $6}' | \
while read usage mount; do
if [ "${usage%}" -gt 80 ]; then
echo "❌ $mount: $usage (CRÍTICO)"
else
echo "✅ $mount: $usage"
fi
done
# 4. Verificar memoria
echo -e "\n🧠 Memoria:"
free -h | grep "Mem:" | awk '{print $3 "/" $2 " (" int($3/$2 * 100) "%)"}'
# 5. Verificar base de datos
echo -e "\n🗄️ Base de Datos:"
mysql -u app_notificaciones -p$DB_PASSWORD notificaciones_automotrices -e "
SELECT
'Clientes' as tabla, COUNT(*) as total FROM clientes
UNION ALL
SELECT 'Vehículos', COUNT(*) FROM vehiculos
UNION ALL
SELECT 'Documentos', COUNT(*) FROM documentos
UNION ALL
SELECT 'Notificaciones pendientes', COUNT(*) FROM cola_notificaciones WHERE estado = 'pendiente';
" 2>/dev/null && echo "✅ BD accesible" || echo "❌ BD no accesible"
# 6. Verificar API
echo -e "\n🔌 API Health Check:"
curl -s http://localhost:4321/api/health/check > /dev/null && \
echo "✅ API responde" || echo "❌ API no responde"
echo -e "\n📊 Diagnóstico completado"
🎯 Resumen de Soluciones Rápidas
| Problema | Solución Rápida | Tiempo | Estado |
|---|---|---|---|
| No inicia Node.js | npm install && npm run dev |
2 min | Fácil |
| Error MySQL | systemctl start mysql |
1 min | Fácil |
| Email no envía | Verificar API Key de SendGrid | 3 min | Moderado |
| Página lenta | Limpiar caché y reiniciar | 2 min | Fácil |
| Login fallido | Limpiar cookies y verificar .env | 1 min | Fácil |
| Estilos rotos | npm run build && npm run dev |
3 min | Moderado |
| API no responde | Verificar puerto 4321 libre | 1 min | Fácil |
| Base de datos vacía | Importar schema.sql | 5 min | Moderado |
📞 Contacto de Soporte
🆘 Niveles de Soporte
🚨 Emergencia (Crítico)
- Sistema completamente caído
- Pérdida de datos
- Fallas de seguridad críticas
- Contacto: +57 1 XXX XXXX (24/7)
- Tiempo respuesta: 30 minutos
💬 Urgente (Alto)
- Funcionalidades principales no funcionan
- Problemas de rendimiento severos
- Errores masivos en notificaciones
- Contacto: chat.cda-colombia.com
- Tiempo respuesta: 2 horas
📧 Normal (Medio)
- Funcionalidades específicas con errores
- Consultas de configuración
- Mejoras y sugerencias
- Contacto: soporte@cda-colombia.com
- Tiempo respuesta: 8 horas
📝 Baja (Información)
- Dudas generales
- Solicitudes de documentación
- Capacitación y entrenamiento
- Contacto: Portal de soporte
- Tiempo respuesta: 24 horas
📋 Información Requerida para Soporte
🔍 Datos Básicos
- Versión del sistema:
npm list --depth=0 - Entorno: Desarrollo/Producción
- Sistema operativo:
uname -a - Navegador: Versión y tipo
- Mensaje de error: Completo y exacto
🎯 Antes de Contactar Soporte
✅ Checklist de Autodiagnóstico
- [ ] Revisar esta guía completamente
- [ ] Ejecutar scripts de diagnóstico
- [ ] Verificar logs de errores
- [ ] Probar en diferentes navegadores
- [ ] Verificar conexión a internet
- [ ] Reiniciar servicios básicos
- [ ] Limpiar caché y cookies
- [ ] Verificar credenciales y configuración
📝 Plantilla de Soporte
ASUNTO: [TIPO] - Breve descripción del problema
TIPO: [Emergencia/Urgente/Normal/Baja]
VERSIÓN: [Versión del sistema]
ENTORNO: [Desarrollo/Producción]
DESCRIPCIÓN:
[Descripción detallada del problema]
PASOS PARA REPRODUCIR:
1. [Paso 1]
2. [Paso 2]
3. [Paso 3]
ERROR EXACTO:
[Copiar y pegar el mensaje de error completo]
SOLUCIONES INTENTADAS:
- [Solución 1]: [Resultado]
- [Solución 2]: [Resultado]
ADJUNTOS:
- [ ] Logs de aplicación
- [ ] Capturas de pantalla
- [ ] Archivos de configuración (sin contraseñas)
Versión del documento: v2.1.0
Última actualización: 16 de Diciembre de 2024
Próxima revisión: 16 de Enero de 2025
Esta guía está diseñada para ayudarte a resolver los problemas más comunes del Sistema CDA. Si el problema persiste, no dudes en contactar a nuestro equipo de soporte técnico.