Sprint 4: Seguridad y Reportes
1. Objetivo del Sprint
Refinar la seguridad del sistema y habilitar las capacidades de exportación de información consolidada.
2. Planificación de Historias de Usuario
| Código | Descripción Técnica | Puntos | Tiempo (Días) |
|---|---|---|---|
| HU17 | Motor de filtrado complejo para auditoría (filtros combinados: docente + curso + periodo + fechas + estado). | 3 | 2.0 |
| HU18 | Módulo de autogestión y recuperación de credenciales (solicitud del docente, atención del coordinador). | 3 | 2.0 |
| HU19 | Interfaz de configuración de parámetros globales (tolerancia por defecto, horario laboral, días laborables). | 3 | 2.0 |
| HU20 | Desarrollo de servicios de generación de reportes PDF y Excel con datos filtrados. | 5 | 3.0 |
| Total | 14 SP | 9 Días |
3. Criterios de Éxito
- Reportes generados con datos consistentes y formato profesional (PDF/Excel).
- Funcionalidad de recuperación de contraseña operativa (docente solicita → coordinador atiende).
- Modificación de tiempos de tolerancia reflejada inmediatamente en las reglas del sistema.
4. Estado de Implementación
| HU | Estado | Detalle |
|---|---|---|
| HU17 | Completado | Filtros combinados (docente + curso + periodo + fechas + estado) en Admin\RegistrosController y Coordinador\RegistrosController. Con paginación. |
| HU18 | Completado | Docente\SolicitudPasswordController (solicitar) + Admin\SolicitudesController (atender). Flujo completo: docente solicita → admin genera contraseña temporal. |
| HU19 | Completado | Admin\ConfigController (tolerancia, horas máximas, días plazo) y horario académico (jornada, días laborables, tolerancia default, uso de franjas) guardados en la tabla singleton horario_academico. Con bloqueo de cambios si ya existen horarios o registros. |
| HU20 | Completado | Exportación CSV, PDF (Dompdf) y Excel (PhpSpreadsheet) con filtros combinados desde Admin\ReportesController y Coordinador\ReportesController. |
5. Notas Técnicas
- Para reportes PDF se usa Dompdf 3.1 (instalado vía Composer).
- Para reportes Excel se usa PhpSpreadsheet 5.8 (
phpoffice/phpspreadsheet). - Recuperación de contraseñas implementada (Opción A):
Docente\SolicitudPasswordController— docente solicita con DNI.Admin\SolicitudesController— admin/coordinador atiende generando contraseña temporal.- También disponible: magic links de Shield (login por correo).
- La configuración global (
Admin\ConfigController) tiene validaciones de integridad.
6. Sistema de Auditoría (Implementado)
6.1 Descripción
Se implementó un sistema completo de auditoría que registra automáticamente todas las acciones críticas realizadas por los usuarios en el sistema. La tabla auditoria y el modelo AuditoriaModel ya existían pero estaban sin usar.
6.2 Trait AuditLogger
- Ubicación:
app/Traits/AuditLogger.php - Método:
logAuditoria($tabla, $accion, $descripcion, $userId = null) - Uso: Se agrega
use AuditLogger;en cada controlador que necesite registrar acciones - Campos que inserta: user_id, tabla_afectada, accion, descripcion_cambio, fecha_evento, direccion_ip
6.3 Acciones que se registran
| Controlador | Acciones | Tabla |
|---|---|---|
| Admin\UsuariosController | Crear, actualizar, eliminar usuario | users |
| Admin\DocentesController | Crear, actualizar, eliminar docente | users |
| Admin\ProgramasController | Crear, actualizar, eliminar programa | programas |
| Admin\PeriodosController | Crear, actualizar, eliminar, establecer actual | periodos_academicos |
| Admin\ConfigController | Guardar configuración y horario académico | config_sistema, horario_academico |
| Admin\SolicitudesController | Atender solicitud de contraseña | solicitudes_password |
| Admin\FranjasController | Crear, actualizar, eliminar franja | franjas_academicas |
| Admin\FeriadosController | Crear, actualizar, eliminar feriado | feriados |
| Admin\RegistrosController | Revisar registro (aprobar/observar) | registros_sesion |
| Coordinador\AsignacionesController | Crear, actualizar, eliminar asignación | asignaciones |
| Coordinador\RegistrosController | Revisar registro | registros_sesion |
| Docente\LoginController | Login y logout | users |
| Docente\RegistroController | Registrar sesión de clase | registros_sesion |
6.4 Panel de Auditoría
- Ruta:
GET /admin/auditoria - Controlador:
Admin\AuditoriaController - Vista:
admin/auditoria.php - Filtros: búsqueda libre, acción, tabla, rango de fechas
- Paginación: 50 registros por página
- Sidebar: Sección "Supervisión" → "Auditoría" (separado de "Registros")
6.5 No se requieren migraciones
La tabla auditoria ya existía (migración 000014_CreateAuditoriaTable.php). Solo se activó su uso.
- Regresar al Inicio