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.