Parte Diario / Documentación Acceder

Sprint 2: Operacion Transaccional

1. Objetivo del Sprint

Habilitar las funcionalidades core para el personal docente, centradas en el registro de sesiones y cumplimiento de reglas de negocio temporales.

2. Planificacion de Historias de Usuario

Codigo Descripcion Tecnica Puntos Tiempo (Dias)
HU06 Implementacion de autenticacion segura para Docentes (login con DNI/email + contrasena, bloqueo por intentos, recuperacion). 2 1.0
HU07 Interfaz de consulta de clases programadas para la fecha actual con indicadores de estado. 3 2.0
HU08 Visualizacion de la matriz de horario semanal del usuario autenticado. 3 2.0
HU09 Formulario transaccional de registro de actividad pedagogica con validacion de contenido. 5 3.0
HU10 Logica de servidor para restriccion de registros anticipados (Hora_Actual >= Hora_Fin_Clase). 2 1.0
HU11 Algoritmo de clasificacion automatica segun tiempo de entrega (en tiempo / fuera de plazo). 2 1.0
Total 17 SP 10 Dias

3. Criterios de Exito

  • Registro de sesion bloqueado si Hora_Actual < Hora_Fin_Clase.
  • Etiquetas de estado ("A tiempo" / "Fuera de plazo") asignadas correctamente por el sistema.
  • Disponibilidad del horario semanal para el docente autenticado.

4. Estado de Implementacion

HU Estado Detalle
HU06 Completo Login con DNI + contrasena via Docente\LoginController. Recuperacion de contrasena y bloqueo por intentos manejados por Shield.
HU07 Completo Docente\ClasesController con endpoint clasesHoy() que devuelve JSON con las clases del dia y estado de registro. Vista con tabla cargada via AJAX/HTMX.
HU08 Completo Docente\HorarioController con tabla semanal que muestra horarios agrupados por dia con datos del curso.
HU09 Completo Docente\RegistroController con formulario de registro, validacion de contenido, y store() con transaccion.
HU10 Completo Validacion en store() que compara hora_actual >= hora_fin_clase antes de permitir el registro. Endpoint verificar() para check en tiempo real.
HU11 Completo Clasificacion automatica: estado_registro = 'en_tiempo' si se registra el mismo dia, 'fuera_de_plazo' si es posterior.

5. Notas Tecnicas

  • El login con DNI (Docente\LoginController) busca el DNI en la tabla personal, obtiene el user_id, y autentica con Shield via email + contrasena.
  • ClasesController::clasesHoy() devuelve JSON con las clases del dia. La vista lo consume via HTMX y renderiza dinamicamente.
  • HorarioController organiza los horarios del docente en una matriz semanal (lunes a domingo), resaltando el dia actual.
  • RegistroController::store() implementa ambas reglas de negocio:
    • HU10: Verifica que hora_actual >= hora_fin del horario seleccionado.
    • HU11: Asigna estado_registro = 'en_tiempo' si hora_actual <= hora_fin + tolerancia o 'fuera_de_plazo' en caso contrario. La tolerancia se obtiene de config_sistema (clave tolerancia_minutos).
  • El frontend usa HTMX para carga asincrona y SweetAlert2 para alertas interactivas (incluido via CDN en el layout).
  • Menu lateral del docente agregado en layouts/dashboard.php con enlaces a Clases, Horario, Registrar, Historial y Perfil.
  • Codigo comentado en minusculas para facilitar el mantenimiento.