# Gestión de aulas

`/cursos/[aulaId]` permite al instructor gestionar únicamente sus aulas con modalidad `CURSO ONLINE`.

- Componentes: activar videoclases, material, tareas, evaluaciones, exámenes y foro; conservar sus ponderaciones.
- Videoclases: cargar/reproducir videos, obtener su duración, editar objetivos y recursos, ordenar sesiones con arrastre o flechas.
- Materiales: cargar, buscar, vincular a una clase, editar y quitar archivos de la biblioteca.
- Tareas: instrucciones, disponibilidad, entrega, puntaje, ponderación, formato, archivo guía y clase vinculada.
- Evaluaciones: preguntas y opciones editables, respuesta correcta, explicación, tiempo, calificación mínima y momento de aplicación.
- Foro: temas, respuestas y filtros por categoría o tarea.
- Publicación: resumen horario, borrador/publicado y validación del contenido.

El título y las horas oficiales se obtienen de `aulas`. Prisma guarda el curso en `cursos_online`, enlazado por `online_aula_id`. Las Server Actions vuelven a validar instructor y propiedad al guardar. La versión del registro evita sobrescribir cambios de otra pestaña.

## Formato del contenido

El contenido del aula se almacena en `cursos_online`: `online_sesiones` contiene las sesiones como JSON y `online_criterios_config` contiene la configuración de componentes, materiales y tareas. Las preguntas y sus respuestas correctas se validan en el servidor antes de publicar.

El editor permite corregir fechas y vínculos inválidos. Un error al interpretar contenido almacenado se muestra al usuario y no sustituye los datos por una lista vacía.

Los archivos de las aulas pertenecen al almacenamiento de esta aplicación. Los nuevos archivos privados se guardan en `.data` y se sirven por rutas autorizadas. Los recursos públicos con rutas `/uploads/...` se resuelven únicamente dentro de `public/uploads` del propio proyecto.

## Almacenamiento y recuperación

Los nuevos archivos y el foro se guardan en `.data/aulas/<id>/`, fuera de `public` y excluidos de Git. Esta carpeta necesita almacenamiento persistente y respaldo junto con la base de datos. El foro está pensado para una instancia de servidor; un despliegue con varias instancias requiere trasladarlo a una base de datos compartida.

Las rutas de archivos comprueban sesión y propiedad o inscripción, y soportan peticiones Range para reproducir videos. Límites: 512 MB por video y 30 MB por documento. El proxy del despliegue debe permitir esos tamaños.

El editor guarda automáticamente los cambios aplicados y ofrece recuperación local de cambios pendientes y formularios sin aplicar. Un error de red o conflicto se muestra sin borrar la copia local.
