Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TECH] Eviter de re-déclencher les calculs pour déterminer la prochaine épreuve dans assessments/:id/next si la dernière épreuve proposée n'a pas encore été répondue #11843

Open
wants to merge 3 commits into
base: dev
Choose a base branch
from

Conversation

laura-bergoens
Copy link
Member

@laura-bergoens laura-bergoens commented Mar 25, 2025

🌸 Problème

la route api/assessments/:id/next (la fameuse GetNext) est une des routes les plus appelées.
Certains de ces appels ont lieu alors qu'il n'y a pas besoin de recalculer quelle sera la prochaine épreuve à poser, car la dernière posée n'a pas encore été répondue.
Les cas qui me viennent en tête, et qui sont fréquents :

  • Cas de rechargement de page
  • Cas de "j'arrête pour aujourd'hui je reprends demain"
  • Le front aujourd'hui fait systématiquement deux appels à GetNext avant d'afficher l'épreuve (ce cas là est pas soluble en une aprem tech il faut un peu de temps pour se pencher sur le sujet)

🌳 Proposition

Il se trouve que, lorsqu'on fini de recalculer quelle sera la prochaine épreuve à poser, on enregistre l'id de la prochaine épreuve dans la table assessments, sous lastChallengeId.
On peut utiliser cet id pour déterminer si, en regardant les réponses apportées dans le cadre de l'assessment en cours, cette épreuve a déjà été répondue ou pas. A défaut de réponse, on sait qu'il n'y a pas besoin de redéclencher tout le GetNext (qui est par ailleurs déterministe et qui retournera de toute façon le même ID). Il suffit de retourner l'épreuve pointée par l'id dans lastChallengeId.

Cette PR contient :

  • L'ajout d'une petite garde en début de GetNext pour ne pas déclencher les calculs GetNext si l'assessment n'est pas en cours.
  • L'ajout de la vérification de si la dernière épreuve posée a déjà été répondue ou pas, auquel cas on retourne directement l'épreuve sans redéclencher tous les calculs

🐝 Remarques

🤧 Pour tester

Non régression de toutes les modalités d'assessment (sauf PixJunior).
Toujours deux appels API consécutifs mais normalement le deuxième appel ne devrait pas refaire tous les calculs.
Une manière de vérifier en local pourrait être de lancer son serveur en mode DEBUG=knex:* et de constater que sur le deuxième appel de GetNext on n'a pas remonté la terre entière dans la BDD

@laura-bergoens laura-bergoens added 👀 Tech Review Needed 👀 Func Review Needed Need PO validation for this functionally cross-team Toutes les équipes de dev labels Mar 25, 2025
@laura-bergoens laura-bergoens self-assigned this Mar 25, 2025
@laura-bergoens laura-bergoens requested review from a team as code owners March 25, 2025 16:27
@laura-bergoens laura-bergoens changed the base branch from dev to tech-light-refacto-around-get-next-challenge March 25, 2025 16:28
@laura-bergoens laura-bergoens added the ⚠️ PR Inheritance This PR inherits a first-to-merge PR and will need a rebase label Mar 25, 2025
@pix-bot-github
Copy link

Une fois les applications déployées, elles seront accessibles via les liens suivants :

Les variables d'environnement seront accessibles via les liens suivants :

@laura-bergoens laura-bergoens force-pushed the tech-avoid-recomputing-next-challenge-if-previous-one-not-answered-yet branch from ac03188 to c8db64e Compare March 25, 2025 16:41
Copy link
Member

@yaf yaf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trop bien, merci ! 🚀

@laura-bergoens laura-bergoens force-pushed the tech-light-refacto-around-get-next-challenge branch from 77da09d to d2a26db Compare March 26, 2025 08:38
@laura-bergoens laura-bergoens force-pushed the tech-avoid-recomputing-next-challenge-if-previous-one-not-answered-yet branch from c8db64e to b5308d1 Compare March 26, 2025 08:39
@VincentHardouin
Copy link
Member

Je suis d'accord avec le fond, mais j'ai une petite inquiétude, peut-être pas justifiée, sur le fait qu'un challenge soit périmé entre temps ou autres.

@laura-bergoens
Copy link
Member Author

Je suis d'accord avec le fond, mais j'ai une petite inquiétude, peut-être pas justifiée, sur le fait qu'un challenge soit périmé entre temps ou autres.

Bien vu. Je peux ajouter cette vérification je pense que c'est pas cher

@laura-bergoens laura-bergoens force-pushed the tech-light-refacto-around-get-next-challenge branch from d2a26db to 5d39622 Compare March 26, 2025 15:28
@pix-service-auto-merge pix-service-auto-merge force-pushed the tech-light-refacto-around-get-next-challenge branch 2 times, most recently from 253168a to 42aea9c Compare March 26, 2025 16:16
@laura-bergoens laura-bergoens force-pushed the tech-light-refacto-around-get-next-challenge branch from 42aea9c to 9a4fd15 Compare March 26, 2025 16:33
@pix-service-auto-merge pix-service-auto-merge force-pushed the tech-light-refacto-around-get-next-challenge branch from 9a4fd15 to c170388 Compare March 26, 2025 16:41
@laura-bergoens laura-bergoens force-pushed the tech-light-refacto-around-get-next-challenge branch 2 times, most recently from 7f83e80 to f0fab2f Compare March 27, 2025 09:17
@laura-bergoens laura-bergoens force-pushed the tech-avoid-recomputing-next-challenge-if-previous-one-not-answered-yet branch from b5308d1 to 38dc92f Compare March 27, 2025 09:21
@laura-bergoens laura-bergoens force-pushed the tech-light-refacto-around-get-next-challenge branch from f0fab2f to 70a9ebf Compare March 27, 2025 10:09
@laura-bergoens laura-bergoens requested a review from a team as a code owner March 27, 2025 10:09
@pix-service-auto-merge pix-service-auto-merge force-pushed the tech-light-refacto-around-get-next-challenge branch from 70a9ebf to 05da303 Compare March 27, 2025 10:20
Base automatically changed from tech-light-refacto-around-get-next-challenge to dev March 27, 2025 10:27
@laura-bergoens laura-bergoens removed the ⚠️ PR Inheritance This PR inherits a first-to-merge PR and will need a rebase label Mar 27, 2025
@laura-bergoens laura-bergoens force-pushed the tech-avoid-recomputing-next-challenge-if-previous-one-not-answered-yet branch from 38dc92f to 8091084 Compare March 27, 2025 13:31
@laura-bergoens laura-bergoens force-pushed the tech-avoid-recomputing-next-challenge-if-previous-one-not-answered-yet branch from 8091084 to 82abf87 Compare March 27, 2025 15:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cross-team Toutes les équipes de dev 👀 Func Review Needed Need PO validation for this functionally 👀 Tech Review Needed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants