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.
MotorBaseDatos es la capa de persistencia de la Plataforma Educativa Personalizada. Gestiona la lectura y escritura de todos los datos de la aplicación — cursos y registros de progreso de estudiantes — en un archivo JSON local. Al instanciarse, la clase intenta cargar el archivo indicado; si no existe, lo crea automáticamente con una base de datos predeterminada que incluye cinco cursos de ejemplo y una lista de progresos vacía.
Constructor
Ruta (relativa o absoluta) al archivo JSON que actúa como base de datos local. Si el archivo no existe en esa ruta, se creará automáticamente al terminar la inicialización.
Métodos
cargar_datos()
Carga self.data desde el archivo JSON apuntado por self.archivo_db. Si el archivo no existe, inicializa self.data con el diccionario default_db (que contiene los cinco cursos predeterminados y "progresos": []) y escribe esa estructura en disco llamando a guardar_datos(). Si el archivo existe pero su contenido no es JSON válido, captura la excepción, imprime un mensaje de error en stdout y cae de vuelta a default_db sin escribir nada.
No devuelve valor. Los datos quedan disponibles en
self.data.guardar_datos()
Serializa self.data al archivo JSON usando json.dump con indent=4 y ensure_ascii=False, de modo que los caracteres especiales del español se escriban sin escapar. Si ocurre cualquier excepción durante la escritura, imprime el mensaje de error en stdout pero no relanza la excepción.
No devuelve valor.
obtener_cursos()
Accede a la clave "cursos" de self.data y la devuelve. Si la clave no existe (por ejemplo, tras una corrupción parcial del JSON), devuelve una lista vacía gracias al valor por defecto de dict.get.
Lista de objetos de curso. Cada objeto contiene al menos los campos
id (int), nombre (str), relevancia (int) y dificultad (int).guardar_progreso(estudiante, modulo)
Agrega un nuevo registro de progreso a self.data["progresos"] y persiste los cambios en disco llamando a guardar_datos(). Si la clave "progresos" no existiera en self.data, la crea como lista vacía antes de agregar el registro.
Identificador del estudiante, por ejemplo
"Ana_Garcia".Nombre del módulo completado, por ejemplo
"Módulo 3".No devuelve valor. El registro queda guardado en el archivo JSON.
Ejemplo de uso
MotorBaseDatos abre el archivo JSON con encoding='utf-8' tanto en lectura como en escritura, lo que garantiza que los caracteres especiales del español (tildes, ñ, signos de interrogación, etc.) se almacenen y recuperen correctamente en cualquier sistema operativo.