DOC
Accueil/ Projets/ MJY Task Platform/ Sprint Review & Rétrospective - Sprint 06 (Observabilité & Export de données)

Sprint Review & Rétrospective - Sprint 06 (Observabilité & Export de données)

Date de clôture : 09/07/2026 Effort planifié : 27 SP (+ refonte des rôles hors périmètre) Statut du Sprint : CLOS (1 résidu reporté au Sprint 07 : validation import par les chefs) Sources : Sprint Backlog 06 · tasks.md · rapport 09/07


🎯 Objectif du Sprint (Sprint Goal)

Doter la plateforme d'une observabilité de production (logger centralisé hiérarchique persistant dans Supabase), livrer un système d'export/sauvegarde de données (CSV + JSON) à portée par rôle, et clôturer les résidus documentaires/tests du Sprint 05 en préparant la validation de l'import par les chefs.

Objectif atteint. Les trois blocs sont livrés ; seule la validation humaine de l'import (US-VAL-01) est reportée au Sprint 07.


📢 Démonstration & Livrables

🔴 Bloc 1 - Logger centralisé (ADR 0009, 14 SP)

  • Table app_logs + RLS (09_create_logs_table.sql) : INSERT ouvert (anon + authentifié), SELECT réservé super_manager, UPDATE/DELETE interdits (logs immuables). Créée sur l'instance de test à la clôture.
  • Cœur du logger front (src/utils/logger.js) : niveaux TRACEFATAL, LoggerFactory avec héritage hiérarchique par namespace, 3 transports (Console couleur, Buffer 500, Supabase INFO+ par lot), downloadLogs(), hook useLogger.
  • Interception fetch (US-LOG-03) : méthode/URL/durée/statut tracés, anti-boucle sur /rest/v1/app_logs.
  • Backend Winston/Morgan (middlewares/logger.middleware.js) branché dans server.js.

🟣 Hors périmètre initial - Refonte des rôles (admin virtuel)

Menée en parallèle (outil « antigravity »), conservée car base technique de US-EXP-03 : rôle admin virtuel (compte admin@engwe-france.fr, jamais stocké en base), renommage AdminDashboardManagerDashboard, import self-service collaborateur. 2 bugs corrigés en preview réelle (prop session manquante sur 2 des 3 routes de SuperManagerDashboard).

🟠 Bloc 2 - Export / Sauvegarde (8 SP)

  • src/utils/exportTasks.js (fonctions pures) + composant ExportButtons câblé dans les 3 dashboards.
  • CSV aligné template ADR 0008 (;, CRLF, BOM UTF-8, échappement) + colonnes de contexte ; aller-retour ré-importable vérifié.
  • JSON exhaustif (champs + notes + relations résolues), sans aucun secret.
  • Portée par rôle (filterTasksByRole) : admin/super = tout, manager = siennes + créées/à valider, employee = siennes.
  • Vérifié en preview réelle (Supabase live, compte Administrateur) : CSV/JSON corrects, portée admin = toutes les tâches.

🟡 Bloc 3 - Clôture des résidus (5 SP)

  • Doc réalignée (supabase_schema.sql réécrit sur auth.users, README, product_backlog US1.1/1.2/5.1) - plus aucune trace de JWT custom / rôle admin fantôme.
  • e2e réécrit (e2e/auth.spec.js) sur le flux roster + /api/login natif.
  • Recette import préparée (recette_demo.md).

📊 Avancement des Stories

Story Description SP Statut
US-LOG-01 Table app_logs + RLS 3 ✅ Complété
US-LOG-02 Cœur du logger front 5 ✅ Complété
US-LOG-03 Interception API + anti-boucle 3 ✅ Complété
US-LOG-04 Middleware backend Winston/Morgan 3 ✅ Complété
US-EXP-01 Export CSV (format import étendu) 3 ✅ Complété
US-EXP-02 Export JSON complet 2 ✅ Complété
US-EXP-03 Portée d'export par rôle 3 ✅ Complété
US-DOC-01 Réalignement documentaire 2 ✅ Complété
US-TEST-01 Réécriture e2e Playwright (auth) 2 ✅ Complété
US-VAL-01 Recette & validation import par les chefs 1 🟠 Partiel - démo prête, validation reportée au Sprint 07

Vélocité : 26 / 27 SP (+ refonte des rôles hors périmètre absorbée).


✅ Qualité & vérifications

  • npm run test : 72/72 (44 préexistants + 16 logger + 12 export).
  • npm run test:e2e : 7/7 (roster, PIN, mauvais PIN, connexion des 3 rôles + admin jusqu'au dashboard).
  • npm run build : OK · eslint sur les fichiers touchés : 0 nouvelle erreur.
  • Vérification en preview réelle (Supabase live) : export CSV/JSON conforme, portée admin validée.

🔻 Résidu reporté au Sprint 07

  1. US-VAL-01 / TS6.32 - présentation de l'import à Julien & Marco et consignation de la validation formelle. Reportée après le vendredi soir (disponibilité PO). Script de recette prêt : recette_demo.md.

🧭 Décisions & clôtures

  • ADR 0009 (logging) : passé de Proposé à Accepté - logger livré des deux côtés, app_logs créée.
  • Écran de connexion : roster conservé (proposition B « écran neutre » écartée, confirmée).
  • Déploiement : reste un sprint dédié à venir (non entamé). Prérequis consignés dans la section « Après le Sprint 06 » du backlog (app_logs prod, seed prod, observabilité backend serverless vs VPS).

🔮 Suite : Sprint 07

Sur décision PO, le Sprint 07 porte sur les fonctionnalités demandées mais pas encore intégrées (cf. propositions_nouvelles_fonctionnalites.md) : page Profil utilisateur, gestion des emails (US1.3) et onboarding email automatisé. Voir Sprint Backlog 07.