Aller au contenu

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)