Guía Técnica de Desarrollo: Módulo de Evaluaciones

Documento maestro para la creación, gestión y evaluación de exámenes en la plataforma OTEC.

1. Visión General y Objetivos

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.

Coherencia con SENCE

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.


2. Arquitectura Final de la Base de Datos

Basado en nuestras conversaciones, se ha definido una estructura de cuatro tablas para asegurar la máxima flexibilidad, eficiencia y escalabilidad del módulo.

2.1. Tabla `evaluacion_preguntas`

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;

2.2. Tabla `evaluacion_opciones`

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;

2.3. Tabla `evaluacion_documentos`

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;

2.4. Tabla `evaluacion_respuestas_alumno` (Nueva)

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;

3. Panel de Gestión de Preguntas (Profesor)

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".

3.1. Maqueta Visual del Panel

Gestor de Examen para: Subtema 2.1: Herramientas
Banco de Preguntas (3)
1. ¿Cuál de las siguientes herramientas es para diseño de interfaces?
Selección Múltiple

Tiene 5 opciones. Respuesta correcta: "Figma".

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

Adjunto: caso_estudio.pdf

3.2. Formulario de Creación/Edición de Pregunta (Contenido del Modal)

El botón "Crear Nueva Pregunta" o "Editar" abrirá un modal con el siguiente formulario.

3.3. Lógica del Backend (`gestionar_pregunta.php`)

Este script recibirá los datos del formulario modal y realizará las siguientes acciones:


4. Interfaz de Realización del Examen (Alumno)

Cuando un alumno acceda a un subtema que es una evaluación, verá una interfaz limpia y clara.


5. Dashboard de Calificación (Profesor)

Una vez que los alumnos han completado un examen que incluye preguntas de respuesta escrita, el profesor necesitará una interfaz para calificarlas manualmente.

5.1. Maqueta Visual del Dashboard de Calificación

Calificaciones Pendientes para: Examen "Herramientas de Diseño"
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 --

5.2. Lógica del Backend (`calificar_examen.php`)

El script que guarde la calificación manual hará lo siguiente:

  1. Recibirá el `id` de la respuesta, la `calificacion_obtenida` y el `feedback_profesor`.
  2. Actualizará el registro correspondiente en la tabla `evaluacion_respuestas_alumno`.
  3. Una vez calificadas todas las respuestas escritas de un alumno, podría recalcular la nota final del examen y actualizarla en la tabla `inscripciones_curso` o una similar.

6. Flujo de Trabajo y Próximos Pasos

Para llevar a cabo este proyecto, se propone el siguiente plan de trabajo iterativo, adhiriéndose estrictamente a las directrices acordadas.

  1. Fase 1: Base de Datos (Completada):
    • Acción: Aprobación final de las 4 tablas propuestas en este documento.
    • Resultado: Estructura de datos definitiva y lista para ser implementada.
  2. Fase 2: Backend - Gestión de Preguntas:
    • Acción: Desarrollar el script `gestionar_pregunta.php` que maneje la lógica de creación, edición y borrado de preguntas y sus componentes (opciones y documentos).
    • Resultado: La API interna para administrar el banco de preguntas estará funcional.
  3. Fase 3: Frontend - Panel del Profesor:
    • Acción: Desarrollar la interfaz visual (panel y modal) descrita en la Sección 3, que consumirá el backend de la Fase 2.
    • Resultado: Los profesores podrán crear y gestionar exámenes.
  4. Fase 4: Desarrollo de la Interfaz del Alumno:
    • Acción: Crear la vista para que los alumnos puedan rendir los exámenes.
    • Resultado: Los alumnos podrán completar las evaluaciones.
  5. Fase 5: Desarrollo del Dashboard de Calificación:
    • Acción: Crear el backend y frontend para la calificación manual de respuestas escritas.
    • Resultado: Los profesores podrán calificar los exámenes y finalizar el proceso de evaluación.
Siguiente Paso Inmediato

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.