pix icon indicating copy to clipboard operation
pix copied to clipboard

[TECH] Passage de l'event de scoring des complémentaires vers un usecase (PIX-17807).

Open alexandrecoin opened this issue 7 months ago • 2 comments

⚠️ ne pas merger sans la validation Produit

🌸 Problème

Nous utilisons encore certains évènements via l'ancient event-handler. Nous souhaitons nous en débarrasser.

🌳 Proposition

Dans cette PR, on s'occupe du scoring des certifications complémentaires.

🐝 Remarques

Les fichiers de l'EventDispatcher seront supprimes dans une PR cross team

🤧 Pour tester

ℹ️ La RA est config avec le worker car on a touche au job traite via PGBoss :)

Verifications a faire pour tous les cas de test

  • Valider chaque cas
    • pour une coeur
    • pour une complementaire
      • tester les cas particuliers de taux de reproductibilite, minimum de Pix, et obtenu
      • V2 uniquement : le N-1
    • pour chaque certif : verifier le rejet, le rejet pour fraude, annulation, certif validee

Non reg V3

  • Passer une certification complete (ecran de fin)
  • Passer une certification sans aller au bout, et terminer le test par le surveillant
  • Passer une certification sans aller au bout, laisser la certif se terminer via la finalisation
  • (tech only) Declencher un rescoring via script de rescoring
    • pour une coeur
    • pour une double certification CLEA
      • 🎁 une campagne CLEA : https://app-pr12355.review.pix.fr/campagnes/YDBEHA251

Non reg V2

  • Passer une certification complete (ecran de fin)
    • Dispo ici : https://admin-pr12355.review.pix.fr/sessions/8
  • Passer une certification sans aller au bout, et terminer le test par le surveillant + finalisation
    • https://admin-pr12355.review.pix.fr/sessions/9
  • Verifier que le rescoring apres une neutralisation fonctionne
    • https://admin-pr12355.review.pix.fr/certifications/5/details
  • Verifier que le rescoring apres une DEneutralisation fonctionne
    • https://admin-pr12355.review.pix.fr/certifications/5/details
  • (tech only) Declencher un rescoring via script de rescoring
    • pour une coeur
    • pour une complementaire

Pour creer des cas de tests v2

  • Créer une session de certification avec [email protected]
  • En BDD modifier la version de la session en version 2 à l'aide de la requête suivante :
update sessions set version = 2 where id = <session_id>
  • Passer le test de certification en repondant sans aller au bout, sinon faire la modif du certif course ci-dessous avant de repondre a la derniere question
  • En BDD modifier la version de la certif-course en version 2 à l'aide de la requête suivante
    • note : on n'arrive plus a creer de certif course v2 donc faut filouter
update certification-courses set version = 2 where id = <course_id>

alexandrecoin avatar May 22 '25 09:05 alexandrecoin

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

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

pix-bot-github avatar Jun 13 '25 11:06 pix-bot-github

Yo @Steph0 ! Désolée pour le délai de réponse... J'ai fait des tests en RA v3 avec le CDC [email protected], session n°10 : Cas de tests, 3 inscriptions double certif Pix-CléA :

  1. Cléa Testeur = [email protected], toutes les questions répondues avec bouton magique jusqu'à l'écran de fin de test
  2. Surveillant Testeur = [email protected], 22 questions répondues avec bouton magique puis fin de test par surveillant, objet abandon = pb technique
  3. Finalisation Testeur = [email protected], 30 questions répondues avec bouton magique puis fin de test par finalisation de la session, objet abandon = manque de temps, départ prématuré

Quelques éléments me posent questions...

  • Pour les 3 cas j'ai 895Pix, c'est bizarre non ?
  • CléA validé uniquement dans le cas 1, pour les cas 2 et 3 c'est rejeté... 😕 Est-ce que je n'aurais pas du le valider aussi a minima dans le cas 3 ?

Agnes-V avatar Jun 16 '25 15:06 Agnes-V

@Steph0 j'ai refait des tests en RA v3 avec le CDC [email protected], session n°11 : Cas de tests, 3 inscriptions Pix coeur simple (cas nominal) :

Cléa Testeur = [email protected], toutes les questions répondues avec bouton magique jusqu'à l'écran de fin de test Surveillant Testeur = [email protected], 22 questions répondues avec bouton magique puis fin de test par surveillant, objet abandon = pb technique Finalisation Testeur = [email protected], 31 questions répondues avec bouton magique puis fin de test par finalisation de la session, objet abandon = manque de temps, départ prématuré

Agnes-V avatar Jun 17 '25 10:06 Agnes-V

  • Pour les 3 cas j'ai 895Pix, c'est bizarre non ?
    • 22 questions répondues + pb technique
      • si pb technique = pas de degradation et le bouton magique t'as mis sur une capacite max (donc 895) deja a la question 22
    • toutes les questions répondues
      • tout OK = score max
    • 30 questions
      • tu a 30 question OK avec une capacite max
      • la degradation sur une seule question non repondue ne te fera pas assez descendre pour perdre du pix

Steph0 avatar Jun 17 '25 13:06 Steph0

💥 Reste maintenant le soucis de la certif CLEA qui aurait du etre valide et la... il y a bien un bug !

Pour le reproduire

  • Etre au moment de la finalisation
  • Que ca soit le premier scoring, donc pas de certif completed (ecran de fin)
  • Et du coup la certif sera en started et non pas completed + dans une transaction (le scoring n'est pas transactionnel)

image

solution : rendre le scoring transactionnel, ou imaginer autre chose

notes

Je me note ici des curl qui me servent en debug local

curl 'http://localhost:3000/api/sessions/10/finalization' \
  -X 'PUT' \
  -H 'accept: application/vnd.api+json' \
  -H 'accept-language: fr' \
   -H 'content-type: application/vnd.api+json' \
  --data-raw '{"data":{"attributes":{"examiner-global-comment":null,"has-incident":false,"has-joining-issue":false},"included":[{"type":"certification-reports","id":"CertificationReport-6","attributes":{"id":"CertificationReport-6","certificationCourseId":6,"firstName":"Cléa","lastName":"Testeur","isCompleted":true,"abortReason":null}},{"type":"certification-reports","id":"CertificationReport-8","attributes":{"id":"CertificationReport-8","certificationCourseId":8,"firstName":"Finalisation","lastName":"Testeur","isCompleted":false,"abortReason":"candidate"}},{"type":"certification-reports","id":"CertificationReport-7","attributes":{"id":"CertificationReport-7","certificationCourseId":7,"firstName":"Surveillant","lastName":"Testeur","isCompleted":false,"abortReason":"technical"}}]}}'

et pour nettoyer ma BDD locale (apres definalisation)

DELETE FROM public."certification-courses-last-assessment-results"
	WHERE "certificationCourseId"=8;
DELETE FROM public."certification-courses-last-assessment-results"
	WHERE "certificationCourseId"=7;
DELETE FROM public."certification-courses-last-assessment-results"
	WHERE "certificationCourseId"=6;

UPDATE public."assessment-results"
	SET "assessmentId"=100089
	WHERE "assessmentId" = 139075;

Steph0 avatar Jun 17 '25 15:06 Steph0

⚠️ Vu avec l'equipe, on enleve le scoring de complementaire aux operations de rescoring. Il reste donc que le scoring de complementaire sur une certif completed.

Steph0 avatar Jun 18 '25 12:06 Steph0

Yo @Steph0 ! J'ai refait des tests en RA v3 avec le CDC [email protected], session n°13 : Cas de tests, 3 inscriptions Pix coeur uniquement :

  • Toto Testeur = [email protected], toutes les questions répondues avec bouton magique/questions passées jusqu'à l'écran de fin de test
  • Surveillant Testeur = [email protected], 23 questions répondues avec bouton magique/questions passées puis fin de test par surveillant, objet abandon = pb technique
  • Finalisation Testeur = [email protected], 31 questions répondues avec bouton magique/questions passées puis fin de test par finalisation de la session, objet abandon = manque de temps, départ prématuré

J'ai tout essayé, annuler/désannuler, rejeter/dérejeter, définaliser/refinaliser, définaliser + changer raison abandon puis refinalisé... Tout me semble OK (j'espère n'avoir rien loupé 🤞🏼) en tous cas côté v3 coeur. ✅

Agnes-V avatar Jun 18 '25 15:06 Agnes-V

:tada: This PR is included in version 5.139.0 :tada:

The release is available on GitHub release

Your semantic-release bot :package::rocket:

pix-service avatar Jun 20 '25 08:06 pix-service