Manual de Usuario
Guía completa para gestionar horarios, ausencias y guardias en institutos de ESO, Bachillerato y FP.
Orden recomendado — primera vez
Índice de contenidos
Sección 01
Primeros pasos
Acceso a la aplicación
Abre el navegador y ve a la URL de tu centro. Puedes iniciar sesión con email y contraseña o mediante SSO (Microsoft 365 / Google Workspace). En el primer acceso por SSO, el sistema vincula automáticamente tu cuenta con tu ficha de profesor.
Roles y permisos
| Rol | Capacidades |
|---|---|
| Administrador | Acceso total: configurar centro, gestionar usuarios, importar datos, ver datos de alumnos (RGPD). |
| Directivo | Crear y editar horarios, gestionar ausencias, asignar guardias, exportar PDF. |
| Profesor | Solo lectura: ver horario activo y su horario personal en Mi Horario. |
Navegación principal
El menú lateral izquierdo agrupa todas las secciones: Dashboard, Profesores, Asignaturas, Grupos, Aulas, Horarios, Guardias, Supervisiones, Bloques optativas, Departamentos, Franjas horarias, Mi Horario y Admin.
Dashboard
Al entrar verás tarjetas de resumen (total profesores, asignaturas, grupos, aulas), un panel de alertas con problemas detectados, una gráfica de carga docente y acceso directo a los últimos horarios. Haz clic en cualquier alerta para ir al recurso que necesita atención.
La primera vez que entras en cada pantalla aparece un tour interactivo de 5–8 pasos. Si lo cierras, puedes repetirlo con el botón flotante ? (esquina inferior derecha).
Checklist de configuración inicial
- Crear franjas horarias (estructura del día lectivo)
- Dar de alta las aulas del centro
- Crear fichas de profesor (manual o importando desde Excel)
- Crear el catálogo de asignaturas
- Dar de alta los grupos de clase
- Vincular asignaturas a grupos y profesores
- Crear y generar el primer horario
- Publicar (activar) el horario
Sección 02
Profesores
Crear un profesor
Ve a Profesores → + Nuevo profesor y rellena el formulario:
| Campo | Descripción | Ejemplo |
|---|---|---|
| Nombre | Nombre completo | Ana García López |
| Correo (para invitación al sistema) | ana@ies.es | |
| Máx. horas/semana | Tope de horas lectivas semanales | 18 |
| Máx. horas/día | Máximo de clases en un día | 5 |
| Mín. días activos | Mínimo de días con clase a la semana | 3 |
| Máx. días activos | Máximo de días con clase a la semana | 5 |
Disponibilidad semanal
Cada profesor tiene una matriz de disponibilidad (días × periodos). Haz clic en cada celda para marcarla como disponible (verde) o no disponible (gris). La disponibilidad actúa como restricción blanda: el optimizador la respeta en la medida de lo posible.
Para editar la disponibilidad de todos los profesores a la vez, ve a Profesores → Disponibilidad.
Si un profesor tiene reducción horaria reconocida, reduce su máximo de horas/semana Y marca esas horas como no disponibles para asegurarte de que el algoritmo las respeta estrictamente.
Eliminar un profesor no borra los slots ya asignados en horarios existentes. Si el profesor sigue en plantilla pero no puede acceder al sistema, usa Desactivar en lugar de Eliminar.
Sección 03
Asignaturas
Crear una asignatura
| Campo | Descripción |
|---|---|
| Nombre | Nombre de la asignatura (ej. Matemáticas) |
| Color | Color en el horario para identificación visual |
| Horas/semana | Periodos lectivos semanales |
| Profesor predeterminado | Profesor que la imparte (puede variar por grupo) |
| Tipo de aula | Ordinaria / Laboratorio / Gimnasio / Biblioteca / Otro |
| Periodo doble permitido | ¿Puede impartirse en bloque de 2h seguidas? |
| Requiere periodo doble | ¿Debe impartirse en bloque de 2h? (ej. laboratorio) |
Tipos de aula
El tipo de aula indica qué espacio necesita la asignatura. El algoritmo intentará colocar la clase en un aula del tipo correcto. Si no hay disponible, usará la más adecuada.
Periodos dobles
allowDoublePeriod: el optimizador puede crear bloques de 2h si conviene. needsDoublePeriod: el optimizador debe crear al menos un bloque de 2h (para laboratorios o materias que necesitan tiempo continuo).
Para auditar y corregir estos flags en todas las asignaturas a la vez, ve a Admin → Ajuste de asignaturas.
Asignar grupos a una asignatura
En la ficha de la asignatura, sección Grupos, añade los grupos que reciben esta asignatura. Puedes sobrescribir el profesor para un grupo concreto (si ese grupo tiene un profesor diferente al predeterminado).
Sección 04
Grupos, Aulas y Franjas horarias
Franjas horarias
Una franja horaria define la estructura del día lectivo: número de periodos, hora de inicio, duración de cada periodo y recreos. Puedes tener varias franjas (ESO con 6 periodos, Bachillerato con 7, FP tarde, etc.).
| Campo | Ejemplo |
|---|---|
| Nombre | ESO Mañana |
| Periodos por día | 6 |
| Hora de inicio | 08:00 |
| Duración del periodo (min) | 55 |
| Recreos | Después del 3º periodo, 25 minutos |
Si un día concreto tiene un horario diferente (ej. el miércoles solo hay 5 periodos), usa Excepciones por día dentro de la franja.
Aulas
Da de alta cada espacio del centro con nombre, capacidad y tipo. El aula base de un grupo es el espacio donde recibe la mayoría de sus clases; el algoritmo la usa como punto de referencia para minimizar desplazamientos.
Grupos de clase
| Campo | Descripción |
|---|---|
| Nombre | Código del grupo (ej. 1ºA ESO) |
| Curso / etapa | Nivel educativo |
| Número de alumnos | Para asignación de aula por capacidad |
| Tutor | Profesor tutor del grupo |
| Aula base | Aula habitual del grupo |
| Franja horaria | Estructura del día que aplica a este grupo |
Un grupo solo puede pertenecer a una franja horaria. Si tienes grupos de mañana y tarde, crea dos franjas distintas.
Sección 05
Crear y Generar Horarios
Estados de un horario
| Estado | Significado |
|---|---|
| Borrador | En construcción, no visible para profesores |
| Activo | El horario oficial. Los profesores lo ven en Mi Horario |
| Archivado | Horario anterior conservado como histórico |
Solo puede haber un horario activo a la vez. Al activar uno nuevo, el anterior pasa automáticamente a Archivado.
Generación automática
El sistema usa el algoritmo Greedy MRV (Valores Mínimos Restantes): ordena todas las clases de mayor a menor dificultad y las va colocando verificando que el profesor, el grupo y el aula no tengan conflicto en ese slot.
- 1Crea el horario
Horarios → + Nuevo horario. Indica nombre y año académico.
- 2Pulsa Generar horario
El algoritmo colocará todas las clases en menos de 2 minutos.
- 3Revisa el resultado
Verifica slots generados, clases sin resolver y puntuación inicial.
- 4Optimiza
Lanza el Simulated Annealing para mejorar la calidad.
- 5Publica
Cambia el estado a Activo cuando el horario esté listo.
Regenerar el horario borra todos los slots no bloqueados. Los slots con candado 🔒 se conservan siempre.
Ciclos de semana A/B
Si tu centro usa semanas alternas, cada slot puede configurarse como "Todas las semanas", "Solo semana A" o "Solo semana B" desde el editor de slots.
Sección 06
Editor de Horarios
Vistas del editor
| Vista | Organización | Útil para |
|---|---|---|
| Por grupo | Columna por grupo, filas = horas | Verificar que cada grupo tiene sus clases completas |
| Por profesor | Columna por profesor, filas = horas | Detectar huecos y sobrecarga docente |
| Por aula | Columna por aula, filas = horas | Verificar conflictos de espacio |
Mover un slot (arrastrar y soltar)
Haz clic y arrastra una celda a la nueva posición. Si hay conflicto (colisión de profesor, grupo o aula), aparece un aviso en rojo con el motivo específico.
Editar un slot manualmente
Haz doble clic sobre un slot para abrir su panel de edición: cambiar día, periodo, aula, ciclo de semana, notas o activar el bloqueo.
Bloquear un slot (🔒)
Un slot bloqueado no se borra al regenerar, no se mueve accidentalmente y el optimizador SA no lo toca. Ideal para clases con restricciones absolutas (ej. el laboratorio de Física solo disponible los martes a 3ª hora).
Panel de alertas
- Colisiones activas: dos clases solapadas en profesor, grupo o aula
- Huecos de profesor: periodos libres en medio de la jornada
- Días con sobrecarga: profesores o grupos con más horas de lo recomendado
- Asignaturas sin colocar: clases que no tienen slot asignado
Sección 07
Optimización con IA
Simulated Annealing (SA)
El algoritmo de optimización propone miles de intercambios aleatorios de slots, acepta los que mejoran la puntuación y, ocasionalmente, acepta intercambios peores para escapar de mínimos locales. Resultado: el mejor horario encontrado tras todas las iteraciones.
| Iteraciones | Tiempo aprox. | Recomendado para |
|---|---|---|
| 1.000 | < 5 seg | Prueba rápida |
| 12.000 (defecto) | ~30 seg | Uso habitual |
| 100.000 | ~5 min | Optimización profunda |
| 500.000 | ~25 min | Máxima calidad |
Los 11 criterios de calidad
Ve a Configuración del horario para ajustar los pesos (0 = ignorar, 5 = máxima importancia):
| Criterio | Qué mide | Peso defecto |
|---|---|---|
| Horas consecutivas | Fatiga docente por clases seguidas sin descanso | 2 |
| Huecos del profesor | Periodos libres en medio de la jornada del profesor | 3 |
| Preferencias horarias | Respetar la franja preferida de cada profesor | 2 |
| Huecos del alumno | Periodos libres en medio del día del alumno (obligación legal) | 5 |
| Periodos dobles | Crear bloques de 2h cuando la asignatura lo permite/requiere | 2 |
| Máx. horas diarias por grupo | No exceder el límite de horas de una asignatura por día | 3 |
| Aula habitual | Minimizar desplazamientos del grupo a aulas distintas | 1 |
| Días activos | Respetar el rango de días trabajados por semana | 2 |
| Espaciado de asignaturas | No concentrar la misma materia en días consecutivos | 3 |
| Estabilidad del aula | Usar la misma aula para la misma asignatura siempre que sea posible | 1 |
| Descanso mínimo entre días | Cumplir las 11h de descanso entre última y primera clase (normativa) | 4 |
Análisis de calidad con IA
Pulsa Análisis IA en el editor del horario. Timy, el asistente de IA, evalúa el horario y devuelve 3–5 sugerencias concretas explicando qué restricción se viola y cómo mejorarla.
El análisis IA tiene un límite de 30 segundos entre consultas para el mismo horario, evitando llamadas accidentales repetidas.
Sección 08
Ausencias y Guardias
Registrar una ausencia
Ve a Guardias → + Registrar ausencia y selecciona el profesor, la fecha, las horas afectadas y el motivo.
Para bajas largas o ausencias planificadas, activa Rango de fechas e indica fecha de inicio y fin. El sistema creará automáticamente una ausencia por cada día laborable del rango, excluyendo festivos configurados.
Asignar un sustituto
Pulsa Buscar sustituto en cualquier hora de ausencia. El sistema clasifica candidatos por:
- Pertenencia al mismo departamento que la asignatura a cubrir (prioridad alta)
- Disponibilidad real en esa hora (sin otra clase en el horario activo)
- Menor carga docente ese día (para equilibrar)
- Especialización en la materia
Al asignar, el sistema envía automáticamente un correo de notificación al sustituto con grupo, hora, aula y motivo.
Eliminar ausencias en grupo
Las ausencias creadas con rango de fechas se agrupan bajo un mismo ID. Desde la ausencia puedes eliminar todas las del grupo de una vez, sin borrarlas una a una.
Para que las notificaciones por email funcionen, el administrador debe haber configurado el proveedor de email (Resend, Gmail SMTP o SMTP genérico). Verifica en Admin → Email.
Sección 09
Supervisiones de Recreo
Configurar zonas
Ve a Supervisiones → Zonas → + Nueva zona y crea todos los espacios a vigilar del centro (patio exterior, entrada, pasillos, etc.).
Asignar supervisiones
- 1Abre el horario
- 2Pulsa "Asignar supervisiones de recreo"
El sistema genera automáticamente una asignación usando un algoritmo greedy por proximidad: prioriza profesores cuya última clase fue en un aula cercana a la zona a vigilar.
- 3Revisa y ajusta manualmente
Haz clic en el nombre de cualquier profesor para cambiarlo.
Define las zonas antes de generar el horario principal para que el algoritmo greedy pueda calcular proximidades correctamente.
Sección 10
Departamentos
Los departamentos tienen dos utilidades: organización académica (agrupa asignaturas y profesores por área) y guardias inteligentes (el algoritmo prioriza sustitutos del mismo departamento).
Roles en el departamento
| Rol | Descripción |
|---|---|
| Jefe de departamento | Responsable del departamento. Solo puede haber uno activo a la vez. |
| Miembro | Profesor ordinario del departamento. |
Asigna asignaturas al departamento desde la ficha de cada asignatura (campo Departamento), no desde aquí.
Impacto en el algoritmo de guardias
- Prioridad ALTA: profesores del mismo departamento + disponibles en esa hora
- Prioridad MEDIA: profesores disponibles de cualquier departamento
- Prioridad BAJA: profesores con disponibilidad baja (muchas horas ese día)
Sección 11
Bloques de Optativas
¿Qué es un bloque de optativas?
Agrupa asignaturas optativas que deben impartirse en paralelo (mismo tramo horario) para diferentes grupos del mismo curso. El algoritmo las coloca simultáneamente usando backtracking automático.
Crear un bloque
- 1Bloques optativas → + Nuevo bloque
Indica nombre, curso y horas/semana del bloque.
- 2Añadir asignaturas
Selecciona todas las optativas que componen el bloque (ej. Música, Plástica, TIC).
- 3Añadir grupos
Selecciona los grupos que participan en el bloque.
Verifica que ninguna de las optativas del bloque la imparte el mismo profesor, ya que sería imposible colocarlas simultáneamente.
Si el bloque tiene muchas asignaturas y el algoritmo no encuentra slot, divide el bloque en dos franjas horarias distintas con menos asignaturas cada una.
Sección 12
Exportar a PDF
Modos de exportación
| Modo | Organización | Para quién |
|---|---|---|
| Por grupo | Una tabla por grupo con horario semanal completo | Alumnos, tutores, tablón de clase |
| Por profesor | Una tabla por profesor con horario semanal completo | Cada profesor, jefatura |
| Por aula | Una tabla por aula con ocupación semanal | Conserjes, gestión de espacios |
Cómo exportar
- 1Abre el horario
- 2Pulsa Imprimir / PDF
Icono de impresora en la barra superior del editor.
- 3Selecciona el modo
Por grupo, por profesor o por aula.
- 4Pulsa Exportar PDF
El PDF se genera y descarga automáticamente.
Para una mejor impresión en papel, usa orientación horizontal (apaisado) y márgenes mínimos en el diálogo del navegador. Activa "Gráficos de fondo" para que los colores de las asignaturas aparezcan en el PDF.
Sección 13
Administración del Sistema
Esta sección es exclusiva para usuarios con rol Administrador.
Gestión de usuarios
En Admin → Usuarios puedes cambiar el rol de cualquier persona, invitarla a crear su cuenta (enlace de invitación válido 24 horas) y activar/desactivar el acceso sin borrar datos históricos.
Para invitar a varios profesores a la vez, usa Invitación masiva (pega los emails, uno por línea).
Importación masiva desde Excel
En Admin → Importación puedes subir un archivo .xlsx o .csv con datos de profesores, asignaturas, grupos o alumnos. Descarga la plantilla, rellénala y sube el archivo. El sistema mostrará una vista previa con registros válidos, errores y duplicados antes de aplicar.
| Tipo | Columnas obligatorias |
|---|---|
| Profesores | nombre, email |
| Asignaturas | nombre, horasSemana |
| Grupos | nombre |
| Alumnos | nombre, email, grupoNombre |
Proveedores de email
| Proveedor | Variable de entorno | Recomendado para |
|---|---|---|
| Resend | RESEND_API_KEY | Producción (más fiable) |
| Gmail SMTP | GMAIL_USER + GMAIL_APP_PASSWORD | Centros con Google Workspace |
| SMTP genérico | SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS | Servidor de correo propio del centro |
Verifica la configuración en Admin → Email → Enviar email de prueba.
Festivos
En Admin → Festivos da de alta los días no lectivos del curso. El módulo de guardias los excluirá automáticamente al registrar ausencias con rango de fechas.
Seguridad y protección de datos
- Datos de alumnos (nombre, email) solo visibles para Administrador (RGPD)
- Autenticación segura con JWT en cookies httpOnly (Supabase Auth)
- Contraseñas nunca almacenadas en texto plano
- Claves de API solo en variables de entorno del servidor, nunca expuestas al navegador
- Control de acceso por roles a nivel de base de datos (Row Level Security)