📚 Documentación oficial

AOS Program
Manual de Usuario

Gestor completo del programa y agenda de congresos. Programación automática, control de conflictos, peticiones de ponentes y publicación de la parrilla en tiempo real.

v1.13.0 AOS Palace Core requerido WordPress 6.0+ PHP 7.4+
🗺
Visión General
Qué hace AOS Program y cómo encaja en el ecosistema

AOS Program es el módulo de gestión de programa y agenda del ecosistema AOS Palace. Permite al equipo organizador construir la parrilla de ponencias de un congreso de forma automática o manual, publicarla en el sitio web y gestionar todas las interacciones con los ponentes: confirmación de horario, declaración de indisponibilidades y valoración de sesiones.

🤖
Programación automática
El motor asigna artículos aprobados a slots respetando salas, horarios y disponibilidad de autores.
Drag & Drop manual
Mueve y reordena ponencias en la parrilla visual con validación de conflictos en tiempo real.
🙋
Peticiones de ponentes
Los autores informan sus franjas de indisponibilidad; el sistema las respeta y alerta en caso de conflicto.
❤️
Favoritos y Mi Agenda
Los asistentes guardan sesiones de interés y ven su agenda personalizada en el perfil.
Valoraciones
Sistema de 5 estrellas con comentario para cada actividad, accesible mediante shortcode.
📧
Emails automáticos
5 plantillas editables que notifican a autores y secretaría en cada evento relevante.

Roles del sistema

RolAcciones disponibles
Administrador / SecretaríaConfigurar jornada, ejecutar auto-programación, gestionar parrilla, resolver peticiones, ver auditoría, editar plantillas de correo.
Ponente / AutorVer su horario en "Mi Programación", declarar indisponibilidades, ver estado de sus peticiones.
Asistente registradoVer el programa público, guardar favoritos, valorar sesiones.
📋
Requisitos
Dependencias necesarias antes de instalar
ComponenteVersión mínimaNotas
WordPress6.0
PHP7.4Se recomienda 8.1+
AOS Palace CoreCualquiera activaObligatorio. Sin él el plugin se desactiva automáticamente.
AOS PaperOpcionalNecesario para programar artículos científicos. Sin él, solo se pueden programar Actividades manuales.
Edición activaDebe existir una edición activa en AOS Palace con fechas de inicio y fin definidas.
ℹ️

AOS Program verifica la presencia de AOS Palace Core al cargar. Si no lo detecta, muestra un aviso en el panel de WordPress y no inicializa sus módulos.

Instalación y Activación
Pasos iniciales para poner en marcha el plugin
  1. Verifica que AOS Palace Core está activo

    Ve a Plugins → Plugins instalados y comprueba que AOS Palace Core aparece activo. Sin él, AOS Program no puede funcionar.

  2. Sube e instala AOS Program

    Ve a Plugins → Añadir nuevo → Subir plugin, selecciona el archivo .zip de AOS Program y haz clic en Instalar ahora.

  3. Actívalo e introduce la licencia

    Activa el plugin. Aparecerá AOS Program en el menú lateral del admin. Ve a AOS Program → Ajustes → Licencia e introduce tu clave de licencia.

  4. Crea una edición activa en AOS Palace

    En AOS Palace → Ediciones, asegúrate de tener una edición publicada y activa con las fechas del congreso correctamente definidas.

  5. Configura la jornada

    Ve a AOS Program → Ajustes → Jornada y define la duración de los slots, el número de salas y los bloques horarios del día.

  6. Verifica el email de secretaría

    En AOS Program → Ajustes → Correos, introduce el email que recibirá las notificaciones de peticiones de ponentes.

Una vez completados estos pasos, ya puedes ejecutar la Programación Automática o empezar a asignar ponencias manualmente desde la Parrilla.

⚙️
Configuración de Jornada y Salas
AOS Program → Ajustes → Jornada

Esta pestaña es el núcleo de la configuración. Aquí defines cómo está organizado cada día del congreso: cuántas ponencias caben en paralelo, cuánto duran y en qué franjas horarias tienen lugar.

OpciónDescripciónPor defecto
Duración estándar de ponenciaMinutos asignados a cada paper sin duración específica.20 min
Número de Salas en ParaleloCuántas salas simultáneas hay en el congreso. Mínimo 1.1
Nombre de cada salaSi se dejan en blanco se muestran como "Sala 1", "Sala 2"…
Estado del ProgramaBorrador o Definitivo. Ver sección Estado del Programa.Borrador
Peticiones de IndisponibilidadCheckbox global para habilitar o deshabilitar el formulario de peticiones.Desactivado
Mostrar ResúmenesSi está activo, el resumen del artículo se muestra en las tarjetas de la parrilla pública.Desactivado
⚠️

Si configuras 0 salas, tanto la programación automática como la asignación manual devolverán un error. Asegúrate de tener al menos 1 sala.

🕐
Estructura de Jornada (Bloques Horarios)
Definir los tramos programables y las pausas del día

La estructura de jornada define cómo se divide cada día del congreso en franjas horarias. Se compone de bloques ordenados que el sistema lee de arriba a abajo.

🟢
Bloque Activo
Franja programable. El motor auto-programación asigna ponencias dentro de este rango.
🔴
Bloque de Exclusión
Franja no programable (comidas, inauguración, café…). No se asignan ponencias aquí.

Gestión de bloques

  • Añadir bloque: Botón "+ Añadir al final" en la cabecera de la sección.
  • Insertar entre bloques: Botón + en cada bloque para insertar uno inmediatamente después.
  • Reordenar: Arrastra el icono ☰ de cada bloque para cambiar el orden.
  • Eliminar: Botón × en cada bloque. Debe quedar al menos un bloque.
💡

La parrilla pública solo muestra las horas entre el inicio del primer bloque activo y el fin del último, ocultando horas muertas.

📌
Estado del Programa
Borrador vs. Definitivo — control de publicación
📋 Borrador
Los ponentes pueden enviar peticiones de indisponibilidad. La parrilla puede estar en proceso de ajuste. Se muestra "Programa Provisional".
✅ Definitivo
Las peticiones quedan bloqueadas. El programa es público y estable. Se muestra "Programa Definitivo".
⚠️

Al pasar a estado Definitivo, los autores ya no podrán enviar nuevas peticiones. Puedes volver a Borrador en cualquier momento si necesitas reabrirlas.

🤖
Programación Automática
El motor asigna todos los artículos aprobados con un clic

Con un solo clic, el sistema toma todos los artículos aprobados (de AOS Paper) no programados aún y los distribuye en los slots disponibles, respetando salas, horarios, disponibilidad de autores e indisponibilidades declaradas.

Cómo ejecutarla

  1. Ve a AOS Program → Parrilla

    La columna "Sin asignar" muestra todos los papers pendientes a la izquierda.

  2. Haz clic en "Programar Automáticamente"

    Puedes elegir si limpiar la parrilla existente o solo completar los huecos libres.

  3. Revisa el resultado

    El sistema muestra cuántos artículos se programaron, cuántos se saltaron y si hubo errores.

  4. Ajusta manualmente si es necesario

    Usa el drag & drop para mover ponencias que no quedaron en el lugar óptimo.

1
Carga artículos aprobados no programados
Lee de AOS Paper todos los posts con estado approved y fase final que no tienen slot asignado en la edición activa.
2
Genera la secuencia de slots disponibles
Para cada día recorre los bloques activos generando slots de duración estándar × número de salas. Los bloques de exclusión se saltan automáticamente.
3
Bloquea los rangos de los slots fijados
Cualquier slot con chincheta (📌) reserva su sala y horario: el motor no programará nada encima.
4
Ordena los candidatos por 4 dimensiones
Para cada paper: (1) días con moderaciones del autor primero, (2) contigüidad a su moderación, (3) días menos llenos primero (distribución multi-día), (4) hora más temprana.
5
Verifica conflictos de participación
Ningún autor del paper puede estar en otro slot solapado como ponente o moderador (de item o de sala).
6
Verifica indisponibilidades declaradas
Consulta las peticiones en estado pending y conflict_placed. Si el slot cae en una franja declarada como no disponible, lo descarta (pasada 1).
7
Asigna y notifica
Guarda el slot en BD, marca el paper como programado, registra en el log de auditoría y envía email de confirmación al autor principal.
📅

Distribución multi-día (v1.12.0+): el motor reparte la carga entre todos los días disponibles cuando no hay restricciones. Si tu congreso dura 3 días y tienes 30 papers, el motor pondrá ~10 por día en lugar de amontonar todos en el día 1. Cuando un autor también es moderador, sus participaciones se agrupan en el mismo día para no obligarle a viajar.

🚫

Requisito previo: Debes tener al menos 1 sala configurada y bloques horarios activos definidos. Si falta alguno de estos elementos, la programación automática devuelve un error sin programar nada.

📖

¿Quieres entender el motor en detalle? En la raíz del plugin hay un documento técnico SCHEDULER-LOGIC.md que explica las 4 dimensiones del score, las dos pasadas (limpia y fallback), los casos edge y las limitaciones conocidas. Útil si quieres proponer mejoras o entender por qué un caso concreto se programa de cierta manera.

📌
Fijar Slots (Sistema PIN)
Bloquea ponencias o actividades para que sobrevivan a re-programaciones

El sistema PIN permite fijar manualmente un slot de la parrilla para que la programación automática lo respete. Útil cuando un ponente solo puede asistir en una hora concreta, o cuando se ha negociado una actividad con horario inamovible.

Cómo fijar un slot

  1. Coloca el cursor sobre el slot en la parrilla

    Aparecen los botones de acción en la esquina (chincheta y "×").

  2. Pulsa el botón de chincheta

    El slot pasa a fondo amarillo claro con el icono 📌 visible permanentemente. El botón "×" (eliminar) queda deshabilitado.

  3. Para desfijar

    Vuelve a pulsar la chincheta. El fondo amarillo desaparece y el botón eliminar se reactiva.

Qué garantiza un slot fijado

Acción del adminComportamiento sobre el slot fijado
Programación Automática (con o sin "Limpiar parrilla antes")El slot se conserva en su sitio. El motor reserva su rango horario y no programa nada encima.
Vaciar parrilla (por defecto)El slot se conserva. Solo se borra si el admin marca explícitamente "Incluir slots fijados".
Botón "×" (eliminar)Está deshabilitado mientras está fijado. Hay que desfijar primero — evita borrados accidentales.
Drag & dropSe puede mover. El estado pinned se preserva en la nueva celda.
💡

Caso de uso típico: tienes una conferencia inaugural el primer día a las 9:00 que es inamovible. Asígnala manualmente, fíjala con la chincheta y luego ejecuta la programación automática. El motor distribuirá el resto de papers respetando ese slot.

🧹
Vaciar Parrilla
Limpieza selectiva con opciones independientes del motor automático

El botón "Vaciar parrilla" (en la toolbar superior, junto a "Programar Automáticamente") abre un modal con tres opciones independientes para controlar qué quieres borrar.

Opciones del modal

OpciónPor defectoQué hace
Artículos✅ MarcadoBorra todos los slots de tipo paper.
Actividades✅ MarcadoBorra todos los slots de tipo activity.
Incluir slots fijados❌ DesmarcadoSi está desmarcado, los slots con chincheta (📌) se conservan. Si está marcado, también se borran.

Casos de uso típicos

  • Empezar de cero (excepto fijados): deja las 3 opciones por defecto (Artículos ✅ Actividades ✅ Pinned ❌). El admin conserva las decisiones manuales irrevocables.
  • Limpiar solo papers, dejar actividades: útil cuando el cronograma de actividades está cerrado pero quieres re-organizar las ponencias. Desmarca "Actividades".
  • Limpiar solo actividades: a la inversa, si quieres reorganizar los descansos, comidas o eventos sociales sin tocar las ponencias.
  • Borrado total (incluyendo fijados): marca las 3 opciones. La acción pide doble confirmación porque destruye el trabajo manual.

Antes de confirmar, el modal muestra los conteos en vivo (cargados via AJAX) para que sepas exactamente cuántos slots vas a eliminar.

⚠️

La acción no se puede deshacer. Cada vaciado deja registro en Ajustes → Auditoría con los flags usados y el conteo de filas borradas — útil para forensics si algo sale mal.

🔗

Diferencia con "Programar Automáticamente → Limpiar parrilla antes": esa checkbox limpia la parrilla justo antes de ejecutar el motor, en una sola acción. "Vaciar parrilla" es independiente — limpias ahora y decides después si ejecutar el motor o asignar manualmente.

Programación Manual (Drag & Drop)
Control total sobre cada ponencia con validación en tiempo real

La parrilla visual permite mover cualquier elemento de forma manual. Cada movimiento valida automáticamente conflictos de autor e indisponibilidades antes de confirmar el cambio.

AcciónCómo hacerloValidación
Asignar desde "Sin asignar"Arrastra una tarjeta de la columna izquierda a cualquier celda de la parrilla.Conflicto de autor + indisponibilidad. Si hay colisión, la celda se muestra en rojo y no se confirma el movimiento.
Mover entre slotsArrastra una tarjeta ya asignada a otra celda.Si hay conflicto de indisponibilidad, el movimiento se permite pero devuelve warning: true con aviso visible.
Eliminar de la parrillaBotón "×" en la tarjeta, o arrastrarla de vuelta a "Sin asignar".
⚠️
Gestión de Conflictos
Superposiciones de autores e indisponibilidades
TipoDescripciónComportamiento
Conflicto de autorEl mismo autor está programado en dos ponencias simultáneas o solapadas.Celda en rojo. El movimiento se bloquea.
Conflicto autor–moderador (v1.12.0+)Un usuario aparece como ponente en una sala y como moderador en otra (de sala completa o de item) en horarios solapados.Bloquea con mensaje claro indicando el nombre, el rol y el horario en conflicto. Aplica en TODAS las rutas: drag&drop manual, asignar moderador de sala, asignar moderador de item.
Conflicto de indisponibilidadSe programa una ponencia en una franja declarada como no disponible por el autor.Se permite pero devuelve warning: true. Petición pasa a conflict_placed y se notifica al autor.
🛡️

Defensa en profundidad (v1.12.0+): el conflicto autor–moderador se valida tanto al programar el paper como al asignar la moderación. Si Alberto está como ponente de un paper en sala 2 a las 10:00 y luego intentas asignarlo como moderador de sala 1 (que tiene un slot a las 10:00), el sistema bloquea con: "Alberto Sanchez ya está programado como ponente en otra sala a las Vie 13/06 10:00."

💡

Para ver un resumen de todos los conflictos actuales, consulta AOS Program → Ajustes → Auditoría, donde se registran todos los eventos tipo request_conflict.

🔄
Intercambios Inteligentes (Swap)
Resolución de conflictos en parrillas llenas

Cuando la parrilla está llena y hay un conflicto que no se puede resolver moviendo a un espacio libre, el sistema puede sugerir intercambios: dos ponencias que pueden intercambiar sus slots sin generar nuevos conflictos.

Condiciones para un swap válido

  • Misma duración: Las dos ponencias deben ocupar el mismo número de minutos.
  • Autor A libre en slot B y autor B libre en slot A.
  • Sin indisponibilidades cruzadas al hacer el intercambio.
📄
Artículos Científicos (Papers)
Integración con AOS Paper

AOS Program lee automáticamente los artículos aprobados desde AOS Paper. No es necesario importar ni duplicar datos: el módulo de integración consulta directamente el CPT aos_paper.

DatoOrigen
Títulopost_title
Resumen / Abstractpost_content
Área temáticaTaxonomía aos_paper_thematic
Autores y coautoresTabla aos_paper_authors
Duración específicaMeta _duration (si no existe, se usa la duración estándar configurada)
⚠️

Solo los papers con estado aprobado (aos_paper_status = approved) aparecen en la parrilla de AOS Program.

🎯
Actividades Manuales
Keynotes, talleres, coffee breaks y otros eventos del programa

Puedes añadir al programa cualquier tipo de actividad no-paper: inauguraciones, conferencias plenarias, talleres, coffee breaks, actos de clausura, etc. Se crean como entradas del CPT aos_activity.

  1. Ve a AOS Program → Actividades → Añadir nueva

    O usa el menú de WordPress si tienes acceso directo al CPT.

  2. Rellena los metadatos

    Campos clave: _duration (minutos), _activity_type (keynote, taller, pausa…), _location_id (sala) y _speakers (IDs de usuarios ponentes).

  3. Publica la actividad

    Aparecerá en la columna "Sin asignar" de la parrilla junto con los papers.

Las actividades con is_global = true ocupan visualmente todas las salas a la vez (ej. un coffee break común a todo el congreso).

🙋
Peticiones de Indisponibilidad
Los ponentes informan cuándo no pueden presentar
📝
El ponente envía su petición
Desde "Mi Programación", selecciona las franjas problemáticas y añade un mensaje opcional. Solo disponible en estado Borrador con la opción habilitada.
📧
Notificaciones automáticas
El autor recibe confirmación por email. La secretaría recibe aviso de nueva petición.
👀
La secretaría revisa en AOS Program → Peticiones
Ve todas las peticiones de la edición activa con estado, mensaje del autor y franjas declaradas.
⚖️
La secretaría actúa
Puede cambiar el estado a cualquiera de los cuatro disponibles. Puede añadir un mensaje de respuesta.
📬
El autor recibe la respuesta
Email automático con el nuevo estado y el mensaje del organizador.

Estados de una petición

⏳ pending
Recibida, pendiente de revisión. El sistema tiene en cuenta esta franja en la programación.
✅ resolved
La secretaría ha confirmado que el horario es compatible.
⚠️ conflict
La ponencia ha sido asignada en una franja declarada no disponible. El autor ha sido notificado.
🔵 conflict_placed
Ponencia en horario no disponible, pendiente de resolución definitiva.
ℹ️

Desde v1.5.0 el admin puede cambiar libremente entre cualquier estado desde la tabla de peticiones, sin restricciones de transición.

👤
Mi Programación
Vista personal del ponente / asistente en su perfil

La pestaña "Mi Programación" se inyecta automáticamente en el perfil de usuario del shortcode [aos_user_profile] de AOS Palace. No requiere configuración adicional.

📄
Mis ponencias
Papers donde el usuario es autor o coautor, con fecha, hora y sala asignadas.
❤️
Mis favoritos
Sesiones marcadas como favoritas. Muestran su slot cuando son programadas.
🙋
Mis peticiones
Historial de peticiones de indisponibilidad con estado actualizado y mensaje de la secretaría.
💡

También puedes mostrar "Mi Programación" de forma aislada con el shortcode [aos_my_schedule] en cualquier página.

❤️
Sistema de Favoritos
Los asistentes construyen su agenda personalizada

Cualquier usuario registrado puede marcar sesiones como favoritas desde el programa público. Los favoritos se guardan en el meta _aos_fav del usuario y están disponibles en "Mi Programación".

  • Pulsar ♡ en el programa añade la sesión a favoritos y el icono pasa a ♥.
  • Pulsar ♥ elimina el favorito. El cambio se guarda vía AJAX sin recargar la página.
  • Los favoritos cuya sesión aún no está programada aparecen con la etiqueta "Sin programar". Cuando se les asigne un slot, la tarjeta mostrará automáticamente la fecha y hora.
Valoraciones de Actividades
Feedback de los asistentes con 1–5 estrellas y comentario
[aos_activity_rating activity_id="123"]

Sustituye 123 por el ID del post de la actividad o paper que quieres valorar.

  • Solo usuarios registrados pueden valorar.
  • Cada usuario puede modificar su valoración cuantas veces quiera (sistema de upsert).
  • El widget muestra la media de valoraciones y el número total de participantes.
  • Las valoraciones se guardan en la tabla aos_prog_ratings.
📧
Plantillas de Correo Electrónico
AOS Program → Ajustes → Correos

AOS Program envía emails automáticos en cinco situaciones. El asunto y el cuerpo de cada email son completamente editables desde el panel de administración.

Todos los emails enviados quedan registrados en el meta _aos_email_logs del usuario, visible en la pestaña "Comunicaciones Enviadas" de su ficha CRM en AOS Palace.

📊
Registro de Auditoría
AOS Program → Ajustes → Auditoría

El sistema de auditoría registra automáticamente todos los eventos significativos del ciclo de programación. Es de solo lectura y sirve como trazabilidad completa de quién hizo qué y cuándo.

EventoCuándo ocurre
slot_assignedAl asignar un slot (auto o manual)
slot_movedAl mover una ponencia a otro slot
slot_deletedAl eliminar una ponencia de la parrilla
auto_scheduledAl completar la programación automática
request_submittedAl recibir una petición de indisponibilidad
request_resolvedAl marcar una petición como resuelta
request_conflictAl detectar conflicto con petición
fav_added / fav_removedAl añadir o eliminar un favorito
ℹ️

El log muestra los últimos 300 eventos de la edición activa. Los eventos más antiguos están disponibles en la tabla aos_prog_audit_log de la base de datos.

🔧
Shortcodes Disponibles
Incrusta el programa y las funcionalidades en cualquier página

[aos_program] — Parrilla pública del programa

[aos_program]
AtributoValoresDescripción
viewfull | compactfull: parrilla completa. compact: lista con solo hora y título.
statusdraft | finalFuerza la visualización de un estado concreto, ignorando el estado configurado.

[aos_availability_request] — Modal de indisponibilidad

[aos_availability_request item_id="123"]

[aos_my_schedule] — Mi programación (standalone)

[aos_my_schedule]

[aos_activity_rating] — Widget de valoración

[aos_activity_rating activity_id="123"]
🌐
Vista Pública del Programa
Cómo se presenta a los asistentes del congreso
EstadoEtiqueta en frontendComportamiento
Borrador"Programa Provisional"La parrilla es visible pero el usuario sabe que puede cambiar. Favoritos y Mi Programación activos.
Definitivo"Programa Definitivo"Programa estable. Formularios de indisponibilidad bloqueados.

Usa [aos_program view="compact"] para mostrar el programa en formato lista, ideal para páginas de resumen o widgets de barra lateral.

📖
Glosario
Términos utilizados en el plugin y este manual
TérminoDefinición
SlotUnidad de tiempo asignada a una ponencia: combinación de fecha, hora de inicio, hora de fin y sala.
Bloque activoFranja horaria programable dentro de la jornada. Las ponencias solo se asignan aquí.
Bloque de exclusiónFranja no programable: comidas, inauguraciones, coffee breaks. El motor auto-programación los salta.
ParrillaVista de cuadrícula con todos los slots del congreso organizados por día y sala.
Paper / ArtículoComunicación científica enviada y aprobada a través de AOS Paper.
ActividadEvento no-paper (keynote, taller, pausa…) creado directamente como CPT aos_activity.
Conflicto de autorSituación en la que el mismo autor está programado en dos ponencias simultáneas o solapadas.
Conflicto autor–moderadorUn usuario aparece como ponente en una sala y como moderador en otra (sala completa o item) en horarios solapados. Bloqueado en todas las rutas desde v1.12.0.
Petición de indisponibilidadSolicitud de un ponente para informar franjas en las que no puede presentar.
SwapIntercambio de slots entre dos ponencias sin generar nuevos conflictos.
Slot fijado (Pin) 📌Slot marcado con chincheta que la programación automática y la función "Vaciar parrilla" respetan por defecto. Útil para fijar ponencias o actividades inamovibles.
AnchorCada moderación programada del autor principal de un paper. El motor intenta programar la ponencia adyacente a un anchor del mismo día para agrupar las participaciones.
Densidad de díaConteo de slots ya ocupados por día. El motor lo usa como tercera dimensión del score para repartir la carga entre los días disponibles.
Pasada 1 / Pasada 2El motor automático intenta primero asignar respetando temática e indisponibilidades (pasada 1). Si no encuentra slot, hace fallback aceptando conflicto de indisponibilidad y marca el slot en naranja (pasada 2).
is_globalFlag de actividad que la hace ocupar visualmente todas las salas simultáneamente.
AuditLogRegistro automático de todos los eventos de programación. Solo lectura.
Preguntas Frecuentes
Respuestas a los problemas más comunes

La programación automática no hace nada

Verifica que: (1) tienes al menos 1 sala configurada, (2) hay bloques activos con horario de inicio y fin, (3) las fechas de la edición activa son correctas, (4) existen artículos con estado aprobado en AOS Paper.

El favorito se añade pero no aparece en "Mi Programación"

Este problema fue corregido en v1.4.0. Si persiste, comprueba si hay errores de conexión en la consola del navegador (F12).

El email de secretaría no llega

Ve a Ajustes → Correos y verifica que el campo "Email de Secretaría Técnica" tiene un valor válido. Si está vacío, el sistema usa el admin_email de WordPress.

Los ponentes no ven el botón de indisponibilidad

Tres causas posibles: (1) el checkbox "Peticiones de Indisponibilidad" está desactivado en Ajustes, (2) el programa está en estado Definitivo, o (3) el usuario no está logueado.

Un artículo no aparece en la parrilla aunque está aprobado

AOS Program solo muestra artículos de la edición activa. Comprueba que el artículo fue enviado y vinculado correctamente a la edición activa del congreso. Si la licencia de AOS Program está en modo trial, el número de artículos visibles puede estar limitado.

¿Puedo usar AOS Program sin AOS Paper?

Sí, pero solo podrás programar Actividades manuales (aos_activity). AOS Paper es necesario para gestionar artículos científicos con revisión por pares.

El motor amontona todas las ponencias en el día 1 y deja días vacíos

Este comportamiento se corrigió en v1.12.0 con la distribución multi-día. El motor ahora reparte la carga entre todos los días disponibles según una tercera dimensión de score (densidad de día). Si sigues viendo este patrón en v1.12.0+, comprueba que las fechas de la edición activa cubren los 3 días reales y no solo el primero.

Ejecuté "Vaciar parrilla" y se perdieron mis slots fijados

Por defecto la opción "Incluir slots fijados" está desmarcada — los slots con chincheta (📌) se preservan. Si los perdiste, probablemente activaste esa opción por error. Revisa Ajustes → Auditoría: cada vaciado deja entrada schedule_cleared con los flags exactos que usaste.

El botón "×" para eliminar un slot está deshabilitado

El slot está fijado con chincheta. Es protección contra borrados accidentales. Pulsa primero la chincheta para desfijarlo, luego el botón "×" se reactivará.

No puedo asignar a Alberto como moderador de una sala

Si recibes el mensaje "Alberto ya está programado como ponente en otra sala a las…", significa que Alberto tiene una ponencia en horario solapado con algún slot de la sala que quieres asignarle. Tienes tres opciones: (1) mueve su ponencia a otra hora, (2) elige otra persona para moderar esa sala, o (3) elimina la ponencia en conflicto. El sistema bloquea estos casos desde v1.12.0 para evitar que un usuario esté programado en dos salas simultáneamente.

¿Cómo funciona exactamente el motor automático?

En la raíz del plugin existe el documento SCHEDULER-LOGIC.md con la explicación completa: las 4 dimensiones del score (anchor → proximidad → densidad de día → hora), las dos pasadas (limpia + fallback con conflict), los casos edge y las limitaciones conocidas. Recomendado para entender por qué un caso concreto se programa de cierta manera o para proponer mejoras.