Aller au contenu

PD-105 — Document d'Acceptabilité

Story: PD-105 — Implémenter push notifications iOS Date: 2026-02-10 Version: v1

Résumé exécutif

Catégorie Statut Verdict
Reviews automatisées ✅ 4/4 CONFORME
Revue de code ⚠️ 5 réserves RÉSERVES
Revue des tests ⚠️ 6 réserves RÉSERVES
Revue sécurité ⚠️ 5 vulnérabilités RÉSERVES

Verdict global : ⚠️ RÉSERVES — Implémentation fonctionnelle, améliorations recommandées


1. Reviews automatisées

Outil Résultat Détail
ESLint ✅ OK Aucune erreur
Prettier ✅ OK Code formaté
TypeScript ✅ OK Aucune erreur de type
Tests ✅ 83/83 Tous les tests passent

Couverture de code (modules PD-105)

Module Statements Branches Functions Lines
services/notifications 92.39% 89.61% 91.66% 92.13%
store/notificationStore 100% 90% 100% 100%

Seuil projet : 80% → ✅ Atteint


2. Revue de code (ChatGPT)

Verdict : ⚠️ RÉSERVES

Points positifs

  • Bonne séparation des responsabilités (service, store, handlers)
  • Pattern singleton correct
  • Sérialisation badge via PQueue
  • Déduplication multi-niveaux
  • Logs structurés

Réserves

ID Description Fichier Gravité
R-01 Listeners Expo non nettoyés après reset (fuite mémoire) notificationService.ts MAJEUR
R-02 Listeners enregistrés avant validation permissions notificationService.ts MINEUR
R-03 Cast as NotificationData sans validation runtime handlers.ts MAJEUR
R-04 clearAll() sans try/catch sur setBadgeCountAsync notificationStore.ts MINEUR
R-05 Handlers sans stratégie d'erreur explicite handlers.ts MINEUR

3. Revue des tests (ChatGPT)

Verdict : ⚠️ RÉSERVES

Points positifs

  • Bonne couverture des invariants métier
  • Cas d'erreur testés
  • Assertions spécifiques
  • Séparation par responsabilité

Réserves

ID Description Fichier Gravité
T-01 Isolation singleton/Platform.OS insuffisante notificationService.spec.ts MAJEUR
T-02 Assertions nombre d'invocations manquantes notificationService.spec.ts MINEUR
T-03 Test PQueue ne prouve pas l'ordonnancement notificationStore.spec.ts MAJEUR
T-04 Test persistance sans cycle save/reload notificationStore.spec.ts MAJEUR
T-05 Pas de test idempotence handleNotificationResponse handlers.spec.ts MINEUR
T-06 Edge cases resolver incomplets resolver.spec.ts MINEUR

4. Revue sécurité (ChatGPT)

Verdict : ⚠️ RÉSERVES

Points positifs

  • Whitelist de routes (EVENT_SCREEN_MAP)
  • Validation UUID en stockage
  • Limitation rétention/volume

Vulnérabilités

ID Description Gravité Exploitabilité
SEC-01 Validation payload insuffisante MOYENNE Facile
SEC-02 Absence signature applicative du message HAUTE Moyenne
SEC-03 Logging potentiellement sensible MOYENNE Facile
SEC-04 DoS par flood notifications MOYENNE Moyenne
SEC-05 Contrôle targetId/eventType insuffisant MOYENNE Moyenne

Recommandations prioritaires

ID Recommandation Priorité
REC-01 Validation runtime stricte (Zod/Yup) P1
REC-02 Signature applicative payload (HMAC/JWS) P1
REC-03 Autorisation métier avant navigation P1
REC-04 Masquage tokens dans logs P1
REC-05 Throttling local + déduplication P2

5. Couverture des invariants

Invariant Description Testé Implémenté
INV-105-01 iOS uniquement
INV-105-02 APNs token enregistré au 1er login
INV-105-03 Token re-enregistré si expiré
INV-105-04 Erreur token loggée sans blocage
INV-105-05 Silent sans alerte
INV-105-06 Badge = nombre non-lus
INV-105-07 Classification 4 types
INV-105-08 Historisation avec champs obligatoires
INV-105-09 Badge strictement égal aux non-lus
INV-105-10 Navigation contextuelle avec fallback
INV-105-11 90 jours rétention
INV-105-12 Latence p95 < 5s N/A Backend
INV-105-13 Classification déterministe Backend

6. Décision

Option A : Corriger les réserves avant Gate 8

  • Temps estimé : 2-4h
  • Risque : Faible
  • Recommandé si : Temps disponible

Option B : Procéder à Gate 8 avec réserves

  • Les réserves identifiées sont des améliorations, pas des bloquants
  • L'implémentation est fonctionnelle et testée
  • Les recommandations sécurité P1 peuvent être traitées en story dédiée

Recommandation : Procéder à Gate 8 avec verdict RESERVE attendu. Les recommandations P1 (sécurité) doivent être planifiées dans une story de durcissement ultérieure.


Artefacts

Artefact Chemin
Revue de code PD-105-review-code.md
Revue des tests PD-105-review-tests.md
Revue sécurité PD-105-review-security.md
Acceptabilité PD-105-acceptability.md