Aller au contenu

PD-31 — Décomposition Multi-agents

Vue d'ensemble

Story : PD-31 — Audit Log des Authentifications Branche : feature/PD-31-audit-log-auth Tâches : 15 Agents : agent-developer (Claude), agent-qa-unit-integration (Claude)


Tâches

T01 : Interfaces et types

Attribut Valeur
Agent agent-developer
Contracts CC-31-01, CC-31-02, CC-31-03, CC-31-04, CC-31-05
Fichiers src/modules/auth-audit/interfaces/auth-audit.interfaces.ts, src/modules/auth-alert/interfaces/alert.interfaces.ts
Dépendances Aucune
Complexité Faible

Périmètre : - AuthAuditEvent interface (17 champs) - AuthEventType enum (8 valeurs) - Channel enum (3 valeurs) - AlertPattern enum (5 valeurs) - AlertSeverity enum (3 valeurs) - DTOs de base


T02 : Entités TypeORM

Attribut Valeur
Agent agent-developer
Contracts CC-31-10, CC-31-11, CC-31-12
Fichiers src/modules/auth-audit/entities/auth-audit-log.entity.ts, src/modules/auth-alert/entities/auth-alert-log.entity.ts, src/modules/auth-alert/entities/auth-alert-config.entity.ts
Dépendances T01
Complexité Moyenne

Périmètre : - AuthAuditLogEntity (table auth_audit_log, 20+ colonnes, 6 index) - AuthAlertLogEntity (table auth_alert_log) - AuthAlertConfigEntity (table auth_alert_config)


T03 : Migrations PostgreSQL

Attribut Valeur
Agent agent-developer
Contracts CC-31-10, CC-31-11, CC-31-12
Fichiers src/migrations/YYYYMMDDHHMMSS-create-auth-audit-tables.ts
Dépendances T02
Complexité Moyenne

Périmètre : - Migration create tables (auth_audit_log, auth_alert_log, auth_alert_config) - Trigger append-only (trg_auth_audit_log_immutable) - Index optimisés - Configuration initiale des 5 patterns


T04 : AuthAuditNormalizerService

Attribut Valeur
Agent agent-developer
Contracts CC-31-21
Fichiers src/modules/auth-audit/services/auth-audit-normalizer.service.ts
Dépendances T01
Complexité Moyenne

Périmètre : - Génération UUID v7 (event_id) - Normalisation timestamp UTC ms - Résolution GeoIP (pays, région) - Exclusion champs sensibles - Validation Zod


T05 : AuthAuditWriterService

Attribut Valeur
Agent agent-developer
Contracts CC-31-22
Fichiers src/modules/auth-audit/services/auth-audit-writer.service.ts
Dépendances T01, T02
Complexité Élevée

Périmètre : - Canonicalisation JSON (RFC 8785) - Calcul hash chaîné (SHA3-256) - Advisory lock PostgreSQL - Transaction ACID insert - Émission événement audit.auth.logged

Invariants critiques : - INV-31-01 : Append-only garanti par trigger - INV-31-02 : Hash chaîné validé


T06 : RiskScoreService

Attribut Valeur
Agent agent-developer
Contracts CC-31-23
Fichiers src/modules/auth-audit/services/risk-score.service.ts
Dépendances T01
Complexité Moyenne

Périmètre : - Calcul score [0.0, 1.0] - Règles chargées depuis Redis (cache) - Fallback si règles indisponibles - Performance < 0.5ms


T07 : AuthAuditProcessor (BullMQ)

Attribut Valeur
Agent agent-developer
Contracts CC-31-60
Fichiers src/modules/auth-audit/processors/auth-audit.processor.ts
Dépendances T04, T05, T06
Complexité Moyenne

Périmètre : - Worker BullMQ (concurrency: 1) - Pipeline : normaliser → score → persister → détecter → émettre - Gestion erreurs (retry, DLQ)


T08 : AlertDetectorService + 5 patterns

Attribut Valeur
Agent agent-developer
Contracts CC-31-30
Fichiers src/modules/auth-alert/services/alert-detector.service.ts, src/modules/auth-alert/patterns/*.pattern.ts
Dépendances T01, T02
Complexité Élevée

Périmètre : - Interface AlertPattern + 5 implémentations - BRUTEFORCE : > 5 failures / user_id / 5 min - CREDENTIAL_STUFFING : > 10 failures / ip / 1 min (distinct users) - GEO_HOPPING : 2 countries / user_id / 2 hours - DEVICE_ANOMALY : new device + failure - TOKEN_SPRAY : > 20 TOKEN_INVALID / 1 min - Fenêtre glissante Redis


T09 : AlertConfigService + AlertNotifier

Attribut Valeur
Agent agent-developer
Contracts CC-31-12
Fichiers src/modules/auth-alert/services/alert-config.service.ts, src/modules/auth-alert/services/alert-notifier.service.ts
Dépendances T02, T08
Complexité Moyenne

Périmètre : - CRUD configuration seuils - Cache Redis (invalidation via événement) - Notification admin (via NotificationModule existant) - Journalisation alertes (auth_alert_log)


T10 : AuthAuditController

Attribut Valeur
Agent agent-developer
Contracts CC-31-50, CC-31-20
Fichiers src/modules/auth-audit-api/controllers/auth-audit.controller.ts, src/modules/auth-audit/services/auth-audit.service.ts
Dépendances T04, T05, T07
Complexité Moyenne

Périmètre : - POST /internal/v1/audit/auth-events (mTLS + JWT service) - GET /v1/audit/auth-events (JWT ADMIN/AUDITOR) - AuditAccessLogInterceptor - Pagination cursor-based


T11 : AuthAlertController

Attribut Valeur
Agent agent-developer
Contracts CC-31-51
Fichiers src/modules/auth-audit-api/controllers/auth-alert.controller.ts
Dépendances T08, T09
Complexité Faible

Périmètre : - PUT /v1/audit/auth-alerts/config/:patternCode - GET /v1/audit/auth-alerts - Validation DTO - Versioning config (optimistic lock)


T12 : JudicialExportService + Controller

Attribut Valeur
Agent agent-developer
Contracts CC-31-40, CC-31-52
Fichiers src/modules/auth-audit-api/services/judicial-export.service.ts, src/modules/auth-audit-api/controllers/judicial-export.controller.ts, src/modules/auth-audit-api/entities/judicial-export.entity.ts
Dépendances T02, T05
Complexité Élevée

Périmètre : - POST /v1/audit/auth-events/judicial-export - 6 artefacts obligatoires - Merkle path via MerkleModule existant - PARTIAL_PROOF avec warnings - Checksum SHA3-256 par artefact


T13 : AuthEventListener + Intégration auth

Attribut Valeur
Agent agent-developer
Contracts CC-31-70
Fichiers src/modules/auth-audit/listeners/auth-event.listener.ts, modifications src/modules/auth/services/*.ts
Dépendances T07
Complexité Moyenne

Périmètre : - EventSubscriber pour 8 événements auth.* - Envoi en queue BullMQ - Modifications auth services (EventEmitter2) - INV-31-08 : Traitement asynchrone uniquement


T14 : Modules NestJS + Guards

Attribut Valeur
Agent agent-developer
Contracts Tous
Fichiers src/modules/auth-audit/auth-audit.module.ts, src/modules/auth-alert/auth-alert.module.ts, src/modules/auth-audit-api/auth-audit-api.module.ts, guards, interceptors
Dépendances T01-T13
Complexité Moyenne

Périmètre : - AuthAuditModule (providers, exports, imports) - AuthAlertModule - AuthAuditApiModule - AuditAccessGuard (RBAC) - AuditAccessLogInterceptor - Registration AppModule


T15 : Tests unitaires et intégration

Attribut Valeur
Agent agent-qa-unit-integration
Contracts Tous
Fichiers src/modules/auth-audit/**/*.spec.ts, src/modules/auth-alert/**/*.spec.ts, src/modules/auth-audit-api/**/*.spec.ts
Dépendances T01-T14
Complexité Élevée

Périmètre : - TC-31-001..016 (unitaires) - TC-31-017..036 (intégration) - TC-31-037..044 (E2E) - TC-31-045..052 (performance) - Coverage >= 80%


Graphe de dépendances

T01 (interfaces)
 ├──▶ T02 (entities) ──▶ T03 (migrations)
 │         │
 │         ├──▶ T05 (writer) ──────┐
 │         │                        │
 │         ├──▶ T08 (alerting) ────┤
 │         │                        │
 │         └──▶ T12 (export) ──────┤
 │                                  │
 ├──▶ T04 (normalizer) ────────────┤
 │                                  │
 └──▶ T06 (risk-score) ────────────┤
      T07 (processor) ◀────────────┘
           ├──▶ T09 (config + notifier)
           ├──▶ T10 (audit controller)
           ├──▶ T11 (alert controller)
           └──▶ T13 (listener)
      T14 (modules) ──▶ T15 (tests)

Ordre d'exécution

Ordre Tâche Agent Bloquant
1 T01 agent-developer -
2 T02 agent-developer T01
3 T03 agent-developer T02
4 T04 agent-developer T01
5 T06 agent-developer T01
6 T05 agent-developer T01, T02
7 T07 agent-developer T04, T05, T06
8 T08 agent-developer T01, T02
9 T09 agent-developer T02, T08
10 T10 agent-developer T04, T05, T07
11 T11 agent-developer T08, T09
12 T12 agent-developer T02, T05
13 T13 agent-developer T07
14 T14 agent-developer T01-T13
15 T15 agent-qa-unit-integration T01-T14

Résumé

Métrique Valeur
Tâches totales 15
Agents développeur 14 tâches
Agents QA 1 tâche
Complexité élevée 4 tâches (T05, T08, T12, T15)
Fichiers à créer ~35
Code contracts mappés 18

Décomposition générée par Claude (orchestrateur) dans le cadre du workflow de gouvernance ProbatioVault.