Aller au contenu

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.ts
  • src/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.ts
  • src/sensitive-detection/engine/MockClassifier.ts
  • src/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.ts
  • src/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.ts
  • src/sensitive-detection/engine/VideoAnalyzer.ts
  • src/sensitive-detection/engine/PdfAnalyzer.ts
  • src/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.ts
  • src/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.ts
  • src/sensitive-detection/security/NetworkGuard.ts
  • src/sensitive-detection/security/iOSPrivacyGuard.ts
  • src/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.ts
  • src/sensitive-detection/gate/ViewerGateModal.tsx
  • src/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.ts
  • src/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.ts
  • src/__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