Saltar a contenido

Auditoría

Toda operación relevante escribe en AuditLog dentro de la misma transacción del cambio: si el cambio se revierte, la auditoría también — no puede existir un cambio sin rastro ni un rastro de algo que no ocurrió.

Qué se audita

Tipo Acciones
Notas (GradeEntry) create, update, rectify (con valor anterior y nuevo)
Asistencia update, justify
Matrícula create, status-change (retiros/traslados con motivo), promotion
Pagos (Obligation) payment (monto, estado anterior/nuevo)
Año/período/parcial transition, close
Configuración upsert (con diff, token de Moodle ya enmascarado)
Actas de fin de año recovery-supletorio / recovery-remedial
Accesos LOPDP read sobre fichas de alumnos y observaciones

Cada registro guarda: quién (cuenta), cuándo, entidad afectada (uuid), antes/después en JSON y el correlationId del request que lo originó.

Evidencia real de la simulación

Consulta directa a la base tras el recorrido de este manual:

   hora   |  entityType  | action  |                antes                     |               despues
----------+--------------+---------+------------------------------------------+--------------------------------------
 01:17:23 | Observation  | read    | —                                        | —
 01:17:23 | Student      | read    | —                                        | —
 01:17:07 | AcademicYear | create  | —                                        | {"name": "2028-2029"}
 01:17:05 | Obligation   | payment | {"status": "PENDIENTE", "paidAmount": 0} | {"status": "PARCIAL", "paymentId": …}
 01:17:05 | GradeEntry   | rectify | {"score": 9.5}                           | {"score": 9.75, "rectificationId": …}
 01:17:04 | Partial      | close   | —                                        | —

La historia completa del recorrido es legible ahí: el cierre del parcial, la rectificación 9.5 → 9.75, el abono de la pensión, y los accesos de lectura a la ficha y observaciones de la alumna.

El visor para administración

Configuración → Auditoría: paginado, filtrable por entidad y acción, con los actores resueltos a nombre legible.

Visor de auditoría

Filtrado a Rectificación — la respuesta a "¿quién cambió esta nota?":

Auditoría de rectificaciones

Propiedades

  • Solo-escritura: no existe endpoint de edición ni borrado de auditoría; solo lectura para ADMIN.
  • Transaccional: AuditService.record(tx, …) exige la transacción del cambio — está en el contrato del servicio, no es opcional.
  • Trazable: el correlationId conecta cada registro con los logs del request que lo produjo (ver Logs).
  • Respaldada: viaja en el backup diario y en los snapshots de cierre de período que se conservan permanentemente.