Volver a proyectos

Meeting Scheduler

Cómo Construí un Motor de Asignación Justo con Zero Side Effects

Next.js 16.2TypeScript 5Tailwind CSS 4Algoritmo LRUFunciones PurasCSV ParserGeneración PDF

2

Modos de Asignación

3

Tipos de Reunión

5+

Roles de Publicador

2

Formularios Imprimibles

El Problema

Las reuniones de congregación requieren programación semanal de asignaciones — asignar oradores, lectores y asistentes en múltiples tipos de reuniones. Esto se hacía manualmente con hojas de cálculo, generando distribuciones injustas, conflictos y horas de trabajo administrativo cada semana.

El Enfoque

El desafío principal no era la UI — era el algoritmo de asignación. Necesitaba un sistema que pudiera producir asignaciones justas y sin conflictos automáticamente, respetando reglas de elegibilidad, restricciones de género y requisitos por rol. Y tenía que ser determinístico y testeable.

Decisiones Clave

¿Por qué un Motor de Asignación Puro?

El motor de asignación es una función pura: recibe input (publicadores, reuniones, restricciones) y devuelve output (asignaciones) con cero side effects. Sin acceso a base de datos, sin llamadas API. Esto lo hace infinitamente testeable y completamente predecible.

¿Por qué Rotación LRU?

La justicia no es aleatoria — es sistemática. El algoritmo LRU (Least Recently Used) asegura que quien no ha sido asignado recientemente tiene prioridad. Combinado con ordenamiento por prioridad (las partes más restrictivas primero), el algoritmo garantiza distribución justa entre todos los participantes.

Sistema de Asignación en Dos Pasadas

El motor ejecuta dos pasadas: asignados principales primero, luego ayudantes. Esto previene conflictos donde una asignación de ayudante podría bloquear una asignación principal más crítica. El ordenamiento por prioridad asegura que las partes más restringidas se llenen primero.

La Construcción

Construido con Next.js 16.2, TypeScript 5 y Tailwind CSS 4. La aplicación maneja reuniones entre semana, reuniones de fin de semana y rotación de asistentes/micrófonos — todo con asignación automática y capacidad completa de override manual. Genera formularios imprimibles S-140 y S-89 y soporta importación/exportación CSV para migración fácil.

El Resultado

Lo que antes tomaba horas de trabajo manual en hojas de cálculo ahora sucede en segundos. El algoritmo produce asignaciones sin conflictos y justas cada vez. Los publicadores ven sus asignaciones claramente, el historial se rastrea y la distribución de carga de trabajo es transparente.