PD-86 — Décomposition multi-agents (Étape 6a)¶
Story : PD-86 — Détection de contenu sensible (IA locale) Date : 2026-02-24 Mode : sequential (23 composants, dépendances linéaires entre modules)
Stratégie de parallélisation¶
parallelization:
mode: sequential
reason: "Dépendances linéaires fortes entre modules (types → engine → services → gate → hooks). Le projet React Native n'a pas de modules isolés testables indépendamment."
total_tasks: 10
estimated_agents: 8 agent-developer + 1 agent-qa-unit-integration + 1 agent-adversarial
Manifest des tâches¶
T1 — Types & Configuration (fondations)¶
- Agent : agent-developer
- Module : types-config
- Contract : CC-01 (types-config)
- Fichiers :
src/sensitive-detection/types.tssrc/sensitive-detection/config.ts- Dépendances : aucune
- Description : Définir les types partagés (Category, AnalysisStatus, SensitiveAnalysisResult, SensitiveDetectionSettings, DocumentSensitiveVerdict, DocumentSensitivePreference, ViewerGateDecision, InMemoryHandle, ClassifierInput, ClassifierOutput) et les constantes (seuils par défaut, bornes [0.50, 0.95], timeout 5000ms, max frames 12, max pages 5, TTL cache 90j, taille max handle 64MB).
- Livrable : 2 fichiers TypeScript, 0 dépendance externe
T2 — Moteur de classification (interface + mock + ONNX)¶
- Agent : agent-developer
- Module : classification-engine
- Contract : CC-02 (classification-engine)
- Fichiers :
src/sensitive-detection/engine/ContentClassifier.tssrc/sensitive-detection/engine/MockClassifier.tssrc/sensitive-detection/engine/OnnxClassifier.ts- Dépendances : T1 (types)
- Description : Interface abstraite ContentClassifier, MockClassifier déterministe pour tests, OnnxClassifier avec chargement modèle ONNX Runtime Mobile. Aucun appel réseau. Retourne scores pour les 4 catégories whitelistées uniquement.
- Livrable : 3 fichiers, 1 native module à configurer
T3 — Sampling & Evaluation¶
- Agent : agent-developer
- Module : sampling-strategy + threshold-evaluator
- Contract : CC-05 (sampling-strategy) + CC-06 (threshold-evaluator)
- Fichiers :
src/sensitive-detection/services/SamplingStrategy.tssrc/sensitive-detection/services/ThresholdEvaluator.ts- Dépendances : T1 (types, config)
- Description : Algorithmes d'échantillonnage vidéo (12 frames, uniforme + 2 premières secondes) et PDF (5 pages déterministes, première + dernière + 3 intérieures). ThresholdEvaluator : calcul isSensitive depuis rawScores, clamp mineur, réévaluation sans ré-inférence.
- Livrable : 2 fichiers, algorithmes déterministes
T4 — Media Analyzers (Image/Video/PDF + Warmup)¶
- Agent : agent-developer
- Module : media-analyzers
- Contract : CC-03 (media-analyzers)
- Fichiers :
src/sensitive-detection/engine/ImageAnalyzer.tssrc/sensitive-detection/engine/VideoAnalyzer.tssrc/sensitive-detection/engine/PdfAnalyzer.tssrc/sensitive-detection/engine/EngineWarmup.ts- Dépendances : T1 (types), T2 (ContentClassifier), T3 (SamplingStrategy)
- Description : Pipelines d'analyse par type de média. InMemoryHandle opaque, zeroization via BufferZeroizer, agrégation max(score) par catégorie. Warm-up à l'ouverture du coffre.
- Livrable : 4 fichiers
T5 — Store & Cache¶
- Agent : agent-developer
- Module : store-cache
- Contract : CC-04 (store-cache)
- Fichiers :
src/sensitive-detection/store/useSensitiveDetectionStore.tssrc/sensitive-detection/store/verdictCache.ts- Dépendances : T1 (types, config)
- Description : Store Zustand pour settings et verdicts. Cache chiffré AES-256-GCM des verdicts. Politique TTL 90 jours. Purge au déverrouillage du coffre. Invalidation par modelVersion et thresholdsVersion.
- Livrable : 2 fichiers
T6 — Security (Zeroizer + NetworkGuard + iOSPrivacyGuard + Logger)¶
- Agent : agent-developer
- Module : security
- Contract : CC-08 (security)
- Fichiers :
src/sensitive-detection/security/BufferZeroizer.tssrc/sensitive-detection/security/NetworkGuard.tssrc/sensitive-detection/security/iOSPrivacyGuard.tssrc/sensitive-detection/services/DetectionLogger.ts- Dépendances : T1 (types), crypto/zeroize.ts (existant)
- Description : BufferZeroizer try/finally, NetworkGuard assertion zéro-réseau en dev/test, iOSPrivacyGuard (App Switcher overlay, Spotlight exclusion, QuickLook contrôle), DetectionLogger whitelist stricte.
- Livrable : 4 fichiers
T7 — DetectionService (orchestrateur)¶
- Agent : agent-developer
- Module : detection-service
- Contract : CC-07 (detection-service)
- Fichiers :
src/sensitive-detection/services/DetectionService.ts- Dépendances : T1-T6 (tous les modules)
- Description : Orchestrateur principal : mutex par (documentId, modelVersion), timeout 5000ms avec Promise.race, dispatch vers analyseurs, cache check/write, idempotence, gestion des 6 codes erreur.
- Livrable : 1 fichier, composant critique
T8 — Gate Viewer (logique + UI)¶
- Agent : agent-developer
- Module : gate-viewer
- Contract : CC-09 (gate-viewer)
- Fichiers :
src/sensitive-detection/gate/ViewerGate.tssrc/sensitive-detection/gate/ViewerGateModal.tsxsrc/sensitive-detection/gate/MinorConfirmation.tsx- Dépendances : T1 (types), T5 (store), T3 (ThresholdEvaluator)
- Description : 6 règles de précédence contractuelle (R1-R6). Modal consentement SHOW_ANYWAY/KEEP_HIDDEN/CANCEL. MinorConfirmation pour double validation mineur. requiresExplicitConfirmation = isMinor && (isSensitive || isErrorStatus).
- Livrable : 3 fichiers (1 logique + 2 UI)
T9 — Hooks d'intégration¶
- Agent : agent-developer
- Module : hooks
- Contract : CC-10 (hooks)
- Fichiers :
src/sensitive-detection/hooks/useSensitiveDetection.tssrc/sensitive-detection/hooks/useSensitiveSettings.ts- Dépendances : T7 (DetectionService), T8 (ViewerGate)
- Description : Hook principal pour le viewer (orchestration détection + gate + modal). Hook paramètres (activation, seuils, préférences par document).
- Livrable : 2 fichiers
T10 — Tests unitaires & intégration¶
- Agent : agent-qa-unit-integration
- Module : tests
- Contract : tous les CC
- Fichiers :
src/__tests__/sensitive-detection/*.test.tssrc/__tests__/sensitive-detection/*.test.tsx- Dépendances : T1-T9 (tout le code source)
- Description : 34 scénarios de test (TC-86-01 à TC-86-34). Tests unitaires pour ViewerGate, ThresholdEvaluator, SamplingStrategy, verdictCache, DetectionLogger, BufferZeroizer, NetworkGuard. Tests d'intégration pour DetectionService, useSensitiveDetection, ViewerGateModal.
- Livrable : 17 fichiers de test
Résumé¶
| # | Tâche | Agent | Module | Fichiers | Dépend de |
|---|---|---|---|---|---|
| T1 | Types & Config | agent-developer | types-config | 2 | — |
| T2 | Classification Engine | agent-developer | classification-engine | 3 | T1 |
| T3 | Sampling & Evaluation | agent-developer | sampling-strategy + threshold-evaluator | 2 | T1 |
| T4 | Media Analyzers | agent-developer | media-analyzers | 4 | T1, T2, T3 |
| T5 | Store & Cache | agent-developer | store-cache | 2 | T1 |
| T6 | Security | agent-developer | security | 4 | T1 |
| T7 | DetectionService | agent-developer | detection-service | 1 | T1-T6 |
| T8 | Gate Viewer | agent-developer | gate-viewer | 3 | T1, T3, T5 |
| T9 | Hooks | agent-developer | hooks | 2 | T7, T8 |
| T10 | Tests | agent-qa | tests | 17 | T1-T9 |
| Total | 40 |