Modernización, desacoplamiento de cargas analíticas en 4 capas y modelos predictivos sobre el ecosistema SOFI para la empresa APM Inversiones S.A.C.
Replicación R=3 en 3 DataNodes con tolerancia a fallas de disco.
Staging desacoplado de eventos Discord sin saturar PostgreSQL.
Inferencia de deserción en tiempo real y dashboards ejecutivos.
Modelo formativo 100% remoto que audita asistencia, telemetría Git y evaluaciones modulares.
Consultas analíticas pesadas sobre 7,111 filas degradan inserciones de marcación en PostgreSQL.
Auditar a un practicante exige cruzar 5 tablas relacionales con latencias críticas en producción.
Picos sincrónicos de eventos desde Discord (salas a las 9:00 AM) saturan la base sin colas.
Maestro de practicantes, convenios, sedes, asistencias y solicitudes de recuperación.
Eventos de check-in/out, horas en salas de voz (9:00 AM) y alertas de inactividad.
Horas efectivas de estudio por módulo, estados de avance (planned/finished) y notas.
Volumen de commits, diffs de líneas agregadas/eliminadas, ramas activas y PRs.
Validación de DNI único, verificación de nombres oficiales y saneamiento de duplicados.
Calendario oficial de días no laborables para evitar penalizaciones erróneas en horas.
hdfs:///data/sofi/| Rol | Nombre del Campo | Tipo en Machine Learning | Descripción y Dominio |
|---|---|---|---|
| Y | riesgo_incumplimiento | Cualitativa Binaria | Target: 1 = Deuda Crítica / Default, 0 = Cumple |
| X₁ | total_horas_adeudadas | Cuantitativa Continua | Saldo neto acumulado por inasistencias (ej. 42.5 hrs) |
| X₂ | cantidad_faltas_injustificadas | Cuantitativa Discreta | Conteo entero de inasistencias sin justificar (ej. 4) |
| X₃ | tipo_convenio | Cualitativa Nominal | Preprofesional (30h) / Profesional (48h) / Voluntario |
| X₄ | tiene_plan_recuperacion | Cualitativa Binaria | 1 = Plan activo en curso, 0 = Sin solicitud activa |
| Rol | Nombre del Campo | Tipo en Machine Learning | Descripción y Dominio |
|---|---|---|---|
| Y | estado_bloqueado | Cualitativa Binaria | Target: 1 = Bloqueado / Requiere rescate, 0 = Normal |
| X₁ | tiempo_modulo_horas | Cuantitativa Continua | Horas acumuladas dedicadas al módulo actual (ej. 18.5 hrs) |
| X₂ | dias_sin_commits | Cuantitativa Discreta | Días laborables consecutivos sin actividad Git (ej. 3 días) |
| X₃ | curso_tecnologico | Cualitativa Nominal | Ruta formativa (SpringBoot, React, TypeScript, Git) |
| X₄ | solicito_ayuda_mentor | Cualitativa Binaria | 1 = Solicitó ticket en SOFI ayuda_puntos, 0 = No solicitó |
joblib) con Accuracy del 97.7% y 100% sobre 7,111 registros. Inferencia en tiempo real integrada.
Inferencia en Vivo en Slide Siguiente ▶
Consolidado mensual de asistencia, horas requeridas, tardanzas y pasivo formativo acumulado.
| Nombre del Campo | Tipo | Descripción Corta | Origen de Datos |
|---|---|---|---|
| practicante_id | Integer | Identificador único del practicante en SOFI | PostgreSQL (usuarios) |
| periodo_mes | Varchar | Mes y año del balance analizado (ej. "2026-08") | PostgreSQL (asistencias) |
| horas_requeridas | Float | Total horas a cumplir según convenio mensual | PostgreSQL (convenios) |
| horas_asistidas_reales | Float | Horas netas registradas en conexión y formación | Bot Discord / Asistencias |
| total_tardanzas | Integer | Registros con ingreso posterior a la tolerancia | PostgreSQL (asistencias) |
| total_inasistencias | Integer | Días laborables sin registro ni justificación | PostgreSQL (asistencias) |
| horas_recuperadas | Float | Horas compensadas en turnos extraordinarios | PostgreSQL (recuperaciones) |
| balance_horas | Float | Saldo neto (reales + recuperadas - requeridas) | Cálculo OLAP |
| estado_laboral | Varchar | Cumplimiento formativo (Regular / Alerta / Observado) | Regla Negocio |
Cruce multidimensional de avance curricular, calificaciones de mentores y telemetría de commits en Git.
| Nombre del Campo | Tipo | Descripción Corta | Origen de Datos |
|---|---|---|---|
| practicante_id | Integer | Identificador único del practicante evaluado | PostgreSQL (usuarios) |
| curso_nombre | Varchar | Denominación de la ruta técnica (SpringBoot, Git) | LMS / PostgreSQL (cursos) |
| modulo_tema_actual | Varchar | Módulo formativo en desarrollo actualmente | LMS / PostgreSQL (modulos) |
| estado_progreso | Varchar | Situación curricular (finished, in_progress, planned) | Telemetría LMS |
| nota_evaluacion_mentor | Float | Calificación otorgada en rúbrica técnica (0 - 20) | Evaluaciones Mentor SOFI |
| tuvo_reevaluacion | Booleano | Indica si requirió segundo intento tras reprobación | Rúbricas Mentor SOFI |
| commits_totales | Integer | Cantidad de commits registrados en el módulo | API GitHub (telemetría) |
| lineas_codigo_agregadas | Integer | Volumen neto de líneas añadidas en repositorios | API GitHub (telemetría) |
| pull_requests_aprobados | Integer | PRs revisados, aprobados y fusionados | API GitHub (telemetría) |
| tiempo_estudio_horas | Float | Horas invertidas en plataforma formativa | Telemetría LMS |
| nivel_dominio_tecnico | Varchar | Segmentación de competencia (Básico, Intermedio, Avanzado) | Clasificación OLAP |
Filtra perfiles de software activos (Backend y Frontend).
Descompone el arreglo embebido de cursos y módulos.
Agrupa por tecnología y computa medias, atascados y notas.
Calcula la métrica porcentual de tasa de atascamiento.
Ordena descendentemente por mayor fricción y menor nota.
JPA/Hibernate y Security JWT, motivando una reestructuración de la ruta formativa.
Al identificar que SpringBoot genera 47.5% de atascamiento, APM Inversiones dividió el curso en 3 micro-retos asistidos con Pair Programming, reduciendo la fricción al 18% en 4 semanas.
postgres_db (:5432)mongodb_sofi (:27017)namenode + 3 datanodessofi-presentation (:80 / :3000)APM Inversiones S.A.C. — Plataforma Web de Operaciones y Formación SOFI