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.