DOC
Accueil/ Projets/ MJY Task Platform/ Sprint Review & Rétrospective - Sprint 04 (Sprint d'Urgence)

Sprint Review & Rétrospective - Sprint 04 (Sprint d'Urgence)

Date de fin : 07/07/2026 à 15:00
Effort planifié : 29 SP
Effort réalisé : 13 SP (Bloc 1 : 9 SP, Stretch Goals : 4 SP)
Statut du Sprint : CLOS


🎯 Objectif du Sprint (Sprint Goal)

Corriger en priorité les anomalies critiques identifiées par l'audit technique (plantages React Error #310, décalage d'horodatage des notes, failles d'authentification client/serveur), réaligner la documentation sur l'état réel du code, et préparer le terrain pour le déploiement sur Netlify.


📢 Démonstration & Livrables (Demos)

1. Résolution de l'Error #310 (React)

  • Déplacement de tous les appels setState effectués pendant le rendu de App.jsx (gardes de rôle et de session) vers des useEffect dédiés.
  • Validation de la stabilité du rendu au changement de rôle (Manager ⇄ Collaborateur).

2. Intégrité des dates de notes

  • Uniformisation du champ de date sur la clé date (dans TaskDetail.jsx) au lieu de ts, éliminant les erreurs "Invalid Date" après les synchronisations WebSocket ou rechargement.

3. Durcissement de l'Authentification & Sécurité

  • Suppression définitive des codes PIN en dur (ADMIN_PIN, EMPLOYEE_PIN, SUPER_MANAGER_PIN) du code client et retrait de leur affichage dans Auth.jsx.
  • Code serveur mis à jour dans server.js et netlify/functions/auth.js pour valider les codes PIN via la fonction sécurisée Supabase verify_member_pin (PINs hachés en base via bcrypt).
  • Sécurisation du serveur d'authentification en forçant le plantage (fail-closed) en cas d'absence de SUPABASE_JWT_SECRET.
  • Unification de la liste des adresses email des administrateurs entre le client et le serveur.

4. Workflow et Performance

  • Ajout d'un proxy /api dans vite.config.js pour permettre le fonctionnement fluide de l'authentification lors du développement local avec npm run dev.
  • Optimisation des écritures concurrentes et de la bande passante en regroupant les upsert unitaires Supabase par lot (batch) dans storage.js.
  • Remplacement des imports dynamiques superflus par des imports statiques en tête de fichier pour nettoyer le bundle client.
  • Configuration d'ESLint pour détecter les erreurs d'usage des hooks React.

📊 Avancement des Stories

Story Description Effort (SP) Statut
US-FIX-01 Stabilité du rendu React (Error #310) 3 Complété
US-FIX-02 Intégrité de l'horodatage des notes 1 Complété
US-SEC-03 Durcissement de l'authentification 5 Complété (Backend & SQL prêt)
US-DX-06 Réparation du workflow de développement 2 Complété
US-PERF-07 Optimisation de la synchro (Batching) 1 / 3 Partiel (Batching fait, Realtime ciblé différé)
US-IMP-08 Imports statiques & outillage qualité 1 / 2 Partiel (Imports faits, ESLint prêt)
US-DOC-09 Réalignement documentaire 0 / 2 Différé (Textes SyncMenu faits, README à corriger)
US-ARCH-04 Extraction des hooks et contexte global 8 Différé (Reporté au Sprint 05)
US-BE-05 Factorisation du backend dupliqué 3 Différé (Reporté au Sprint 05)

⚖️ Note sur l'engagement : Le Bloc 1 (Correctifs critiques - 9 SP) a été complété à 100%, ce qui permet de clôturer officiellement le Sprint 04. Les stories majeures d'architecture et de refactorisation backend ont été repoussées au Sprint 05 pour sécuriser la mise en production du MVP.


🧠 Rétrospective (Retro)

Ce qui a bien fonctionné

  • Le correctif de la boucle de re-rendu React stabilise immédiatement l'expérience utilisateur globale.
  • L'utilisation du repli de sécurité (fallback) dans server.js évite de bloquer la connexion locale des développeurs tant que la migration SQL n'est pas jouée en base de données.
  • Le proxy d'API simplifie grandement la configuration de développement pour toute l'équipe.

Axes d'amélioration & Points de vigilance

  • Migration SQL : La migration SQL pour le hachage des PINs en base de données (étape 1 et 3) doit être exécutée au plus vite par un administrateur sur la base de données Supabase de production.
  • Dette Technique : L'utilisation de window.__forceAppRerender reste présente ; l'extraction vers un contexte React (AppContext.jsx) est une priorité absolue pour le Sprint 05.