Skip to content

[TECH] Créer un nouvel assessment result lorsqu'on annule et désannule une certification sur Pix Admin (PIX-16045). #11131

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

Conversation

AndreiaPena
Copy link
Member

@AndreiaPena AndreiaPena commented Jan 15, 2025

🥞 Problème

Actuellement, lorsque le métier annule ou désannule une certification, on ne modifie que le booléen isCancelled sur le certification-course.

  • Perte d’historisation des statuts d’une certification.
  • Le statut annulée n’est pas identifié de la même façon que le validated et rejected

🥓 Proposition

  • Ajouter en plus du boolean isCancelled la creation d'un nouveau assessment-result avec un statut 'cancelled' au moment du scoring
    • on garde les infos de score (competences-marks, etc.)
    • on identifie le tributaire de l'action cote pix admin
  • Bloquer l'annulation de certification quand on est pas finalise
    • suite reponse metier "Aujoud’hui on utilise pas l’annulation pour des certifications non finalisees"

🧃 Remarques

😋 Pour tester

⚠️ Faire ce test deux fois : une fois pour une certif V2 et une fois pour une certif V3

  • Sur Pix Certif creer une session, ajouter un candidat, lui faire passer sa certif
  • Avant la finalisation, sur Pix Admin, aller sur sa certification (sessions de certification -> certification xxx) et tenter de l'annuler
    • Un message d'erreur doit apparaitre, faire un refresh, verifier que la certification n'est pas annulee
  • Si test OK, revenir sur Pix Certif, et finaliser la session
  • Sur Pix Admin, tenter a nouveau de cliquer sur le bouton d'annulation
    • pas d'erreur, verifier que le "status" est a annuler (en + du macaron annulee)
    • en base de donnee, voir que pour cette certification, un nouvel asserssment-result (le dernier) est "cancelled"
  • Si tout est OK, tenter de publier, et verifier sur Pix App que l7affichage candidat est toujours OK (message d'annuation)

@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 :

@alexandrecoin alexandrecoin force-pushed the PIX-16045-create-assessment-result-when-status-cancelled branch 2 times, most recently from 1ee1841 to 16052c5 Compare January 16, 2025 13:40
@yaf yaf force-pushed the PIX-16045-create-assessment-result-when-status-cancelled branch 2 times, most recently from 1d6ca25 to 6c80303 Compare January 16, 2025 15:35
@alexandrecoin alexandrecoin force-pushed the PIX-16045-create-assessment-result-when-status-cancelled branch from 6c80303 to 595a066 Compare January 16, 2025 16:12
@Steph0 Steph0 force-pushed the PIX-16045-create-assessment-result-when-status-cancelled branch from 595a066 to 3e262be Compare January 16, 2025 16:15
@Steph0 Steph0 added 👀 Tech Review Needed 👀 Func Review Needed Need PO validation for this functionally and removed Development in progress labels Jan 16, 2025
@Steph0
Copy link
Contributor

Steph0 commented Jan 16, 2025

Premier test func v2 (KO)

Decision equipe

  • Il faut faire le uncancel pour activer le cancel
  • On veut supprimer l'event dispatcher qui est deprecated et cree des soucis (rollback sans erreurs cote monitoring)

ℹ️ OK de pas pouvoir annuler si pas finalise

Screenshot_20250116_173611

⚠️ Soucis : l'annulation change rien niveau front meme si HTTP 204 recu, le isCancelled est a false (il devrait etre true)

image
image

@alexandrecoin alexandrecoin force-pushed the PIX-16045-create-assessment-result-when-status-cancelled branch from 3e262be to d33d490 Compare January 17, 2025 08:10
@yaf yaf marked this pull request as draft January 27, 2025 09:52
@AndreiaPena AndreiaPena force-pushed the PIX-16045-create-assessment-result-when-status-cancelled branch 4 times, most recently from 27bbc6e to e405c81 Compare January 29, 2025 10:34
@AndreiaPena AndreiaPena changed the title [TECH] Créer un assessment result en statut annulée lorsqu'on annule une certification sur Pix Admin (PIX-16045). [TECH] Créer un assessment result en statut annulée lorsqu'on annule et désannule une certification sur Pix Admin (PIX-16045). Jan 29, 2025
@AndreiaPena AndreiaPena force-pushed the PIX-16045-create-assessment-result-when-status-cancelled branch from e405c81 to 3440bef Compare January 31, 2025 10:30
@AndreiaPena
Copy link
Member Author

AndreiaPena commented Jan 31, 2025

Testé sur V3 : annulation ✅ désannulation ✅
Testé sur V2 : annulation 🔴 (on a constaté que le certif-course.isCancelled restait à false)

Quel est le problème ? Le problème vient d'ici :

Dans le scoring V2, il y a le mécanisme de neutralisation/ dé-neutralisation d'un challenge.
Et ce mécanisme annule ou désannule une certification.

En faisaint appel au scoring pour l'annulation, on passe là dedans du coup et forcément comme on à suffisamment de challenge trustable, on tombe dans le else qui va uncancel la certif course.

Comment corriger ça ?

Initialement, coté usecase, on cancel la certif course puis on fait le scoring.
Pour ne pas à avoir a toucher à l'existant sur le scoring, on a fait le choix d'inverser les actions coté usecase.

=> On score (et on passe par le else..) PUIS on cancel coté usecase. Et on retombe sur nos pattes.

C'est clairement pas clean mais ça nous permet de faire avancer notre sujet.

Et du coup
Testé sur V2 : annulation ✅ désannulation ✅

Copy link
Contributor

@Steph0 Steph0 left a comment

Choose a reason for hiding this comment

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

Merci pour les tests func :)

* Using {@link https://jsdoc.app/tags-type "Closure Compiler's syntax"} to document injected dependencies
* @typedef {handleCertificationRescoring} HandleCertificationRescoring
*/
const handlersAsServices = injectDependencies(handlersToBeInjected, dependencies);
Copy link
Contributor

Choose a reason for hiding this comment

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

A noter pour de futurs lecteurs : ceci est un pont pour amorcer la transition ou on arrive a se debarrasser de l'event dispatcher

await certificationRescoringRepository.execute({ event: certificationCancelledEvent });

certificationCourse.cancel();
await certificationCourseRepository.update({ certificationCourse });
Copy link
Contributor

@Steph0 Steph0 Feb 3, 2025

Choose a reason for hiding this comment

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

Comme c'est le mecanisme principal pour le moment, je propose de mettre comme dans uncancel, a savoir d'abord l'update avant l'event. Comme ca si l'event echoue, le update aura bien ete fait dans tous les cas.

De maniere generale d'ailleurs je trouve mieux une meilleure pratique que les operations locales soit toutes validees avant de propager un evenement a d'autres contextes.

Copy link
Member Author

Choose a reason for hiding this comment

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

vu ensemble, c'est le fameux twist pour le scoring v2 => todo: faire un commentaire pour prévenir du choix d'appels dans cet ordre là

@Agnes-V
Copy link
Contributor

Agnes-V commented Feb 3, 2025

Quelqu'un peut vérifier en BDD RA (j'ai pas accès ⛔️) que le nouvel assessment-result (le dernier) est "cancelled" pour les :

  • certif course id 128350 = v2
  • certif course id 128352 = v3 svp ? 🙏🏼
    Sinon test func OK ✅🚀

@yaf
Copy link
Member

yaf commented Feb 3, 2025

J'ai fait les quelques modifs proposées par toi @Steph0. Et j'ai ajouté le commentaire que vous avez évoqué avec @AndreiaPena ...
f1f0135

Pas sûr que le commentaire apporte des informations suffisantes, il faut peut-être le reprendre ?

@yaf yaf added Func Review OK PO validated functionally the PR and removed 👀 Func Review Needed Need PO validation for this functionally labels Feb 3, 2025
@AndreiaPena
Copy link
Member Author

AndreiaPena commented Feb 3, 2025

  • 128350

Quelqu'un peut vérifier en BDD RA (j'ai pas accès ⛔️) que le nouvel assessment-result (le dernier) est "cancelled" pour les :

  • certif course id 128350 = v2
  • certif course id 128352 = v3 svp ? 🙏🏼
    Sinon test func OK ✅🚀

ok pour le courseId 128350
ok pour le courseId 128352
ils sont tous les deux en cancelled coté assessment-result

@yaf
Copy link
Member

yaf commented Feb 3, 2025

Je confirme !
J'ai mis un peu plus de temps à trouver les bonnes tables pour vérifier, mais j'ai fini par y arriver, merci @alexandrecoin :p

@AndreiaPena
Copy link
Member Author

AndreiaPena commented Feb 3, 2025

J'ai fait les quelques modifs proposées par toi @Steph0. Et j'ai ajouté le commentaire que vous avez évoqué avec @AndreiaPena ... f1f0135

Pas sûr que le commentaire apporte des informations suffisantes, il faut peut-être le reprendre ?

@yaf Le commentaire doit se faire dans le usecase cancel.js où nous avons volontairement inversé l'appel au rescoring puis à l'update du certif course

@yaf yaf force-pushed the PIX-16045-create-assessment-result-when-status-cancelled branch from f1f0135 to 3b611fa Compare February 3, 2025 13:35
@yaf
Copy link
Member

yaf commented Feb 3, 2025

Je viens de rectifier. Merci !

Steph0 and others added 8 commits February 3, 2025 13:40
Co-authored-by: Alexandre COIN <alexandre.pc.coin@gmail.com>
Co-authored-by: Andreia Pena <37305474+D0C702WH0@users.noreply.github.com>
Co-authored-by: Yannick François <yannick.francois@pix.fr>
Co-authored-by: Alexandre COIN <alexandre.pc.coin@gmail.com>
Co-authored-by: Andreia Pena <58915422+AndreiaPena@users.noreply.github.com>
Co-authored-by: Andreia Pena <andreia.pena@pix.fr>
Co-authored-by: Steph0 <Steph0@users.noreply.github.com>
Co-authored-by: Alexandre Coin <alexandre@mbpdealexandre-1.home>
Co-authored-by: Andreia Pena <58915422+AndreiaPena@users.noreply.github.com>
…tions)

Co-authored-by: Yannick François <yannick.francois@pix.fr>
@pix-service-auto-merge pix-service-auto-merge force-pushed the PIX-16045-create-assessment-result-when-status-cancelled branch from 3b611fa to 321d6f0 Compare February 3, 2025 13:40
@pix-service-auto-merge pix-service-auto-merge merged commit 5bce1cf into dev Feb 3, 2025
8 of 10 checks passed
@pix-service-auto-merge pix-service-auto-merge deleted the PIX-16045-create-assessment-result-when-status-cancelled branch February 3, 2025 13:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants