Files
Temp_MSSPLASHPage/UNIFICACION_USUARIOS_RECUPERADOS.md
2025-10-22 08:05:42 -06:00

5.8 KiB

Unificación de Criterios: Usuarios Recuperados

📋 Resumen del Cambio

Se han unificado los criterios de los 3 widgets relacionados con usuarios recuperados para que todos usen la misma fuente de datos y muestren información consistente.


🔧 Cambio Realizado

Campo Unificado:

is_recovered_user = true

Significado:

Usuarios que estuvieron inactivos por un período y luego regresaron a conectarse. Este campo es calculado por la vista materializada splash_wifi_connection_report.


📊 Widgets Afectados (Ahora Consistentes)

# Widget Filtro Anterior Filtro Nuevo Estado
1 Usuarios Recuperados loyalty_type = 'Recurrent' is_recovered_user = true Actualizado
2 Top 5 Usuarios Recuperados is_recovered_user = true is_recovered_user = true Ya era correcto
3 Tasa de Recuperación recovery_connection_date IS NOT NULL Usa is_recovered_user = true indirectamente Ya era correcto

📁 Archivos Modificados

1. Backend - Lógica de Negocio

src/SplashPage.Application/Splash/SplashMetricsService.cs

Líneas modificadas: 1469-1475 Cambio:

// ANTES
var currentRecovered = currentData.Items.Where(x => x.LoyaltyType == "Recurrent").ToList();

// DESPUÉS
var currentRecovered = currentData.Items.Where(x => x.IsRecoveredUser == true).ToList();

2. Backend - Interfaz del Servicio

src/SplashPage.Application/Splash/ISplashMetricsService.cs

Líneas modificadas: 93-100 Cambio: Actualizada documentación XML para clarificar el criterio.

3. Backend - DTO

src/SplashPage.Application/Splash/Dto/RecoveredUsersMetricsDto.cs

Líneas modificadas: 6-9 Cambio: Actualizada documentación de clase.


🎯 Beneficios de la Unificación

1. Consistencia de Datos

Los 3 widgets ahora muestran números basados en la misma fuente:

  • Usuarios Recuperados: Contador total
  • Top 5 Usuarios Recuperados: Top 5 con más conexiones
  • Tasa de Recuperación: % de recuperación vs inactivos

2. Claridad de Negocio

Un solo concepto de "usuario recuperado" en toda la aplicación:

"Usuario que estuvo inactivo por un período y regresó a conectarse"

3. Facilidad de Mantenimiento

Un único punto de lógica de negocio para modificar si cambian los criterios.

4. Mejor Experiencia de Usuario

Los dashboards muestran información coherente, evitando confusión.


📈 Datos Esperados Después del Cambio

Escenario de Ejemplo:

Si en tu base de datos tienes:

  • 100 registros con loyalty_type = 'Recurrent'
  • 50 registros con is_recovered_user = true
Widget Valor Antes Valor Después
Usuarios Recuperados 100 50
Top 5 Usuarios Recuperados 5 (de 50) 5 (de 50)
Tasa de Recuperación Basado en recovery logic Basado en los mismos 50

🔍 Validación Recomendada

Paso 1: Ejecutar SQL de Análisis

SQL/analysis_recovered_users.sql

Este script muestra:

  • Conteo por cada concepto
  • Intersección de usuarios
  • Recomendaciones

Paso 2: Compilar y Ejecutar

cd C:\Users\jandres\source\repos\SplashPage
dotnet build
dotnet run --project src/SplashPage.Web.Mvc

Paso 3: Verificar en Dashboard

  1. Abrir el dashboard
  2. Agregar los 3 widgets relacionados:
    • Usuarios Recuperados
    • Top 5 Usuarios Recuperados
    • Tasa de Recuperación
  3. Verificar que los números sean consistentes:
    • El total de "Usuarios Recuperados" debe coincidir con el denominador del Top 5
    • La "Tasa de Recuperación" debe usar la misma base de usuarios

🧪 Casos de Prueba

Test 1: Números Consistentes

✅ Widget "Usuarios Recuperados" muestra: 45 usuarios
✅ Widget "Top 5" muestra 5 usuarios (de esos mismos 45)
✅ Widget "Tasa de Recuperación" calcula % sobre esos mismos 45

Test 2: Sin Datos

✅ Los 3 widgets muestran "Sin datos" cuando no hay usuarios con is_recovered_user = true

Test 3: Filtros de Fecha

✅ Al cambiar rango de fechas, los 3 widgets se actualizan coherentemente

📝 Notas Técnicas

Campo is_recovered_user

  • Tipo: Boolean
  • Calculado por: Vista materializada splash_wifi_connection_report
  • Lógica: Usuario que estuvo inactivo (sin conexiones por X días) y luego regresó
  • Relacionado con:
    • recovery_connection_date: Fecha en que regresó
    • days_inactive: Días que estuvo sin conectarse antes de regresar

Diferencias con loyalty_type = 'Recurrent'

Campo Significado Uso Recomendado
loyalty_type = 'Recurrent' Usuario que se conecta regularmente (clasificación general) Segmentación de marketing
is_recovered_user = true Usuario que estuvo inactivo y regresó (evento específico) Métricas de retención/recuperación

🚀 Próximos Pasos

  1. Compilar proyecto para regenerar proxies ABP
  2. Ejecutar SQL de análisis para validar datos
  3. Probar en dashboard que los 3 widgets muestren números consistentes
  4. Actualizar changelog.MD con estos cambios
  5. ⏭️ Opcional: Agregar tests unitarios para validar el filtro

📞 Soporte

Si encuentras inconsistencias después de este cambio:

  1. Ejecuta SQL/analysis_recovered_users.sql para debugging
  2. Verifica que la vista materializada splash_wifi_connection_report esté actualizada
  3. Revisa logs de aplicación para errores en los servicios de métricas

Fecha de Cambio: 2025-01-22 Autor: Claude Code Ticket/Issue: Unificación de criterios de usuarios recuperados