PD-240 — 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-240
- Nombre de tâches : 7
- Agents mobilisés : agent-developer (6 tâches), agent-qa-unit-integration (1 tâche)
Tâche 1 : agent-developer — session-invalidation¶
- Agent : agent-developer
- LLM : claude
- Code contract : session-invalidation
- Périmètre fichiers :
src/modules/user/services/session-invalidation.service.ts - Livrable attendu : Service d'invalidation des sessions Redis (pattern
session:{userId}:*) - Dépendances : aucune
Tâche 2 : agent-developer — user-data-purge¶
- Agent : agent-developer
- LLM : claude
- Code contract : user-data-purge
- Périmètre fichiers :
src/modules/user/services/user-data-purge.service.ts - Livrable attendu : Service d'anonymisation/purge RGPD (email, name) + création entrée audit
- Dépendances : aucune
Tâche 3 : agent-developer — keycloak-user¶
- Agent : agent-developer
- LLM : claude
- Code contract : keycloak-user
- Périmètre fichiers :
src/modules/auth/services/keycloak-user.service.ts - Livrable attendu : Service de suppression définitive via Keycloak Admin API
- Dépendances : aucune
Tâche 4 : agent-developer — audit-controller¶
- Agent : agent-developer
- LLM : claude
- Code contract : audit-controller
- Périmètre fichiers :
src/modules/admin/controllers/audit.controller.ts - Livrable attendu : Endpoint
GET /admin/audit/user/{userId}avec réponse{ status, purgedAt } - Dépendances : aucune
Tâche 5 : agent-developer — delete-account-service¶
- Agent : agent-developer
- LLM : claude
- Code contract : delete-account-service
- Périmètre fichiers :
src/modules/user/services/delete-account.service.ts - Livrable attendu : Service d'orchestration du flux de suppression (sessions → purge → Keycloak)
- Dépendances : Tâche 1, 2, 3 (services utilisés)
Tâche 6 : agent-developer — delete-account-controller¶
- Agent : agent-developer
- LLM : claude
- Code contract : delete-account-controller
- Périmètre fichiers :
src/modules/user/controllers/delete-account.controller.tssrc/modules/user/dto/delete-account.dto.ts- Livrable attendu : Endpoint
DELETE /user/accountavec guards et validation - Dépendances : Tâche 5 (service appelé)
Tâche 7 : agent-qa-unit-integration — delete-account-tests¶
- Agent : agent-qa-unit-integration
- LLM : claude
- Code contract : delete-account-tests
- Périmètre fichiers :
test/e2e/delete-account.e2e-spec.tstest/unit/delete-account.service.spec.ts- Livrable attendu : Tests E2E et unitaires couvrant T-240-*
- Dépendances : Tâches 1-6 (code à tester)
Ordre d'exécution¶
Vague 1 (parallélisable)¶
- Tâche 1 : session-invalidation
- Tâche 2 : user-data-purge
- Tâche 3 : keycloak-user
- Tâche 4 : audit-controller
Vague 2 (après vague 1)¶
- Tâche 5 : delete-account-service
Vague 3 (après vague 2)¶
- Tâche 6 : delete-account-controller
Vague 4 (après vague 3)¶
- Tâche 7 : delete-account-tests
Diagramme de dépendances¶
┌─────────────────┐
│ Tâche 1-4 │ ← Vague 1 (parallèle)
│ Services de base│
└────────┬────────┘
│
▼
┌─────────────────┐
│ Tâche 5 │ ← Vague 2
│ Orchestrateur │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Tâche 6 │ ← Vague 3
│ Controller │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Tâche 7 │ ← Vague 4
│ Tests │
└─────────────────┘
Notes de l'orchestrateur¶
-
Parallélisme maximal : Les tâches 1-4 sont indépendantes et peuvent être exécutées simultanément via 4 instances
claude -pparallèles. -
Point de synchronisation : La tâche 5 (service d'orchestration) ne peut démarrer qu'après la complétion des tâches 1-4, car elle importe et utilise ces services.
-
Dépendances existantes : Le plan référence des composants existants (ReauthMiddleware PD-238, JwtAuthGuard PD-205) qui ne nécessitent pas de modification.
-
Risque identifié : L'intégration Keycloak (tâche 3) dépend de la disponibilité de l'API admin en environnement de dev. Prévoir un mock pour les tests.
-
Synthèse 6c : Après toutes les tâches, je validerai l'intégration des modules et la cohérence des imports/exports.