Documento maestro para la creación, gestión y evaluación de exámenes en la plataforma OTEC.
Este documento establece el plan técnico para desarrollar un módulo de evaluación integral. El objetivo es dotar a los profesores de las herramientas necesarias para crear, administrar y calificar exámenes de manera eficiente, mientras se ofrece a los alumnos una experiencia clara y funcional para rendir sus evaluaciones.
Toda la arquitectura propuesta está diseñada para ser compatible con los requerimientos de SENCE. Las evaluaciones se vinculan a un `subtema_id`, que funciona como una "Actividad" reportable. Esto nos permite registrar calificaciones y progreso que pueden ser enviados a SENCE a través del conector API existente.
Basado en nuestras conversaciones, se ha definido una estructura de cuatro tablas para asegurar la máxima flexibilidad, eficiencia y escalabilidad del módulo.
Almacena la pregunta y la vincula al curso, subtema y profesor.
-- Almacena la pregunta y su contexto
CREATE TABLE `evaluacion_preguntas` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`subtema_id` INT NOT NULL COMMENT 'Vincula la pregunta al subtema/actividad del curso',
`curso_id` INT NOT NULL,
`profesor_id` INT NOT NULL COMMENT 'Profesor que crea/gestiona la pregunta',
`pregunta_texto` TEXT NOT NULL,
`tipo_pregunta` ENUM('seleccion_multiple', 'respuesta_escrita') NOT NULL DEFAULT 'seleccion_multiple',
`estado` ENUM('activo','inactivo') DEFAULT 'activo',
`fecha_creacion` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
`fecha_edicion` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`subtema_id`) REFERENCES `subtemas_curso`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB;
Almacena las opciones de respuesta para las preguntas de selección múltiple.
-- Almacena las opciones para preguntas de selección múltiple
CREATE TABLE `evaluacion_opciones` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`pregunta_id` INT NOT NULL,
`opcion_texto` TEXT NOT NULL,
`es_correcta` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 si es la respuesta correcta, 0 si no',
FOREIGN KEY (`pregunta_id`) REFERENCES `evaluacion_preguntas`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB;
Almacena los archivos adjuntos que pueden complementar una pregunta.
-- Almacena documentos adjuntos a una pregunta (imágenes, PDFs, etc.)
CREATE TABLE `evaluacion_documentos` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`pregunta_id` INT NOT NULL,
`nombre_archivo` VARCHAR(255) NOT NULL,
`ruta_archivo` VARCHAR(255) NOT NULL,
`tipo_archivo` VARCHAR(50) NULL,
`fecha_subida` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`pregunta_id`) REFERENCES `evaluacion_preguntas`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB;
Esta tabla es crucial para registrar las respuestas de cada alumno a cada pregunta, permitiendo la posterior calificación.
-- Almacena las respuestas específicas de cada alumno por pregunta
CREATE TABLE `evaluacion_respuestas_alumno` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`inscripcion_id` INT NOT NULL COMMENT 'Identifica al alumno en el curso',
`pregunta_id` INT NOT NULL,
`opcion_seleccionada_id` INT NULL COMMENT 'ID de la opción elegida (para selección múltiple)',
`respuesta_texto` TEXT NULL COMMENT 'Texto de la respuesta (para respuesta escrita)',
`fecha_respuesta` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
`es_correcta` TINYINT(1) NULL COMMENT 'Se puede autocalcular para selección múltiple',
`calificacion_obtenida` DECIMAL(5,2) NULL COMMENT 'Nota asignada por el profesor (para respuesta escrita)',
`feedback_profesor` TEXT NULL,
FOREIGN KEY (`inscripcion_id`) REFERENCES `inscripciones_curso`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`pregunta_id`) REFERENCES `evaluacion_preguntas`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB;
Esta interfaz permitirá a los profesores administrar el banco de preguntas de un examen asociado a un subtema. Estará integrada en el panel del profesor, probablemente accesible desde la vista de "Gestión de Contenido".
Tiene 5 opciones. Respuesta correcta: "Figma".
Adjunto: caso_estudio.pdf
El botón "Crear Nueva Pregunta" o "Editar" abrirá un modal con el siguiente formulario.
Este script recibirá los datos del formulario modal y realizará las siguientes acciones:
Cuando un alumno acceda a un subtema que es una evaluación, verá una interfaz limpia y clara.
Una vez que los alumnos han completado un examen que incluye preguntas de respuesta escrita, el profesor necesitará una interfaz para calificarlas manualmente.
Alumno | Fecha de Entrega | Estado | Nota Final | Acción |
---|---|---|---|---|
Alumno Ejemplo Uno | 14/06/2025 11:20 | Calificado | 6.2 | |
Alumna Ejemplo Dos | 14/06/2025 13:15 | Pendiente de Calificación | -- |
El script que guarde la calificación manual hará lo siguiente:
Para llevar a cabo este proyecto, se propone el siguiente plan de trabajo iterativo, adhiriéndose estrictamente a las directrices acordadas.
Se solicita tu autorización para proceder con la **Fase 1**, que consiste en crear las cuatro tablas definidas (`evaluacion_preguntas`, `evaluacion_opciones`, `evaluacion_documentos`, `evaluacion_respuestas_alumno`) en la base de datos de desarrollo.