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.

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

MotorBaseDatos(archivo_db="db_local.json")
archivo_db
string
default:"db_local.json"
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.
return
None
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.
return
None
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.
return
list[dict]
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.
estudiante
string
required
Identificador del estudiante, por ejemplo "Ana_Garcia".
modulo
string
required
Nombre del módulo completado, por ejemplo "Módulo 3".
return
None
No devuelve valor. El registro queda guardado en el archivo JSON.

Ejemplo de uso

db = MotorBaseDatos()  # Carga o crea db_local.json
cursos = db.obtener_cursos()  # [{'id': 101, 'nombre': ...}, ...]
db.guardar_progreso("Ana_Garcia", "Módulo 3")
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.

Build docs developers (and LLMs) love