El módulo de Progreso ilustra un patrón de buffering en tiempo real: la actividad del estudiante se acumula primero en una estructura de datos en memoria (la cola) y sólo se persiste en disco cuando el usuario decide sincronizar. Esta separación entre captura y persistencia es un patrón habitual en sistemas que necesitan absorber ráfagas de eventos sin bloquear la interfaz o la base de datos en cada operación.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.
Cola FIFO (ColaProgreso)
Una cola FIFO (First-In, First-Out / Primero en entrar, primero en salir) garantiza que los registros se procesen exactamente en el orden en que fueron generados — el progreso más antiguo es siempre el primero en sincronizarse. Esto es crítico en un contexto educativo donde el orden cronológico de la actividad del estudiante debe preservarse con fidelidad. La claseColaProgreso implementa esta estructura usando una lista Python de forma que insert(0, ...) agrega al frente (posición más reciente) y pop() extrae desde el final (posición más antigua):
| Método | Complejidad | Descripción |
|---|---|---|
encolar(progreso) | O(n) | Inserta un nuevo registro al inicio de la lista interna. |
desencolar() | O(1) | Extrae y retorna el elemento más antiguo (último de la lista). |
esta_vacia() | O(1) | Retorna True si no hay elementos pendientes. |
Simular Actividad (Encolar)
Al presionar el botón “Simular Actividad (Encolar)”, el métodoencolar_actividad() genera un nombre de módulo aleatorio (Módulo N, donde N es un entero entre 1 y 10) y encola el siguiente diccionario de progreso:
txt_cola) se refresca inmediatamente mostrando todos los elementos actuales en la cola con su posición:
Sincronizar a BD (Desencolar)
Al presionar “Sincronizar a BD (Desencolar)”, el métodoprocesar_cola() ejecuta los siguientes pasos:
- Verifica que la cola no esté vacía (muestra aviso si lo está).
- Llama a
self.cola_progreso.desencolar(), extrayendo el registro más antiguo. - Persiste el registro llamando a
db.guardar_progreso(estudiante, modulo), que añade una entrada al arreglo"progresos"dentro dedb_local.jsony escribe el archivo en disco. - Refresca la vista de la cola.
- Muestra un cuadro de confirmación con el elemento sincronizado.
db_local.json con la siguiente forma:
Ejemplo de flujo
Encolar tres actividades
El usuario presiona “Simular Actividad (Encolar)” tres veces. La cola en memoria contiene:
Sincronizar el primer elemento
El usuario presiona “Sincronizar a BD (Desencolar)”.
procesar_cola() extrae Módulo 9 (el más antiguo) y lo guarda en db_local.json. La cola ahora tiene:Confirmar persistencia
Se muestra el diálogo:
"Sincronizado en Base de Datos Local: {'estudiante': 'Juan_Perez', 'modulo': 'Módulo 9'}". El registro ya existe en disco y sobrevivirá a cualquier reinicio de la aplicación.Para la referencia completa de la clase consulta: