Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/carlosgomezc7/plataforma_aprendizaje/llms.txt

Use this file to discover all available pages before exploring further.

El módulo de Análisis aborda uno de los problemas más críticos en cualquier plataforma educativa: la deserción escolar. En lugar de tratar los módulos del curso como elementos aislados, el módulo los modela como los nodos de un grafo ponderado, donde cada arista entre dos módulos lleva como peso la tasa de abandono observada en esa transición. Cuando esa tasa supera un umbral configurable, el sistema genera una alerta automática — un “cuello de botella” que indica qué transición específica está perdiendo más estudiantes.

GrafoRendimiento

La clase GrafoRendimiento implementa el grafo usando un diccionario de adyacencia anidado. Las claves de primer nivel son los módulos de origen; sus valores son diccionarios que mapean cada módulo de destino a la tasa de abandono (un entero que representa un porcentaje).
class GrafoRendimiento:
    def __init__(self):
        # Diccionario de adyacencia {modulo: {modulo_siguiente: tasa_abandono}}
        self.grafo = {}

    def agregar_transicion(self, modulo_origen, modulo_destino, tasa_abandono):
        if modulo_origen not in self.grafo:
            self.grafo[modulo_origen] = {}
        self.grafo[modulo_origen][modulo_destino] = tasa_abandono

    def detectar_cuellos_botella(self, umbral=50):
        alertas = []
        for origen, destinos in self.grafo.items():
            for destino, abandono in destinos.items():
                if abandono >= umbral:
                    alertas.append(f"Alerta: {abandono}% de abandono entre '{origen}' y '{destino}'")
        return alertas
La representación interna del grafo para los datos precargados luce así:
{
    "Módulo 1": {"Módulo 2": 10},
    "Módulo 2": {"Módulo 3": 65},
    "Módulo 3": {"Módulo 4": 15}
}

Datos de ejemplo

La aplicación precarga tres transiciones al inicializarse (__init__ de AplicacionAprendizaje):
OrigenDestinoTasa de abandonoEstado
Módulo 1Módulo 210%✅ Seguro
Módulo 2Módulo 365%🚨 Cuello de botella
Módulo 3Módulo 415%✅ Seguro
La transición Módulo 2 → Módulo 3 supera el umbral del 50%, lo que indica que más de la mitad de los estudiantes que completan el Módulo 2 no avanzan al Módulo 3 — una señal de que ese tramo del curso requiere atención pedagógica inmediata.

Detectar cuellos de botella

Al hacer clic en el botón “Analizar Cuellos de Botella (>50% Abandono)”, la aplicación llama a self.grafo_rendimiento.detectar_cuellos_botella(umbral=50). El método itera sobre todas las aristas del grafo y agrega al listado de alertas cualquier transición cuya tasa de abandono sea mayor o igual al umbral. El resultado se muestra en el área de texto en color rojo. Con los datos por defecto, la salida es:
Alerta: 65% de abandono entre 'Módulo 2' y 'Módulo 3'
Si todas las transiciones están por debajo del umbral, el sistema muestra:
El flujo de estudiantes es óptimo. Sin alertas.

Extender el grafo

Para incorporar nuevas transiciones al grafo en tiempo de ejecución (por ejemplo, si se amplía el plan de estudios), basta con llamar a agregar_transicion():
# Agregar nuevas rutas al plan de estudios
grafo.agregar_transicion("Módulo 4", "Módulo 5", 30)   # 30% — seguro
grafo.agregar_transicion("Módulo 4", "Módulo 6", 72)   # 72% — cuello de botella
grafo.agregar_transicion("Módulo 5", "Proyecto Final", 20)

# Volver a detectar con el umbral por defecto
alertas = grafo.detectar_cuellos_botella()
# → ["Alerta: 65% de abandono entre 'Módulo 2' y 'Módulo 3'",
#    "Alerta: 72% de abandono entre 'Módulo 4' y 'Módulo 6'"]

# Detectar con umbral estricto del 25%
alertas_estrictas = grafo.detectar_cuellos_botella(umbral=25)
# → incluye también la transición de 30%

El umbral del 50% es únicamente el valor predeterminado. Puedes ajustarlo pasando cualquier entero a detectar_cuellos_botella(umbral=N). Por ejemplo, usar umbral=25 marcará como problemática cualquier transición donde más de una cuarta parte de los estudiantes abandone, proporcionando un análisis mucho más conservador del flujo de aprendizaje.

Para la referencia completa de la clase consulta:

Build docs developers (and LLMs) love