Skip to content

[TECH] Sortir les erreurs jetées dans les repositories de certification/enrolment (PIX-23893). - #17144

Open
alexandrecoin wants to merge 5 commits into
devfrom
pix-23893-remove-thrown-error-from-enrolment-repositories
Open

[TECH] Sortir les erreurs jetées dans les repositories de certification/enrolment (PIX-23893).#17144
alexandrecoin wants to merge 5 commits into
devfrom
pix-23893-remove-thrown-error-from-enrolment-repositories

Conversation

@alexandrecoin

@alexandrecoin alexandrecoin commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

☀️ Problème

Plusieurs repositories du sous-contexte certification/enrolment lèvent des erreurs du domaine lorsqu'ils ne trouvent pas de ligne en base.
L'infrastructure porte ainsi une décision métier alors que son seul rôle devrait être de rapporter ce qu'elle a trouvé, ou non.

⛱️ Proposition

Les repositories renvoient désormais null au lieu de lever une erreur, et la décision métier remonte d'un cran :

Repositories (enrolment/infrastructure)

Repository Méthode Avant Après
session-repository get throw NotFoundError return null
session-repository remove throw NotFoundError return null
session-for-attendance-sheet-repository getWithCertificationCandidates throw NotFoundError return null
candidate-repository update throw CertificationCandidateNotFoundError retourne le candidat mis à jour

🧴 Remarques

  • Le refacto porte uniquement sur certification/enrolment

  • unfinalize-session introduit un changement de comportement, pas seulement un déplacement d'erreur : finalizedSessionRepository.remove (dans session-management, non touché par la branche) n'a jamais levé d'erreur. Avant, dé-finaliser une session absente de finalized-sessions passait silencieusement et appelait quand même sessionManagementRepository.unfinalize.

  • ⚠️ Point d'attention pour la revue : sur GET/PATCH d'une session inexistante, le 404 n'est plus produit par l'error-manager mais directement par le contrôleur. Le statut est identique, mais le corps de la réponse n'est plus un payload d'erreur JSON:API. (Renvoi d'un statusCode 404 au lieu d'une erreur)

    🏊 Pour tester

    • Tests verts.
    • Non-régression sur les erreurs levées dans le sous-contexte enrolment :
      • GET/PATCH d'une session inexistante → 404
      • suppression d'une session inexistante → 404
      • PV de session (feuille d'émargement) sans session ou sans candidat inscrit → 404
      • téléchargement du modèle d'import de candidats sur une session inexistante → 404
      • ajout d'un candidat / enrôlement d'élèves SCO / import ODS sur une session inaccessible → 404
      • modification d'un candidat inexistant → erreur candidat non trouvé
      • dé-finalisation d'une session non finalisée → 404

@alexandrecoin alexandrecoin self-assigned this Aug 14, 2026
@alexandrecoin
alexandrecoin requested a review from a team as a code owner August 14, 2026 13:32
@alexandrecoin alexandrecoin added 👀 Func Review Needed Need PO validation for this functionally team-certif labels Aug 14, 2026
@pix-bot-github

Copy link
Copy Markdown

@alexandrecoin
alexandrecoin force-pushed the pix-23893-remove-thrown-error-from-enrolment-repositories branch from 6aa700c to 2247125 Compare August 14, 2026 13:34
@alexandrecoin
alexandrecoin force-pushed the pix-23893-remove-thrown-error-from-enrolment-repositories branch from 85ad1cc to ff24b7b Compare August 14, 2026 13:44
alexandrecoin and others added 5 commits August 14, 2026 16:20
…y.update method

It is unnecessarry to check whether the candidate exists or not as this is
already done where candidate-repository.update is called (be it usecases or services)
…tendance-sheet-repository getWithCertificationCandidates
- Different calls from sessionAuthorizationAdapter.find already return null if no session is found
- As these calls are made before sessionRepository.get in all the usecases modified in this commit
we check on missing session beforehand to throw a NotFoundError
- Note: some sessionRepository.get calls are made directly from controllers, we return 404 error codes
instead of mapped domain errors. This choice prevents any additional information to be returned
from the route call
Co-authored-by: Claude <claude@anthropic.com>
@alexandrecoin
alexandrecoin force-pushed the pix-23893-remove-thrown-error-from-enrolment-repositories branch from ff24b7b to 8688229 Compare August 14, 2026 14:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants