feat: avisar procesos abiertos antes de dar de baja a un estudiante (RF06)
Qué se hizo
Al dar de baja a un estudiante desde el listado, la confirmación ahora avisa si tiene procesos abiertos (instancias agendadas o recordatorios pendientes) antes de continuar, como pide
Cómo funciona
- Al tocar "Desactivar", se consultan los procesos abiertos del estudiante (
GET /estudiantes/{id}/procesos-abiertos). Mientras tanto el botón queda deshabilitado. - Se abre la confirmación de siempre. Si tiene procesos abiertos, aparece además una alerta: "Tiene 2 instancias agendadas y 1 recordatorio pendiente. No se cancelan con la baja: quedan en su historial. Revisalos si hace falta antes de continuar."
- Al confirmar, se manda
confirmar=truesolo si se mostraron procesos. Si aparecieron otros entre la consulta y la confirmación, el backend responde 409 y su mensaje se muestra como error. - Si el estudiante no tiene procesos abiertos, la confirmación es exactamente la de antes.
Cambios
-
components/students/StudentsListView.tsx: consulta de procesos antes de abrir la confirmación, yconfirmaren la baja. -
components/students/ConfirmDialog.tsx: prop opcionalaviso, una alerta debajo del mensaje. Los otros usos del diálogo no cambian. -
lib/students.ts:getProcesosAbiertos,describirProcesosAbiertosy el parámetroconfirmarendeactivateStudent.
Dependencia
Necesita el MR de backend "Feature: verificar procesos abiertos antes de la baja de un estudiante (RF06)". Si este se mergea antes, no se rompe nada: la consulta de procesos falla, el diálogo se abre sin aviso (igual que hoy) y la baja funciona como siempre.
Cómo probar (con el backend mergeado)
- En Estudiantes, "Desactivar" a un estudiante con una instancia agendada a futuro → la confirmación muestra la alerta con la cantidad. Confirmar → queda inactivo.
- "Desactivar" a uno sin procesos abiertos → la confirmación de siempre, sin alerta.
- "Cancelar" en la confirmación → no pasa nada.
Verificación
Typecheck y lint pasan.
🗄️ Cambios en la base de datos
Ninguno.