PD-30 — Décomposition multi-agents¶
Vue d'ensemble¶
| Métrique | Valeur |
|---|---|
| Total tâches | 8 |
| Agents impliqués | 2 (agent-developer, agent-qa-unit-integration) |
| Fichiers estimés | 15 |
| Complexité | MEDIUM |
Graphe de dépendances¶
graph TD
T1[TASK-1: Entity & Service] --> T3[TASK-3: Stores]
T2[TASK-2: Config TTL] --> T3
T3 --> T4[TASK-4: Controller]
T3 --> T5[TASK-5: Invalidation]
T3 --> T6[TASK-6: Rate Limiting]
T1 --> T7[TASK-7: Audit]
T3 --> T7
T5 --> T7
T4 --> T8[TASK-8: Tests]
T5 --> T8
T6 --> T8
T7 --> T8 Séquencement d'exécution¶
| Batch | Tâches | Parallélisables |
|---|---|---|
| 1 | TASK-1, TASK-2 | OUI |
| 2 | TASK-3 | NON (dépend de T1) |
| 3 | TASK-4, TASK-5, TASK-6 | OUI |
| 4 | TASK-7 | NON (dépend de T3, T5) |
| 5 | TASK-8 | NON (dépend de T1-T7) |
Tâches détaillées¶
TASK-1 — Session Entity & Service Core¶
| Attribut | Valeur |
|---|---|
| ID | TASK-1 |
| Agent | agent-developer |
| Contract | CC-30-01 |
| Dépendances | Aucune |
| Fichiers | 6 |
Fichiers à créer : 1. src/session/entities/session.entity.ts — Interface Session (10 champs) 2. src/session/enums/session-audit-event.enum.ts — Enum partagé (8 événements) 3. src/session/session.service.ts — Service principal (createSession, validateSession) 4. src/session/dto/create-session.dto.ts — DTO création 5. src/session/dto/session-response.dto.ts — DTO réponse 6. src/session/dto/revoke.dto.ts — DTO révocation
Invariants couverts : INV-30-01, INV-30-02, INV-30-03, INV-30-14, INV-30-17
TASK-2 — Configuration TTL par contexte¶
| Attribut | Valeur |
|---|---|
| ID | TASK-2 |
| Agent | agent-developer |
| Contract | CC-30-02 |
| Dépendances | Aucune |
| Fichiers | 2 |
Fichiers à créer : 1. src/config/session.config.ts — Configuration TTL injectable (4 contextes) 2. src/session/session.module.ts — Module NestJS
Invariants couverts : INV-30-04, INV-30-07
TASK-3 — Session Stores (Redis + Fallback Memory)¶
| Attribut | Valeur |
|---|---|
| ID | TASK-3 |
| Agent | agent-developer |
| Contract | CC-30-03 |
| Dépendances | TASK-1 |
| Fichiers | 3 |
Fichiers à créer : 1. src/session/providers/session-store.interface.ts — Interface commune 2. src/session/providers/redis-session.store.ts — Redis store (TTL natif, pub/sub) 3. src/session/providers/memory-session.store.ts — Fallback in-memory (cleanup batch)
Invariants couverts : INV-30-05, INV-30-06, INV-30-18, INV-30-19
Points d'attention : - Protocole de réconciliation LWW avec timestamps - Protection anti-flapping (cooldown 5s) - Cleanup batch setInterval 30s
TASK-4 — Session Controller & Device Listing¶
| Attribut | Valeur |
|---|---|
| ID | TASK-4 |
| Agent | agent-developer |
| Contract | CC-30-04 |
| Dépendances | TASK-1, TASK-3 |
| Fichiers | 2 |
Fichiers à créer : 1. src/session/session.controller.ts — Controller REST 2. src/session/dto/device-list.dto.ts — DTO liste appareils
Invariants couverts : INV-30-08, INV-30-12
TASK-5 — Invalidation & Event Handlers¶
| Attribut | Valeur |
|---|---|
| ID | TASK-5 |
| Agent | agent-developer |
| Contract | CC-30-05 |
| Dépendances | TASK-3 |
| Fichiers | 2 |
Fichiers à créer/modifier : 1. src/session/session.service.ts (extension) — Méthodes revokeSession, revokeDevice, revokeAll 2. src/session/handlers/session-event.handler.ts — Handlers événements
Invariants couverts : INV-30-09, INV-30-10, INV-30-11, INV-30-13
TASK-6 — Rate Limiting Guard¶
| Attribut | Valeur |
|---|---|
| ID | TASK-6 |
| Agent | agent-developer |
| Contract | CC-30-06 |
| Dépendances | TASK-3 |
| Fichiers | 1 |
Fichiers à créer : 1. src/session/guards/session-rate-limit.guard.ts — Guard dual scope
Invariants couverts : INV-30-15
Points d'attention : - Sliding window Redis sorted sets - Mode dégradé fail-closed avec quotas conservateurs
TASK-7 — Audit Interceptor¶
| Attribut | Valeur |
|---|---|
| ID | TASK-7 |
| Agent | agent-developer |
| Contract | CC-30-07 |
| Dépendances | TASK-1, TASK-3, TASK-5 |
| Fichiers | 1 |
Fichiers à créer : 1. src/session/interceptors/session-audit.interceptor.ts — Interceptor journalisation
Invariants couverts : INV-30-16, INV-30-17
TASK-8 — Tests unitaires et d'intégration¶
| Attribut | Valeur |
|---|---|
| ID | TASK-8 |
| Agent | agent-qa-unit-integration |
| Contract | CC-30-08 |
| Dépendances | TASK-1 à TASK-7 |
| Fichiers | 6 |
Fichiers à créer : 1. src/__tests__/session/session.service.spec.ts 2. src/__tests__/session/session.controller.spec.ts 3. src/__tests__/session/redis-session.store.spec.ts 4. src/__tests__/session/memory-session.store.spec.ts 5. src/__tests__/session/session-rate-limit.guard.spec.ts 6. src/__tests__/session/session-audit.interceptor.spec.ts
Tests couverts : TC-30-001 à TC-30-019
Points d'attention : - Testcontainers pour Redis - Protocole SLA (1000 ops, seuils CI x2)
Résumé fichiers¶
| Catégorie | Fichiers |
|---|---|
| Entities/DTOs | 6 |
| Config | 2 |
| Providers (Stores) | 3 |
| Controller | 1 |
| Handlers | 1 |
| Guards | 1 |
| Interceptors | 1 |
| Tests | 6 |
| Total | 21 |
Ordre d'exécution final¶
- TASK-1 + TASK-2 (parallèle) → Fondations
- TASK-3 → Stores
- TASK-4 + TASK-5 + TASK-6 (parallèle) → Features
- TASK-7 → Audit
- TASK-8 → Tests