📋 Tabla de Contenidos

  1. Problemas Comunes de Instalación
  2. Problemas de Conexión y Acceso
  3. Problemas de Base de Datos
  4. Problemas de Email y Notificaciones
  5. Problemas de Rendimiento
  6. Problemas de Frontend
  7. Problemas de Seguridad
  8. Herramientas de Diagnóstico
  9. 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:

  1. Abrir DevTools (F12)
  2. Ir a Application → Storage
  3. Limpiar Local Storage, Session Storage y Cookies
  4. Recargar página (Ctrl+F5)

🗄️ Problemas de Base de Datos

❌ "Error de conexión a MySQL"

🔍 Síntomas

  • Error: ECONNREFUSED para 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 column en 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 Unauthorized de 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
  1. Inicia sesión en SendGrid
  2. Ve a Settings → API Keys
  3. Crea nueva API Key con permisos:
    • Mail Send: Full Access
    • Template Access: Read Access
  4. 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.