Límites por día/cargo, aprobación de días y calendario de admin

- Límite de solicitudes por día y cargo (modelo reserva: pendientes + aprobadas
  ocupan hueco, rechazar lo libera). Días completos, pasados o el de hoy no se
  pueden elegir; validado también en el servidor.
- Estados de aprobación en las peticiones (pendiente/aprobado/rechazado) visibles
  para el trabajador con color; solo puede editar pendientes o añadir nuevas.
- Calendario de admin con barra lateral por empleado: aprobar/rechazar por día y
  en bloque, añadir/quitar días, y editar los límites por cargo.
- Excel con días por estado y ocupación por día/cargo.
- Migraciones automáticas no destructivas (columnas rounds.limits y requests.status;
  las peticiones existentes pasan a "pendiente").

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-26 12:15:31 +02:00
parent 15fc6dac3b
commit 9c9d2d25f9
7 changed files with 1076 additions and 130 deletions
+8 -1
View File
@@ -48,8 +48,15 @@
</div>
<p class="hint" id="calendar-hint">
Toca los días que quieres pedir. El número <span class="chip">2</span> indica
cuántas personas de tu mismo cargo ya han pedido ese día.
cuántas personas de tu mismo cargo ya han pedido ese día. Los días completos
para tu cargo, pasados o de hoy no se pueden elegir.
</p>
<div class="legend hidden" id="calendar-legend">
<span class="legend-item"><i class="sw sw--choosing"></i>Eligiendo</span>
<span class="legend-item"><i class="sw sw--pending"></i>Pendiente</span>
<span class="legend-item"><i class="sw sw--approved"></i>Aprobado</span>
<span class="legend-item"><i class="sw sw--rejected"></i>Rechazado</span>
</div>
<div id="calendar"></div>
<footer class="colophon">Buen servicio · Buen descanso</footer>
</section>