Skip to content

Refactor: Mejoras de estabilidad y UX crítica en el módulo de exámenes#209

Merged
LucaTvl merged 9 commits into
developfrom
refactor/improve-assestment-module
Feb 17, 2026
Merged

Refactor: Mejoras de estabilidad y UX crítica en el módulo de exámenes#209
LucaTvl merged 9 commits into
developfrom
refactor/improve-assestment-module

Conversation

@Frasquito3
Copy link
Copy Markdown
Collaborator

Issue Relacionada

No aplica


Resumen

Esta PR estabiliza el módulo de evaluaciones (Assessments) solucionando bucles infinitos al iniciar exámenes y problemas de rendimiento con el temporizador. Además, mejora la UX implementando un flujo explícito de "Reanudar Evaluación" y habilitando reintentos en exámenes ya aprobados si quedan intentos disponibles.

Cambios Técnicos Implementados

  • Corrección de Bucle Infinito (TakeAssessmentPage): Se implementó hasAttemptedAutoStartRef y se eliminó lógica conflictiva para evitar peticiones POST múltiples (/attempts) y condiciones de carrera al iniciar/reanudar intentos.
  • Optimización del Temporizador: Se refactorizó el manejo de respuestas utilizando useRef para evitar que handleSubmit se recree con cada pulsación de tecla, solucionando el congelamiento o reinicio del temporizador.
  • Manejo de Errores (Error 500): Se añadió manejo de excepciones robusto al enviar evaluaciones. Si el servidor falla al cerrar el intento, se fuerza la limpieza de caché local y redirección para evitar estados inconsistentes.
  • Mejora de UX en Flujo de Inicio: Se eliminó el salto automático a preguntas. El botón de acción ahora detecta intentos in_progress, cambiando el texto a "Reanudar Evaluación" y llevando siempre a la pantalla de instrucciones primero.
  • Lógica de Reintentos: Se ajustó CourseAssessmentsPage para permitir nuevos intentos en evaluaciones marcadas como completed (aprobadas), siempre que el alumno tenga intentos disponibles o sean ilimitados.
  • Sincronización de Estado (React Query): Se agregaron invalidaciones de caché para active-attempt en useAssessments.ts al iniciar y enviar, asegurando que la UI refleje el estado real sin recargar.

Guía para Pruebas y Revisión

  1. Inicio de Evaluación: Ir a la lista de evaluaciones y hacer clic en "Iniciar". Verificar en la pestaña Network que solo se realiza una petición POST a /attempts.
  2. Prueba del Temporizador: Dentro del examen, escribir respuestas o interactuar con las opciones rápidamente. Verificar que el temporizador fluye suavemente y no se reinicia ni se congela.
  3. Flujo de Reanudación: Salir del examen sin enviar. Volver a la lista. Verificar que el botón dice "Reanudar Evaluación". Al hacer clic, debe llevar a las instrucciones, y de ahí al intento existente (no crear uno nuevo).
  4. Envío y Reintento: Enviar el examen. Si se aprueba y quedan intentos (o son ilimitados), verificar que el botón en la lista permite volver a realizar la evaluación.
  5. Simulación de Error (Opcional): Si es posible, simular un error 500 en el submit. Verificar que la aplicación redirige al usuario y no lo deja atrapado en la pantalla de carga.

Screenshots (Opcional)

(N/A - Cambios principalmente lógicos y de flujo, no visuales estáticos)

@Frasquito3 Frasquito3 added bugfix Fix existing bugs, errors, or unexpected behavior in the project refactor Improve the code structure, readability, or performance without changing its external behavior labels Feb 17, 2026
@vercel
Copy link
Copy Markdown

vercel Bot commented Feb 17, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
front-end-dsw Ready Ready Preview, Comment Feb 17, 2026 7:47pm

@NiconiKimg NiconiKimg requested a review from carlex74 February 17, 2026 19:50
@LucaTvl LucaTvl requested review from LucaTvl, NiconiKimg and carlex74 and removed request for LucaTvl, NiconiKimg and carlex74 February 17, 2026 19:50
@LucaTvl LucaTvl merged commit 039488c into develop Feb 17, 2026
4 checks passed
@Frasquito3 Frasquito3 deleted the refactor/improve-assestment-module branch February 17, 2026 19:52
Frasquito3 added a commit that referenced this pull request Feb 17, 2026
* fix: avoid duplicated Authorization header setup

* refactor: extract PageLoader component to a standalone file

* refactor: replace professor helper functions with Professor model integration

* refactor: clean up JoinInstitutionModal and Professor model, remove unused imports and comments

Co-authored-by: Frasquito3 <Frasquito3@users.noreply.github.com>

* fix: update qs dependency to version 6.14.1 in package.json and pnpm-lock.yaml

* Feat: dynamic seo meta tags (#207)

* feat: implement dynamic SEO meta tags

* feat: add sitemap.xml and robots.txt for SEO

* feat: add on-page SEO optimization with structured data

* chore: update branding to Up-Skill

* chore: update react-router-dom to fix security vulnerabilities

* Refactor: Mejoras de estabilidad y UX crítica en el módulo de exámenes (#209)

* wip: implement return to a assesstment

* refactor: try-resolver assetsment

* fix: vulnerabilities

* fix: change eslint version configuration

* --amend

* --amend

* --amend

* fix: ESLint 9 flat config and E2E CI/CD compatibility

---------

Co-authored-by: NiconiKimg <pedemontenicolas2004@gmail.com>
Co-authored-by: carlex <ricardogugliermino@gmail.com>

---------

Co-authored-by: Franco Zariaga <francozariaga.zariaga@gmail.com>
Co-authored-by: LucaTvl <lucatrincavell@frro.utn.edu.ar>
Co-authored-by: Frasquito3 <Frasquito3@users.noreply.github.com>
Co-authored-by: carlex74 <r.icardogugliermino@gmail.com>
Co-authored-by: Nicolás Pedemonte <pedemontenicolas2004@gmail.com>
Co-authored-by: Frasquito3 <132107743+Frasquito3@users.noreply.github.com>
Co-authored-by: carlex <ricardogugliermino@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugfix Fix existing bugs, errors, or unexpected behavior in the project refactor Improve the code structure, readability, or performance without changing its external behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants