Aller au contenu

PD-241 — Manifest de décomposition

Ce document est produit par l'orchestrateur Claude à l'étape 6a. Il découpe le plan d'implémentation en tâches assignées à des agents spécialisés.

Résumé

  • Story : PD-241 — Déconnexion utilisateur (logout)
  • Nombre de tâches : 4
  • Agents mobilisés : agent-developer (claude), agent-qa-unit-integration (claude)

Tâche 1 : agent-developer — DTOs et Erreurs

  • Agent : agent-developer
  • LLM : claude
  • Code contracts : auth-dto, auth-errors
  • Périmètre fichiers :
  • src/modules/auth/dto/logout.dto.ts (nouveau)
  • src/modules/auth/errors/logout.errors.ts (nouveau)
  • Livrable attendu :
  • LogoutDto avec refresh_token?: string et validation class-validator
  • LogoutFailedError héritant de HttpException (502, ERR-241-LOGOUT-FAILED)
  • LogoutInternalError héritant de HttpException (500, ERR-241-INTERNAL)
  • Dépendances : aucune

Tâche 2 : agent-developer — KeycloakAdminService logout

  • Agent : agent-developer
  • LLM : claude
  • Code contract : keycloak-admin-logout
  • Périmètre fichiers :
  • src/modules/auth/mfa/services/keycloak-admin.service.ts (modification)
  • Livrable attendu :
  • Méthode invalidateSession(keycloakUserId: string): Promise<void>
  • Méthode revokeRefreshToken(keycloakUserId: string, refreshToken: string): Promise<void>
  • Réutilisation du circuit breaker et retry existants
  • Dépendances : Tâche 1 (erreurs)

Tâche 3 : agent-developer — AuthService et AuthController logout

  • Agent : agent-developer
  • LLM : claude
  • Code contracts : auth-service, auth-controller
  • Périmètre fichiers :
  • src/modules/auth/auth.service.ts (modification)
  • src/modules/auth/auth.controller.ts (modification)
  • Livrable attendu :
  • AuthService.logout(userId: string, refreshToken?: string): Promise<void>
  • Endpoint POST /auth/logout avec JwtAuthGuard, @HttpCode(200), LogoutDto
  • Gestion atomique INV-241-03 (échec revokeRefreshToken = échec logout)
  • Dépendances : Tâche 1 (dto, erreurs), Tâche 2 (keycloak-admin)

Tâche 4 : agent-qa-unit-integration — Tests unitaires et E2E

  • Agent : agent-qa-unit-integration
  • LLM : claude
  • Code contracts : auth-tests-unit, auth-tests-e2e
  • Périmètre fichiers :
  • src/modules/auth/auth.controller.spec.ts (modification)
  • src/modules/auth/auth.service.spec.ts (modification)
  • src/modules/auth/mfa/services/__tests__/keycloak-admin.service.spec.ts (modification)
  • test/auth/logout.e2e-spec.ts (nouveau)
  • Livrable attendu :
  • Tests unitaires couvrant TC-NOM-01, TC-NOM-02, TC-ERR-01, TC-ERR-02, TC-ERR-03
  • Tests E2E validant le flux complet avec Keycloak de test
  • Mocks pour KeycloakAdminService dans les tests unitaires
  • Dépendances : Tâches 1, 2, 3 (tout le code)

Ordre d'exécution

Tâche 1 (DTOs + Erreurs)     ──┐
                               ├──> Tâche 3 (Service + Controller) ──> Tâche 4 (Tests)
Tâche 2 (KeycloakAdmin)      ──┘

Parallélisation possible : - Tâches 1 et 2 peuvent être exécutées en parallèle - Tâche 3 attend Tâches 1 et 2 - Tâche 4 attend Tâche 3

Notes de l'orchestrateur

  • Risque INV-241-03 : L'atomicité de la révocation du refresh token est critique. Si revokeRefreshToken échoue, le logout DOIT échouer.
  • Risque tests E2E : Nécessite un Keycloak de test configuré avec des utilisateurs de test.
  • Point d'attention : Le HttpExceptionFilter existant doit mapper UnauthorizedException vers ERR-241-UNAUTHENTICATED. Vérifier le comportement actuel.
  • Simplification : Tâches 1+2 et Tâche 3 sont fusionnées en exécution séquentielle pour un agent developer unique.

Généré par Claude Orchestrateur — 2026-02-07