Content is user-generated and unverified.

Dashboard de Calidad - Proveedor Proximo Inbound

Especificación Técnica y Funcional


📋 1. OVERVIEW DEL DASHBOARD

Objetivo Principal

Monitorear la calidad de atención telefónica del proveedor Proximo Inbound mediante un sistema de evaluación automatizada con ponderaciones específicas por tipo de gestión.

Usuarios Target

  • Gerentes de Calidad: Vista ejecutiva y tendencias
  • Supervisores: Performance de sus equipos
  • Coordinadores: Análisis por competencias
  • Analistas: Drill-down detallado

Fuente de Datos

  • Tabla Principal: BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
  • Actualización: Diaria via ETL automatizado
  • Granularidad: Una fila por evaluación individual
  • Período: Datos desde abril 2025

🏗️ 2. ARQUITECTURA DE DATOS

2.1 Estructura del Datamart

sql
-- Tabla de hechos principal
BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
- evaluation_id (PK)
- ejecutivo_id, supervisor_id, proveedor_id
- fecha_llamada, timestamp_llamada (fecha real del contacto)
- fecha_evaluacion, timestamp_evaluacion (fecha de procesamiento)
- tipo_gestion: 'DIFICULTAD' | 'PROMESA'
- nota_total_consolidada (0-100)
- Métricas por competencia precalculadas

-- Tablas agregadas para performance
BI_USA.bi_LXNMkPhgWyjLRMotKNDs_agg_ejecutivo_semanal
BI_USA.bi_LXNMkPhgWyjLRMotKNDs_agg_supervisor_mensual
BI_USA.bi_LXNMkPhgWyjLRMotKNDs_agg_ranking_general

2.2 Vistas Optimizadas por Herramienta

Para Looker Studio:

sql
BI_USA.vw_calidad_looker_studio
-- Datos completamente desnormalizados
-- Sin JOINs complejos
-- Métricas listas para agregación

Para Superset:

sql
BI_USA.vw_dashboard_ejecutivo
BI_USA.vw_competencias_detalle
-- Estructura normalizada
-- Flexibilidad para consultas custom

📊 3. ESTRUCTURA DEL DASHBOARD

HOJA 1: RESUMEN EJECUTIVO

3.1 KPIs Principales (Top Row)

┌─────────────────┬─────────────────┬─────────────────┬─────────────────┐
│   EVALUACIONES  │   EJECUTIVOS    │     PROMEDIO    │   % APROBACIÓN  │
│      TOTAL      │     ACTIVOS     │     GENERAL     │    (>=80 pts)   │
│      1,016      │        85       │      82.3       │      74.2%      │
└─────────────────┴─────────────────┴─────────────────┴─────────────────┘

Query KPIs:

sql
SELECT 
  COUNT(*) as total_evaluaciones,
  COUNT(DISTINCT ejecutivo_id) as ejecutivos_activos,
  ROUND(AVG(nota_total_consolidada), 1) as promedio_general,
  ROUND(COUNTIF(nota_total_consolidada >= 80) * 100.0 / COUNT(*), 1) as porcentaje_aprobacion
FROM BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
WHERE fecha_llamada >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY);

3.2 Notas Promedio por Competencia

┌─────────────────────────────────────────────────────────────────┐
│                    DIFICULTAD DE PAGO                           │
├─────────────────────────────────────────────────────────────────┤
│ Capacidad de Negociación (25%):           18.2 / 25 (72.8%)    │
│ Conocimiento de Cartera (75%):            59.1 / 75 (78.8%)    │
│ TOTAL:                                    77.3 / 100 (77.3%)   │
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│                     PROMESA DE PAGO                             │
├─────────────────────────────────────────────────────────────────┤
│ Capacidad de Negociación (15%):           12.8 / 15 (85.3%)    │
│ Conocimiento de Cartera (85%):            74.2 / 85 (87.3%)    │
│ TOTAL:                                    87.0 / 100 (87.0%)   │
└─────────────────────────────────────────────────────────────────┘

3.3 Distribución por Cuartiles

┌─────────────────────────────────────────────────────────────────┐
│               EJECUTIVOS POR CUARTIL DE PERFORMANCE             │
├─────────────────────────────────────────────────────────────────┤
│ Q4 (Excelente: 90-100):     █████████░░ 18 ejecutivos (21%)    │
│ Q3 (Muy Bueno: 80-89):      ████████████ 24 ejecutivos (28%)   │
│ Q2 (Bueno: 70-79):          ██████████░░ 22 ejecutivos (26%)   │
│ Q1 (Oportunidad: <70):      █████████░░░ 21 ejecutivos (25%)   │
└─────────────────────────────────────────────────────────────────┘

3.4 Tendencia Semanal

Semana 14: ████████████████░░░░ 78.2
Semana 15: █████████████████░░░ 81.5  
Semana 16: ██████████████████░░ 83.1
Semana 17: ████████████████████ 85.7 ← Semana actual

HOJA 2: EVALUACIÓN POR SEMANA

2.1 Tabla Detallada por Ejecutivo/Semana

┌─────────────┬─────────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
│  EJECUTIVO  │ SUPERVISOR  │ SEM 14  │ SEM 15  │ SEM 16  │ SEM 17  │ PROMEDIO│
├─────────────┼─────────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ EJ001       │ Sosa Flavia │   85.2  │   87.1  │   89.3  │   91.2  │   88.2  │
│ EJ002       │ Forneris R. │   72.1  │   75.3  │   78.8  │   82.1  │   77.1  │
│ EJ003       │ Sosa Flavia │   91.5  │   89.7  │   92.1  │   94.3  │   91.9  │
└─────────────┴─────────────┴─────────┴─────────┴─────────┴─────────┴─────────┘

2.2 Filtros Interactivos

  • Supervisor: [Todos] | Sosa Flavia | Forneris Rocio Cristal
  • Tipo Gestión: [Todos] | Dificultad | Promesa
  • Rango Fechas: Selector de semanas
  • Ejecutivo: Multi-select con búsqueda

2.3 Métricas por Semana

sql
-- Query base para tabla semanal
SELECT 
  ejecutivo_id,
  supervisor_id,
  semana_llamada,
  tipo_gestion,
  COUNT(*) as total_evaluaciones,
  ROUND(AVG(nota_total_consolidada), 1) as nota_promedio,
  COUNTIF(nota_total_consolidada >= 80) as aprobadas,
  ROUND(COUNTIF(nota_total_consolidada >= 80) * 100.0 / COUNT(*), 1) as porcentaje_aprobacion
FROM BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
WHERE fecha_llamada >= DATE_SUB(CURRENT_DATE(), INTERVAL 4*7 DAY)
GROUP BY 1,2,3,4
ORDER BY ejecutivo_id, semana_llamada;

HOJA 3: ANÁLISIS POR COMPETENCIAS

3.1 Breakdown Detallado - Dificultad

┌─────────────────────────────────────────────────────────────────┐
│                    DIFICULTAD DE PAGO                           │
│                  ANÁLISIS POR CRITERIO                          │
├─────────────────────────────────────────────────────────────────┤
│ CAPACIDAD DE NEGOCIACIÓN (25%)                                  │
│ ├─ Expresa atributos de pago (20):    ████████████░░░░ 14.2/20  │
│ └─ Validación de datos (5):           ████████████████ 4.8/5   │
│                                                                 │
│ CONOCIMIENTO DE CARTERA (75%)                                   │
│ ├─ Ofrecimiento REFI (45):            ██████████░░░░░░ 28.5/45  │
│ ├─ Alternativas de pago (20):         ███████████████░ 18.1/20  │
│ ├─ Datos de cobranza (5):             ████████████████ 4.9/5   │
│ └─ Informa medios de pago (5):        ████████░░░░░░░░ 2.1/5   │
└─────────────────────────────────────────────────────────────────┘

3.2 Breakdown Detallado - Promesa

┌─────────────────────────────────────────────────────────────────┐
│                     PROMESA DE PAGO                             │
│                  ANÁLISIS POR CRITERIO                          │
├─────────────────────────────────────────────────────────────────┤
│ CAPACIDAD DE NEGOCIACIÓN (15%)                                  │
│ ├─ Expresa atributos de pago (5):     ███████████████░ 4.2/5   │
│ ├─ Compromiso de pago (5):            ████████████████ 4.8/5   │
│ └─ Validación de datos (5):           ████████████████ 4.9/5   │
│                                                                 │
│ CONOCIMIENTO DE CARTERA (85%)                                   │
│ ├─ Ofrecimiento REFI (50):            ███████████░░░░░ 35.2/50  │
│ ├─ Alternativas de pago (20):         ███████████████░ 18.8/20  │
│ ├─ Datos de cobranza (5):             ████████████████ 4.8/5   │
│ └─ Informa medios de pago (10):       ████████████░░░░ 7.8/10  │
└─────────────────────────────────────────────────────────────────┘

3.3 Heat Map por Ejecutivo/Competencia

sql
-- Query para heat map
SELECT 
  ejecutivo_id,
  supervisor_id,
  tipo_gestion,
  
  -- Competencias Dificultad
  ROUND(AVG(CASE WHEN tipo_gestion = 'DIFICULTAD' THEN dif_expresa_atributos_score END), 1) as dif_expresa_atributos,
  ROUND(AVG(CASE WHEN tipo_gestion = 'DIFICULTAD' THEN dif_validacion_datos_score END), 1) as dif_validacion,
  ROUND(AVG(CASE WHEN tipo_gestion = 'DIFICULTAD' THEN dif_ofrecimiento_refi_score END), 1) as dif_refi,
  ROUND(AVG(CASE WHEN tipo_gestion = 'DIFICULTAD' THEN dif_alternativas_pago_score END), 1) as dif_alternativas,
  ROUND(AVG(CASE WHEN tipo_gestion = 'DIFICULTAD' THEN dif_datos_cobranza_score END), 1) as dif_datos,
  ROUND(AVG(CASE WHEN tipo_gestion = 'DIFICULTAD' THEN dif_medios_pago_score END), 1) as dif_medios,
  
  -- Competencias Promesa
  ROUND(AVG(CASE WHEN tipo_gestion = 'PROMESA' THEN prom_expresa_atributos_score END), 1) as prom_expresa_atributos,
  ROUND(AVG(CASE WHEN tipo_gestion = 'PROMESA' THEN prom_compromiso_pago_score END), 1) as prom_compromiso,
  ROUND(AVG(CASE WHEN tipo_gestion = 'PROMESA' THEN prom_validacion_datos_score END), 1) as prom_validacion,
  ROUND(AVG(CASE WHEN tipo_gestion = 'PROMESA' THEN prom_ofrecimiento_refi_score END), 1) as prom_refi,
  ROUND(AVG(CASE WHEN tipo_gestion = 'PROMESA' THEN prom_alternativas_pago_score END), 1) as prom_alternativas,
  ROUND(AVG(CASE WHEN tipo_gestion = 'PROMESA' THEN prom_datos_cobranza_score END), 1) as prom_datos,
  ROUND(AVG(CASE WHEN tipo_gestion = 'PROMESA' THEN prom_medios_pago_score END), 1) as prom_medios

FROM BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
GROUP BY 1,2,3
HAVING COUNT(*) >= 5;

HOJA 4: RANKING DE EJECUTIVOS

4.1 Ranking General

┌──────┬─────────────┬─────────────┬──────────┬───────────┬──────────────┐
│ RANK │  EJECUTIVO  │ SUPERVISOR  │   EVAL   │  PROMEDIO │  CATEGORÍA   │
├──────┼─────────────┼─────────────┼──────────┼───────────┼──────────────┤
│  1   │ EJ047       │ Sosa Flavia │    25    │   94.3    │  Excelente   │
│  2   │ EJ023       │ Forneris R. │    32    │   92.8    │  Excelente   │
│  3   │ EJ081       │ Sosa Flavia │    28    │   91.5    │  Excelente   │
│  4   │ EJ012       │ Forneris R. │    19    │   90.2    │  Excelente   │
│  5   │ EJ055       │ Sosa Flavia │    41    │   89.7    │  Muy Bueno   │
│ ...  │ ...         │ ...         │   ...    │   ...     │     ...      │
│ 83   │ EJ091       │ Forneris R. │    12    │   58.3    │ Oportunidad  │
│ 84   │ EJ033       │ Sosa Flavia │     8    │   55.7    │ Oportunidad  │
│ 85   │ EJ067       │ Forneris R. │    15    │   52.1    │ Oportunidad  │
└──────┴─────────────┴─────────────┴──────────┴───────────┴──────────────┘

4.2 Top 10 y Bottom 10

sql
-- Query para ranking con categorías
WITH ranking_ejecutivos AS (
  SELECT 
    ejecutivo_id,
    supervisor_id,
    COUNT(*) as total_evaluaciones,
    ROUND(AVG(nota_total_consolidada), 1) as promedio,
    CASE 
      WHEN AVG(nota_total_consolidada) >= 90 THEN 'Excelente'
      WHEN AVG(nota_total_consolidada) >= 80 THEN 'Muy Bueno'
      WHEN AVG(nota_total_consolidada) >= 70 THEN 'Bueno'
      WHEN AVG(nota_total_consolidada) >= 60 THEN 'Regular'
      ELSE 'Oportunidad'
    END as categoria,
    ROW_NUMBER() OVER (ORDER BY AVG(nota_total_consolidada) DESC) as ranking
  FROM BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
  GROUP BY 1,2
  HAVING total_evaluaciones >= 5
)
SELECT * FROM ranking_ejecutivos
ORDER BY ranking;

4.3 Análisis de Brechas por Supervisor

┌─────────────┬─────────────┬─────────────┬─────────────┬─────────────┐
│ SUPERVISOR  │ EJECUTIVOS  │   PROMEDIO  │   BRECHA    │ HOMOGENEIDAD│
├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│ Sosa Flavia │     48      │    82.5     │    38.2     │    Media    │
│ Forneris R. │     37      │    79.3     │    42.7     │    Alta     │
└─────────────┴─────────────┴─────────────┴─────────────┴─────────────┘

🎨 4. DISEÑO VISUAL

4.1 Paleta de Colores

css
/* Colores principales */
:root {
  --primary-blue: #1f4e79;      /* Headers */
  --secondary-blue: #4472c4;    /* Gráficos principales */
  --success-green: #70ad47;     /* Métricas positivas */
  --warning-orange: #ff8c00;    /* Alertas */
  --danger-red: #c55a5a;        /* Métricas críticas */
  --neutral-gray: #7f7f7f;      /* Texto secundario */
  --light-gray: #f2f2f2;        /* Fondos */
  --white: #ffffff;              /* Fondos principales */
}

/* Escala de performance */
.excelente { background: linear-gradient(90deg, #70ad47, #92d050); }
.muy-bueno { background: linear-gradient(90deg, #4472c4, #5b9bd5); }
.bueno     { background: linear-gradient(90deg, #ffc000, #ffdc80); }
.regular   { background: linear-gradient(90deg, #ff8c00, #ffb366); }
.critico   { background: linear-gradient(90deg, #c55a5a, #d99999); }

4.2 Iconografía

  • 📊 KPIs: Números grandes con tendencias
  • 📈 Gráficos: Line charts para tendencias, bar charts para comparaciones
  • 🎯 Rankings: Tablas con color coding
  • 🔥 Heat Maps: Intensidad de color por performance
  • ⚠️ Alertas: Íconos para métricas críticas

4.3 Responsive Design

Desktop (>1200px):  4 columnas layout
Tablet (768-1199px): 2 columnas layout  
Mobile (>768px):    1 columna layout

⚙️ 5. ESPECIFICACIONES TÉCNICAS

5.1 Configuración de Conexión

Para Looker Studio:

Connector: BigQuery
Project: mibot-222814
Dataset: BI_USA
Main Table: vw_calidad_looker_studio
Refresh: Auto (cada 4 horas)

Para Superset:

Database Type: Google BigQuery
SQL Alchemy URI: bigquery://mibot-222814/BI_USA
Default Schema: BI_USA
Cache Timeout: 3600 seconds (1 hora)

5.2 Queries Principales por Hoja

Hoja 1 - KPIs:

sql
-- KPIs principales
SELECT 
  'TOTAL' as metric,
  COUNT(*) as value,
  'evaluaciones' as unit
FROM BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
WHERE fecha_llamada >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)

UNION ALL

SELECT 
  'EJECUTIVOS' as metric,
  COUNT(DISTINCT ejecutivo_id) as value,
  'activos' as unit
FROM BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
WHERE fecha_llamada >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)

UNION ALL

SELECT 
  'PROMEDIO' as metric,
  ROUND(AVG(nota_total_consolidada), 1) as value,
  'puntos' as unit
FROM BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
WHERE fecha_llamada >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)

UNION ALL

SELECT 
  'APROBACION' as metric,
  ROUND(COUNTIF(nota_total_consolidada >= 80) * 100.0 / COUNT(*), 1) as value,
  '%' as unit
FROM BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
WHERE fecha_llamada >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY);

Hoja 2 - Semanal:

sql
-- Tendencia semanal
SELECT 
  año_llamada,
  semana_llamada,
  CONCAT(año_llamada, '-W', LPAD(CAST(semana_llamada AS STRING), 2, '0')) as semana_display,
  COUNT(*) as total_evaluaciones,
  ROUND(AVG(nota_total_consolidada), 1) as promedio_semanal,
  COUNTIF(nota_total_consolidada >= 80) as aprobadas,
  ROUND(COUNTIF(nota_total_consolidada >= 80) * 100.0 / COUNT(*), 1) as porcentaje_aprobacion
FROM BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
WHERE fecha_llamada >= DATE_SUB(CURRENT_DATE(), INTERVAL 8*7 DAY)
GROUP BY 1,2,3
ORDER BY año_llamada, semana_llamada;

Hoja 3 - Competencias:

sql
-- Performance por competencia
SELECT 
  tipo_gestion,
  'Expresa atributos' as competencia,
  CASE WHEN tipo_gestion = 'DIFICULTAD' THEN 20 ELSE 5 END as max_puntaje,
  ROUND(AVG(CASE WHEN tipo_gestion = 'DIFICULTAD' THEN dif_expresa_atributos_score
                 WHEN tipo_gestion = 'PROMESA' THEN prom_expresa_atributos_score END), 1) as promedio_obtenido,
  ROUND(AVG(CASE WHEN tipo_gestion = 'DIFICULTAD' THEN dif_expresa_atributos_score
                 WHEN tipo_gestion = 'PROMESA' THEN prom_expresa_atributos_score END) * 100.0 / 
        CASE WHEN tipo_gestion = 'DIFICULTAD' THEN 20 ELSE 5 END, 1) as porcentaje_cumplimiento
FROM BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
GROUP BY tipo_gestion

UNION ALL

-- Repetir para cada competencia...

Hoja 4 - Ranking:

sql
-- Ranking de ejecutivos
SELECT 
  ROW_NUMBER() OVER (ORDER BY AVG(nota_total_consolidada) DESC) as ranking,
  ejecutivo_id,
  supervisor_id,
  COUNT(*) as total_evaluaciones,
  ROUND(AVG(nota_total_consolidada), 1) as promedio,
  ROUND(MIN(nota_total_consolidada), 1) as minimo,
  ROUND(MAX(nota_total_consolidada), 1) as maximo,
  ROUND(STDDEV(nota_total_consolidada), 1) as variabilidad,
  CASE 
    WHEN AVG(nota_total_consolidada) >= 90 THEN 'Excelente'
    WHEN AVG(nota_total_consolidada) >= 80 THEN 'Muy Bueno'
    WHEN AVG(nota_total_consolidada) >= 70 THEN 'Bueno'
    WHEN AVG(nota_total_consolidada) >= 60 THEN 'Regular'
    ELSE 'Oportunidad'
  END as categoria_performance
FROM BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
GROUP BY ejecutivo_id, supervisor_id
HAVING total_evaluaciones >= 5
ORDER BY promedio DESC;

5.3 Filtros Globales

sql
-- Configurar filtros que apliquen a todas las hojas
PARAMETERS:
- fecha_inicio: DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
- fecha_fin: DATE DEFAULT CURRENT_DATE()
- supervisor_filtro: STRING DEFAULT 'Todos'
- tipo_gestion_filtro: STRING DEFAULT 'Todos'

5.4 Alertas y Notificaciones

sql
-- Definir umbrales para alertas
CRITICAL_THRESHOLD = 60  -- Promedio crítico
WARNING_THRESHOLD = 70   -- Promedio de alerta
TARGET_THRESHOLD = 80    -- Objetivo mínimo

-- Query para alertas
SELECT 
  'ALERTA_SUPERVISOR' as tipo_alerta,
  supervisor_id,
  ROUND(AVG(nota_total_consolidada), 1) as promedio_actual,
  80 as objetivo,
  CASE 
    WHEN AVG(nota_total_consolidada) < 60 THEN 'CRÍTICO'
    WHEN AVG(nota_total_consolidada) < 70 THEN 'ALERTA'
    WHEN AVG(nota_total_consolidada) < 80 THEN 'ATENCIÓN'
    ELSE 'OK'
  END as nivel_alerta
FROM BI_USA.bi_LXNMkPhgWyjLRMotKNDs_fact_evaluaciones_calidad
WHERE fecha_llamada >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
GROUP BY supervisor_id
HAVING AVG(nota_total_consolidada) < 80;

📱 6. INTERACTIVIDAD Y UX

6.1 Drill-Down Paths

Resumen Ejecutivo → Click en KPI → Detalle por Supervisor
                 → Click en Competencia → Análisis por Criterio
                 → Click en Ejecutivo → Performance Individual

Ranking → Click en Ejecutivo → Historial de Evaluaciones
       → Click en Supervisor → Performance del Equipo

6.2 Tooltips Informativos

html
<!-- Ejemplo de tooltip para competencias -->
<div class="tooltip">
  <h4>Ofrecimiento REFI - Dificultad</h4>
  <p><strong>Ponderación:</strong> 45 puntos (45% del total)</p>
  <p><strong>Criterio:</strong> El agente debe mencionar si hay refinanciamiento disponible</p>
  <p><strong>Promedio actual:</strong> 28.5 / 45 (63.3%)</p>
  <p><strong>Meta:</strong> ≥ 36 puntos (80%)</p>
</div>

6.3 Exportación de Datos

  • PDF: Reportes ejecutivos con formato corporativo
  • Excel: Datos detallados para análisis offline
  • CSV: Datos raw para otros sistemas
  • PowerPoint: Presentaciones automáticas

🔄 7. MANTENIMIENTO Y ACTUALIZACIONES

7.1 Frecuencia de Actualización

  • ETL Principal: Diario a las 06:00 AM
  • Agregaciones: Post-ETL (06:30 AM)
  • Cache Dashboard: Cada 4 horas
  • Alertas: En tiempo real

7.2 Monitoreo de Calidad de Datos

sql
-- Job de validación diario
SELECT 
  DATE(CURRENT_TIMESTAMP()) as fecha_validacion,
  COUNT(*) as registros_procesados,
  COUNT(CASE WHEN nota_total_consolidada IS NULL THEN 1 END) as notas_nulas,
  COUNT(CASE WHEN fecha_llamada IS NULL THEN 1 END) as fechas_nulas,
  ROUND(AVG(nota_total_consolidada), 2) as promedio_dia,
  'OK' as status
Content is user-generated and unverified.
    Especificación Completa del Dashboard de Calidad | Claude