PD-241 — Rétrospective¶
1. Contexte¶
| Champ | Valeur |
|---|---|
| Story ID | PD-241 |
| Titre | Déconnexion utilisateur (logout) |
| Domaine | auth-identity |
| Projet | backend |
| Date complétion | 2026-02-08 |
| Verdict | GO |
2. Métriques¶
| Métrique | Valeur |
|---|---|
| Estimation plan | 5.5h |
| Durée réelle | ~24h |
| Itérations Gate 3 | 2 |
| Itérations Gate 5 | 3 |
| Itérations Gate 8 | 1 |
| Tests créés | 5 unit + 17 e2e |
| Lignes de code | ~350 |
3. Learnings clés¶
-
Tests e2e indispensables pour auth : Les tests unitaires avec mocks ne peuvent pas valider le comportement des guards NestJS ni des exception filters.
-
Atomicité session + refresh token : Si le refresh token est présent et que sa révocation échoue, le logout DOIT échouer (INV-241-03).
-
Filter dédié par domaine : Pour garantir le format
{error: "ERR-241-*", message: "..."}, un filter dédié est plus maintenable que modifier le filter global. -
Dépendances hors périmètre : PD-241 dépend de PD-106 pour l'effacement local — cette dépendance doit être tracée.
4. Patterns applicables¶
Pattern existant : ExceptionFilter dédié¶
Comme PD-32 et PD-238, filter dédié pour le format contractuel.
Nouveau pattern : Tests e2e dès l'étape 6¶
Pour les stories auth :
1. Inclure les tests e2e dans l'étape 6 (implémentation)
2. Ne pas attendre l'acceptabilité pour identifier les lacunes
3. Couvrir guards, filters, et flux complets
Nouveau pattern : Atomicité révocation¶
async logout(userId: string, refreshToken?: string): Promise<void> {
await this.keycloakService.deleteUserSessions(userId);
if (refreshToken) {
// Si présent, la révocation DOIT réussir
await this.keycloakService.revokeRefreshToken(refreshToken);
// Sinon l'exception remonte et le logout échoue
}
}
5. Signal CLAUDE.md¶
Priorité moyenne : Documenter l'obligation des tests e2e pour les stories auth.
### Tests e2e auth — Obligatoires dès l'étape 6 (2026-02-XX)
Pour toute story du domaine auth-identity :
- Tests e2e obligatoires (pas seulement unitaires)
- Couvrir les guards NestJS (comportement réel)
- Couvrir les exception filters (format de sortie)
- Ne pas attendre l'acceptabilité pour identifier les lacunes
6. Conclusion¶
PD-241 a implémenté le logout avec invalidation Keycloak. La durée réelle (~24h) a largement dépassé l'estimation (5.5h) principalement à cause des itérations de gate et des tests e2e manquants initialement. Le pattern de tests e2e dès l'étape 6 est désormais recommandé pour toutes les stories auth.
Rétrospective générée 2026-02-19 (Étape 10 batch auth-identity)