CALIDAD DE DATOS — Flota La Gran Ruta

Fecha: 10 de Marzo 2026 · Ciclo: 202602 · Día 12/28
64
SCORE /100
76
✅ OK
33
⚠️ WARN
1
❌ FAIL
110
PRUEBAS
7/7
FUENTES

IMPACTO DE NEGOCIO

💰Producción
6 WARN
⏱️Eficiencia
10 WARN
Combustible
6 WARN
💳Pagos
3 WARN
📊Cobertura
1 FAIL7 WARN
🔗Integridad
7 WARN
🕐Día Turno
6 WARN
DETALLE POR FUENTE (Bloque A)
F1: viajes_limpio.csv
Filas: 2,484 · Mod: Mar 09 00:17 · Delim: pipe
6/10 ✅
A01
Unicidad no_servicio
0 duplicados
A02
Campos críticos no vacíos
0 nulls en campos críticos
A03 ⚠️
Rango de montos razonable
1 viajes fuera de rango $0-$300K
💰Producción
A04
Fechas dentro del ciclo
Todas las fechas en rango
A05 ⚠️
Móviles fantasma (IDs internos TaxiCaller)
10 IDs internos TaxiCaller (134 viajes): ['1065', '1080', '111', '1255', '177', '1853', '350', '4345', '5869', '919']. JOIN usa conductor_key, no movil — sin impacto.
🔗Integridad
A06 ⚠️
Saltos de línea en campos
147 campos con \n
🔗Integridad
A07
Formato hora_inicio/hora_cierre
Todas las horas en formato HH:MM
A08 ⚠️
Duración viaje razonable
1 viajes con duración fuera de 5min-8h
⏱️Eficiencia
308983404:2min
A09
conductor_key formato correcto
Todos 2 tokens UPPERCASE
A10
no_servicio formato 9 dígitos
Todos 9 dígitos
F2: turnos_consolidado.csv
Filas: 171 · Mod: Mar 09 17:33 · Delim: comma
5/6 ✅
A11
Unicidad shift_id
0 duplicados
A12
Coherencia temporal (end > start)
Todos coherentes
A13
Duración máxima turno <24h
Todos <24h
A14 ⚠️
time_waited ≤ duración turno
10 turnos con waited > duración
⏱️Eficiencia
A15
Formato start_time/end_time
Todos parseables
A16
accepts/declines ≥ 0
Todos ≥ 0
F3: produccion_limpia.csv
Filas: 24 · Mod: Mar 09 00:05 · Delim: comma
4/4 ✅
A17
Unicidad conductor_key+movil
0 duplicados
A18
TOTAL = suma de días
Todos cuadran ±1%
A19
Valores producción ≥ 0
Todos ≥ 0
A20
conductor_key formato correcto
Todos 2 tokens
F5: flota_status.csv
Filas: 34 · Mod: Mar 07 17:50 · Delim: comma
3/3 ✅
A21
Unicidad movil+conductor
0 duplicados
A22
activo_admin valores válidos
Solo SI/NO/PROCESO-FIN
A23
Patente formato correcto
Todas 4-6 chars alfanuméricos
F6: consumos_copec.csv
Filas: 116 · Mod: Mar 09 15:39 · Delim: semicolon
2/2 ✅
A24
Unicidad Nº FOLIO
0 duplicados
A25
Litros razonables (5-80)
Todas en rango 5-80lt
CRUCES ENTRE FUENTES (Bloque B)
F1↔F3 3/6 ✅
B01
Cobertura viajes→produccion
100% cobertura
B02
Cobertura produccion→viajes
100% cobertura
B03 ⚠️
Concordancia totales por conductor
3 conductores con diff >5% (rango: 26/02→05/03)
conductorviajesproddiff
OVALLE SAEZ285277951764.1%
SOTO CUEVAS14910316628110.3%
SEPULVEDA VERGARA752938393310.3%
B04 ⚠️
Concordancia por día por conductor
Requiere mapeo fecha↔columna complejo. Verificado a nivel total en B03.
B05
Rango de fechas alineado
Viajes: 2026-02-26 → 2026-03-08, Produccion cols: 01-mar...28-feb
B06 ⚠️
Moviles consistentes
1 inconsistencias: ["OVALLE SAEZ: prod=167, viajes={'1167'}"]
F1↔F2 1/5 ✅
B08 ⚠️
Moviles con viajes sin turnos
12 móviles sin turnos: ['1065', '1080', '111', '1176', '1177', '1255', '177', '1853', '350', '4345', '5869', '919']
B09 ⚠️
Moviles con turnos sin viajes
2 móviles con turnos pero sin viajes: ['1150', '1152']
B07
Viajes con turno disponible
508 viajes con turno (74%), 170 sin turno
B10 ⚠️
Viajes fuera de todo turno
170 viajes sin turno contenedor (25%)
B11 ⚠️
Moviles alternos
Turnos cubre 24 móviles, viajes tiene 34. Diff: ['1150', '1152']
F4↔F1 3/3 ✅
B12
prod_acum = SUM(viajes)
Todos ±2%
B13
viajes_acum = COUNT viajes
Todos coinciden
B16
Últimos 3 días correctos
Todos correctos
F4↔F2 0/1 ✅
B14 ⚠️
horas_conect coherente con turnos
Verificación parcial: turnos solo cubren 9 móviles de 24 en analisis
F4 2/2 ✅
B15
completion_pct calculado correctamente
Todos correctos
B17
ticket_acum = prod/viajes
Todos correctos ±$500
F5↔F4 0/1 ✅
B18 ⚠️
Todo activo tiene analisis
4 activos sin analisis: ['CORTES SALAZAR', 'HERNANDEZ ALVARADO', 'LOBOS ALARCON', 'QUIÑIMIL SEPULVEDA']
F4↔F5 3/3 ✅
B19
Mapeo movil↔patente consistente
Todos consistentes
B20
Dados de baja excluidos
Todos excluidos
B21
Flota asignada correctamente
Todas correctas
F6↔F5 0/2 ✅
B22 ⚠️
Patentes Copec existen en flota
1 patentes no en flota: ['GPZT24']
B23 ⚠️
Patentes activas con combustible
18/28 (64%) activas con combustible
F6 0/2 ✅
B24 ⚠️
Odómetro creciente por patente
13 patentes con odómetro no creciente
KDFG54: 3876 → 3202
KDFG57: 9000 → 8500
TJGP28: 144709 → 142629
KDFG43: 4852 → 3198
KDFG44: 14939 → 12094
B25 ⚠️
Rendimiento km/lt razonable
Requiere cálculo entre cargas consecutivas (odómetro). Pendiente.
REGLAS DE NEGOCIO (Bloque C)
Reglas de Negocio R1-R109/15 ✅
C01
Alertas baja producción coherentes
24 conductores <60% completion, GAP coherente: True
C02
Jornadas consolidadas correctas
Verificación de gap >120min requiere análisis secuencial de turnos por movil
C03⚠️
Jornadas anómalas (>16h)
5 turnos >16h (posible multi-conductor)
movil 11118, shift 596779037: 16.1h
movil 11119, shift 596763535: 16.6h
movil 11122, shift 596762009: 16.3h
movil 1165, shift 596752428: 16.2h
movil 167, shift 596768595: 16.2h
C04⚠️
Tasa rechazo >20%
4 móviles con >20% rechazo
movil 1150: 50% rechazo (8/16)
movil 1164: 38% rechazo (20/52)
movil 167: 21% rechazo (7/33)
movil 169: 33% rechazo (9/27)
C05
idle + utilization ≈ 100%
Todos suman ~100%
C06⚠️
Objetivo prorrateado al día
Día 12/28 del ciclo. completion_pct en F4 es contra $5.5M (no prorrateado). Informe diario sí prorratéa.
C07
Ciclo facturación correcto
Distribución ciclos: {'2026-01': 1806, '2026-02': 678}
C08
Multi-conductor detectados
Sin multi-conductor
C09⚠️
Inactividad >3 días consecutivos
13 conductores sin viajes recientes
PRIETO SALAZAR: último viaje 2026-03-06 (4d)
CERNA VERGARA: último viaje 2026-03-06 (4d)
SANCHEZ MARIÑANCO: último viaje 2026-03-06 (4d)
MATURANA REYES: último viaje 2026-03-05 (5d)
SOTO CUEVAS: último viaje 2026-03-04 (6d)
ZUÑIGA QUINTANILLA: último viaje 2026-03-06 (4d)
SILVA OTERO: último viaje 2026-03-06 (4d)
ROJAS HERRERA: último viaje 2026-03-06 (4d)
PALOMINOS CADIZ: último viaje 2026-02-28 (10d)
FERRA BENAVIDES: último viaje 2026-03-06 (4d)
C10
Gaps clasificados correctamente
Clasificación de gaps implementada en calidad_flota.sql v2
C11⚠️
Conexión mínima semanal
Solo 24 móviles tienen turnos para verificar
C12⚠️
time_waited vs ocioso
Requiere cruce individual turno-a-turno. Solo 9 móviles con turnos.
C13
Viajes al cierre de turno
Análisis de extensión de jornada requiere match viaje↔turno individual.
C14
Producción por rango de ticket
Distribución: {'corto(<5K)': 0, 'medio(5-15K)': 160, 'largo(15-30K)': 290, 'premium(>30K)': 228}
C15
Producción fin de semana vs laborales
Ticket promedio: Lab=$31,402 (585 viajes), FdS=$26,274 (93 viajes)
FRESCURA (Bloque D)
Estado de Archivos9/10 ✅
PruebaEstadoDetalle
D01 Frescura viajes_limpio.csvModificado: 2026-03-09 00:17 (39h, umbral: 48h)
D02 Frescura turnos_consolidado.csvModificado: 2026-03-09 17:33 (22h, umbral: 48h)
D03 Frescura produccion_limpia.csvModificado: 2026-03-09 00:05 (39h, umbral: 48h)
D04 Frescura flota_status.csvModificado: 2026-03-07 17:50 (69h, umbral: 72h)
D05 Frescura consumos_copec.csvModificado: 2026-03-09 15:39 (23h, umbral: 72h)
D06 Frescura analisis_flota.csvModificado: 2026-03-09 17:33 (22h, umbral: 48h)
D07 Frescura gastos_conductores.csvModificado: 2026-03-08 23:38 (39h, umbral: 96h)
D08 Último día con viajesÚltimo día: 2026-03-08 (2 días atrás)
D09 Cobertura conductores últimos 3 días11/28 (39%) activos con viajes en últimos 3 días
D10 Turnos recientesÚltimo turno: 2026-03-09 (1 días atrás)
DÍA DE TURNO (Bloque E)

Perfiles de Turno

4
AM (05-17h)
0
TARDE (12-00h)
9
NOCHE (20-08h)
11
MIXTO
Pruebas dia_turno E01-E1510/15 ✅
E01
Perfil turno asignado
24 móviles con perfil asignado: {'MIXTO': 11, 'AM': 4, 'NOCHE': 9}
E02⚠️
Estabilidad del perfil (≥70%)
13/24 perfiles estables (≥70% turnos en ventana)
E03⚠️
Cobertura perfiles
17/24 (70%) conductores con perfil. Sin perfil: ['CARO ROMERO', 'CERNA VERGARA', 'ESPINA CABELLO', 'MATURANA REYES', 'PEREZ OPAZO']
E04
Distribución de perfiles
AM: 4, TARDE: 0, NOCHE: 9, MIXTO: 11
E05
Conductores sin turno → fallback
7 conductores sin turnos usarían fallback (hora<05:00 = día anterior): ['CARO ROMERO', 'CERNA VERGARA', 'ESPINA CABELLO', 'MATURANA REYES', 'PEREZ OPAZO']
E06
Viajes nocturnos reasignados
71 viajes de conductores NOCHE entre 00:00-04:59 → dia_turno = fecha-1
E07
Viajes AM/TARDE no reasignados
Viajes 05:00-23:59 de AM/TARDE mantienen dia_turno = fecha
E08
Cantidad viajes reasignados
126 viajes cambiarían de día con dia_turno (18% del total)
E09
Producción por dia_turno vs calendario
Top impactados por dia_turno:
ZAMORANO ZAMORANONO: 16 viajes reasignados, Δmax=$112,350
ZUÑIGA QUINTANILLA: 15 viajes reasignados, Δmax=$51,956
ROJAS HERRERA: 12 viajes reasignados, Δmax=$47,816
ROVILLAR SANCHEZ: 11 viajes reasignados, Δmax=$99,639
QUIÑONES ROZAS: 9 viajes reasignados, Δmax=$38,110
E10
Días que aparecen/desaparecen
Con dia_turno, algunos días con $0 (calendario) pasarían a tener producción y viceversa. 71 viajes afectados.
E11⚠️
dia_turno combustible
Campo dia_turno no implementado aún en consumos_copec. Requiere hora de carga + perfil.
E12⚠️
dia_turno vs produccion_limpia
produccion_limpia usa día calendario. dia_turno mejoraría concordancia para conductores nocturnos.
E13
Ranking impacto dia_turno
Top 5 más impactados por dia_turno
conductorperfilreasignados
ZAMORANO ZAMORANONONOCHE16
ZUÑIGA QUINTANILLANOCHE15
ROJAS HERRERANOCHE12
ROVILLAR SANCHEZNOCHE11
QUIÑONES ROZASNOCHE9
E14
Producción diaria máxima con dia_turno
Requiere recalcular SUM(a_pagar) por dia_turno por conductor. Pendiente implementación campo.
E15⚠️
Concordancia mejorada con dia_turno
Hipótesis: dia_turno mejora concordancia B03 para conductores NOCHE. Pendiente implementación.
DERIVADOS Y DASHBOARD (Bloque F)
Archivos Derivados F01-F1010/10 ✅
F01
Filas = conductores con producción
24 filas (vs 24 en produccion_limpia)
F02
Datos semana correctos
1 conductores sin datos de semana
F03
GAP acumulado correcto
Todos correctos
F04
Flota/activo propagados
Verificado en B21
F05
Aceptación calculada
Verificación parcial: campo existe y valores razonables (0-100%)
F06
Horas perdidas coherentes
Todas coherentes
F07
Datos semana anterior existen
1 conductores sin datos de semana anterior
F08
validacion_cruzada actualizada
Modificado hace 39h
F09
calidad_financiera sincronizado
calidad_financiera: 39h, gastos: 39h
F10
SQL hash consistente
Hash file exists. Manual check recommended.
ANOMALÍAS (Bloque G)
Detección de Anomalías G01-G106/10 ✅
G01
Outliers producción diaria (>3× promedio)
Sin outliers
G02
Conductor con $0 producción
Todos con producción >0
G03⚠️
Patente → 1 movil
1 patentes con >1 movil: {'KDFG47': ['1167', '167']}
G04⚠️
Viajes horario inusual (01-04h sin perfil NOCHE)
10 viajes en horario nocturno de conductor no-NOCHE
G05
prod_acum vs suma real
Todos coinciden ±$1,000
G06⚠️
Gastos con movil válido
8 moviles en gastos no en flota: ['+56949802875', '164', '171', 'KDFG45', 'KDFG49']
G07
Gastos duplicados
0 duplicados
G08⚠️
Conductores Copec vs flota
22 conductores en Copec no reconocidos: ['JUAN JOSE QUINONES', 'HUGO ZUNIGA', 'RODRIGO PEDRO BLAMEY TOLEDO', 'EDUARDO ROJAS', 'FRANCISCO HERNNDEZ']
G09
Viajes con $0
Ninguno $0
G10
Viajes ciclo futuro
Ninguno en ciclo futuro
ACCIONES RECOMENDADAS
❌ CRITICO [D09] Cobertura conductores últimos 3 días
11/28 (39%) activos con viajes en últimos 3 días
Afecta: 📊Cobertura
⚠️ MEDIO [A03] Rango de montos razonable
1 viajes fuera de rango $0-$300K
Afecta: 💰Producción
⚠️ MEDIO [A05] Móviles fantasma (IDs internos TaxiCaller)
10 IDs internos TaxiCaller (134 viajes): ['1065', '1080', '111', '1255', '177', '1853', '350', '4345', '5869', '919']. JOIN usa conductor_key, no movil — sin impacto.
Afecta: 🔗Integridad
⚠️ MEDIO [A06] Saltos de línea en campos
147 campos con \n
Afecta: 🔗Integridad
⚠️ MEDIO [A08] Duración viaje razonable
1 viajes con duración fuera de 5min-8h
Afecta: ⏱️Eficiencia
⚠️ MEDIO [A14] time_waited ≤ duración turno
10 turnos con waited > duración
Afecta: ⏱️Eficiencia
⚠️ MEDIO [B03] Concordancia totales por conductor
3 conductores con diff >5% (rango: 26/02→05/03)
Afecta: 💰Producción, 💳Pagos
⚠️ MEDIO [B04] Concordancia por día por conductor
Requiere mapeo fecha↔columna complejo. Verificado a nivel total en B03.
Afecta: 💰Producción
⚠️ MEDIO [B06] Moviles consistentes
1 inconsistencias: ["OVALLE SAEZ: prod=167, viajes={'1167'}"]
Afecta: 🔗Integridad
⚠️ MEDIO [B08] Moviles con viajes sin turnos
12 móviles sin turnos: ['1065', '1080', '111', '1176', '1177', '1255', '177', '1853', '350', '4345', '5869', '919']
Afecta: ⏱️Eficiencia, 📊Cobertura
⚠️ MEDIO [B09] Moviles con turnos sin viajes
2 móviles con turnos pero sin viajes: ['1150', '1152']
Afecta: ⏱️Eficiencia
⚠️ MEDIO [B10] Viajes fuera de todo turno
170 viajes sin turno contenedor (25%)
Afecta: ⏱️Eficiencia, 📊Cobertura
⚠️ MEDIO [B11] Moviles alternos
Turnos cubre 24 móviles, viajes tiene 34. Diff: ['1150', '1152']
Afecta: 🔗Integridad
⚠️ MEDIO [B14] horas_conect coherente con turnos
Verificación parcial: turnos solo cubren 9 móviles de 24 en analisis
Afecta: ⏱️Eficiencia
⚠️ MEDIO [B18] Todo activo tiene analisis
4 activos sin analisis: ['CORTES SALAZAR', 'HERNANDEZ ALVARADO', 'LOBOS ALARCON', 'QUIÑIMIL SEPULVEDA']
Afecta: 📊Cobertura
⚠️ MEDIO [B22] Patentes Copec existen en flota
1 patentes no en flota: ['GPZT24']
Afecta: ⛽Combustible
⚠️ MEDIO [B23] Patentes activas con combustible
18/28 (64%) activas con combustible
Afecta: ⛽Combustible, 📊Cobertura
⚠️ MEDIO [B24] Odómetro creciente por patente
13 patentes con odómetro no creciente
Afecta: ⛽Combustible
⚠️ MEDIO [B25] Rendimiento km/lt razonable
Requiere cálculo entre cargas consecutivas (odómetro). Pendiente.
Afecta: ⛽Combustible
⚠️ MEDIO [C03] Jornadas anómalas (>16h)
5 turnos >16h (posible multi-conductor)
Afecta: ⏱️Eficiencia