PD-32 — 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-32
- Nombre de tâches : 5
- Agents mobilisés : agent-developer, agent-qa-unit-integration, agent-adversarial
Tâche 1 : agent-developer — Migration et Entity¶
- Agent : agent-developer
- LLM : claude
- Code contracts : user-migration, user-entity-extension
- Périmètre fichiers :
src/migrations/*-add-user-profile-fields.tssrc/modules/auth/entities/user.entity.ts- Livrable attendu :
- Migration TypeORM ajoutant les colonnes
name,avatar_url,preferences(nullable/défaut) - Extension de l'entité User avec les nouvelles colonnes et
@Exclude()sur champs sensibles - Dépendances : aucune
Tâche 2 : agent-developer — DTOs¶
- Agent : agent-developer
- LLM : claude
- Code contract : user-profile-dtos
- Périmètre fichiers :
src/modules/user/dto/update-user-profile.dto.tssrc/modules/user/dto/user-profile-response.dto.tssrc/modules/user/dto/user-preferences.dto.ts- Livrable attendu :
- UpdateUserProfileDto avec validation stricte (name, avatar_url, preferences uniquement)
- UserProfileResponseDto (name, email, avatar_url, preferences)
- UserPreferencesDto avec schéma strict (locale, timezone, security, notifications)
- Dépendances : Tâche 1 (pour connaître les types des colonnes)
Tâche 3 : agent-developer — Service et Controller¶
- Agent : agent-developer
- LLM : claude
- Code contracts : user-profile-service, user-profile-controller, user-module
- Périmètre fichiers :
src/modules/user/services/user-profile.service.tssrc/modules/user/controllers/user-profile.controller.tssrc/modules/user/user.module.tssrc/modules/user/index.tssrc/app.module.ts(ajout import UserModule)- Livrable attendu :
- UserProfileService avec getProfile() et updateProfile() via RLS
- UserProfileController avec GET/PUT /user/profile, guards Auth + RateLimit
- UserModule assemblant les composants
- Import dans AppModule
- Dépendances : Tâches 1 et 2
Tâche 4 : agent-qa-unit-integration — Tests¶
- Agent : agent-qa-unit-integration
- LLM : claude
- Code contract : aucun (tests hors code contracts)
- Périmètre fichiers :
src/modules/user/**/*.spec.tstest/user-profile.e2e-spec.ts- Livrable attendu :
- Tests unitaires des DTOs (validation, whitelist, forbidNonWhitelisted)
- Tests unitaires du service (mocking repository)
- Tests d'intégration des endpoints (TC-NOM-, TC-ERR-, TC-INV-*)
- Couverture des scénarios d'accès croisé (TC-ERR-03/04)
- Dépendances : Tâches 1, 2, 3
Tâche 5 : agent-adversarial — Review sécurité¶
- Agent : agent-adversarial
- LLM : claude
- Code contract : aucun (review transverse)
- Périmètre fichiers : tous les fichiers produits par Tâches 1-3
- Livrable attendu :
- Audit des forbidden patterns
- Tentatives de bypass des validations
- Vérification de l'absence de fuites de champs sensibles
- Rapport de conformité sécurité
- Dépendances : Tâches 1, 2, 3
Ordre d'exécution¶
Phase 1 (séquentielle) :
Tâche 1 → Tâche 2 → Tâche 3
Phase 2 (parallélisable après Phase 1) :
Tâche 4 ─┬─ (en parallèle)
Tâche 5 ─┘
Notes de l'orchestrateur¶
-
Séquentialité Phase 1 : Les tâches 1→2→3 sont séquentielles car chaque module dépend du précédent (migration → entity → DTOs → service → controller).
-
Parallélisation Phase 2 : Les tests (Tâche 4) et la review sécurité (Tâche 5) peuvent s'exécuter en parallèle une fois le code produit.
-
Point d'attention RLS : La Tâche 4 doit inclure les tests d'accès croisé avec le mécanisme décrit dans le plan (création U1/U2, contrôle état avant/après).
-
ExceptionFilter : Vérifier que le format ERR-32-* est bien produit. Si le filter global ne suffit pas, créer UserProfileExceptionFilter dans la Tâche 3.
-
Synthèse (6c) : Après les tâches, l'orchestrateur assemblera les livrables et vérifiera la cohérence globale avant de marquer l'étape 6 comme terminée.