Guía Técnica: Dashboard de Ensamblaje de Evaluaciones

Plan de desarrollo para la creación de pruebas y exámenes a partir del banco de preguntas.

1. Visión General y Flujo de Trabajo del Profesor

Este documento detalla la creación de una nueva sección en el panel del profesor: el "Gestor de Evaluaciones". El objetivo es permitir a los profesores construir evaluaciones específicas (como pruebas parciales, controles o exámenes finales) seleccionando preguntas del "Banco de Preguntas" ya existente.

El flujo de trabajo para el profesor será el siguiente:

  1. Crear el Contenedor de la Evaluación: El profesor definirá las propiedades generales de la prueba, como el título ("Prueba Parcial N°1"), las instrucciones, las fechas de disponibilidad y el tiempo límite.
  2. Ensamblar la Prueba: Utilizando una interfaz de dos columnas, el profesor buscará y seleccionará preguntas del banco para añadirlas a la evaluación que está creando.
  3. Configurar la Prueba: Podrá definir el orden y el puntaje específico de cada pregunta dentro de esa evaluación en particular.
  4. Publicar: Una vez que la prueba esté lista, el profesor la publicará para que quede disponible para los alumnos en la fecha programada.

2. Arquitectura de Base de Datos para Evaluaciones

Para implementar esta funcionalidad, se crearán dos nuevas tablas que trabajarán en conjunto con el banco de preguntas ya definido.

2.1. Tabla `evaluaciones`

Almacena la "cáscara" o contenedor de cada prueba con sus reglas y propiedades.

-- Define cada instancia de una prueba o examen
CREATE TABLE `evaluaciones` (
  `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `curso_id` INT NOT NULL, -- CAMPO AÑADIDO GRACIAS A TU SUGERENCIA
  `subtema_id` INT NOT NULL,
  `profesor_id` INT NOT NULL,
  `titulo` VARCHAR(255) NOT NULL,
  `instrucciones` TEXT NULL,
  `estado` ENUM('borrador', 'publicada', 'archivada') NOT NULL DEFAULT 'borrador',
  `fecha_disponible` DATETIME NULL,
  `fecha_cierre` DATETIME NULL,
  `tiempo_limite_minutos` INT UNSIGNED NULL,
  FOREIGN KEY (`curso_id`) REFERENCES `cursos_sence`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`subtema_id`) REFERENCES `subtemas_curso`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`profesor_id`) REFERENCES `profesores`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2.2. Tabla `evaluacion_pregunta_link`

Esta es la tabla "puente" que conecta cada evaluación con las preguntas seleccionadas del banco.

-- Tabla de enlace que conecta una evaluación con sus preguntas
CREATE TABLE `evaluacion_pregunta_link` (
  `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `evaluacion_id` INT NOT NULL COMMENT 'Referencia a la prueba',
  `pregunta_id` INT NOT NULL COMMENT 'Referencia a la pregunta del banco',
  `orden` INT DEFAULT 0 COMMENT 'Orden de la pregunta en esta prueba específica',
  `puntaje` DECIMAL(5,2) DEFAULT 1.00 COMMENT 'Puntaje de la pregunta en esta prueba específica',
  FOREIGN KEY (`evaluacion_id`) REFERENCES `evaluaciones`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`pregunta_id`) REFERENCES `evaluacion_preguntas`(`id`) ON DELETE CASCADE,
  UNIQUE KEY `evaluacion_pregunta_unica` (`evaluacion_id`, `pregunta_id`)
) ENGINE=InnoDB;

3. Maqueta Detallada del Dashboard de Ensamblaje

A continuación se presenta una maqueta visual de la interfaz que utilizará el profesor para construir las evaluaciones.

Ensamblador de Evaluaciones

Evaluación Actual: Prueba Parcial N°1

Estado: Borrador


Preguntas Asignadas (2)

1. ¿Cuál de las siguientes herramientas es para diseño de interfaces?

2. Analice el caso de estudio adjunto y proponga tres mejoras.

Banco de Preguntas

¿Qué es SENCE?

Tema: Introducción

¿Qué significa la sigla LMS?

Tema: Conceptos Clave

4. Lógica de Funcionamiento del Backend

Se necesitarán varios scripts en el servidor para dar vida a esta interfaz.

Nota sobre la Implementación: Siguiendo las directrices, las acciones de añadir, quitar o reordenar preguntas implicarán una recarga de la página para reflejar los cambios, a menos que se autorice explícitamente el uso de AJAX para una experiencia más dinámica.

5. Flujo de Desarrollo y Próximos Pasos

Se propone el siguiente plan de trabajo iterativo para construir este módulo.

  1. Fase 1: Base de Datos (Aprobación).
    • Acción: Obtener la aprobación final para las tablas `evaluaciones` y `evaluacion_pregunta_link`.
    • Resultado: Una base de datos lista para soportar la nueva funcionalidad.
  2. Fase 2: Lógica de Backend.
    • Acción: Desarrollar los scripts PHP para crear la evaluación, y para añadir, quitar y actualizar las preguntas asociadas.
    • Resultado: El "motor" del ensamblador estará funcional y listo para ser conectado a una interfaz.
  3. Fase 3: Interfaz de Usuario (Frontend).
    • Acción: Desarrollar la interfaz de dos columnas como se muestra en la maqueta, incluyendo el modal para crear la evaluación.
    • Resultado: Un dashboard completamente funcional para que los profesores puedan armar sus pruebas.
  4. Fase 4: Pruebas e Integración.
    • Acción: Realizar pruebas exhaustivas del flujo completo, desde la creación de la prueba hasta la verificación de que los datos se guardan correctamente en la base de datos.
    • Resultado: Un módulo robusto, probado y listo para su uso.
Siguiente Paso Inmediato

Se solicita tu autorización para proceder con la Fase 1: crear las tablas `evaluaciones` y `evaluacion_pregunta_link` en la base de datos de desarrollo, consolidando así la arquitectura para este módulo.