189 lines
5.8 KiB
Markdown
189 lines
5.8 KiB
Markdown
# 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:**
|
|
```sql
|
|
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:**
|
|
```csharp
|
|
// 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**
|
|
```bash
|
|
SQL/analysis_recovered_users.sql
|
|
```
|
|
Este script muestra:
|
|
- Conteo por cada concepto
|
|
- Intersección de usuarios
|
|
- Recomendaciones
|
|
|
|
### **Paso 2: Compilar y Ejecutar**
|
|
```bash
|
|
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
|