DOC
Accueil/ Projets/ MJY Task Platform/ Tâches techniques - Sprint 04 (Urgence) - Statut : CLOS

Tâches techniques - Sprint 04 (Urgence) - Statut : CLOS

Ce document détaille les tâches techniques du Sprint 04, dérivées de l'audit technique complet. Chaque tâche référence l'anomalie d'audit correspondante (C1C4, M1M6, MI*).


✅ Avancement au 07/07/2026 (Fin de Sprint)

Livré & vérifié (npm run test vert, npm run build OK) :

  • 🔴 C1 - setState sortis du rendu de App.jsx via un useEffect de garde (TS4.1, TS4.2, TS4.3).
  • 🔴 C2 - champ note tsdate dans TaskDetail.jsx (TS4.4, TS4.5, TS4.6).
  • 🔴 C3 (client & SQL) - PIN partagés et validateMemberPin retirés de taskHelpers.js ; codes « 1052 »/« 4011 » retirés de l'UI Auth.jsx (TS4.7). Migration SQL prête et documentée pour la prod (TS4.8).
  • 🔴 C4 - fallback jwtSecret = 'secret' supprimé (fail-closed) dans server.js + netlify/functions/auth.js (TS4.9).
  • 🟠 M2 - liste d'admins unifiée et corrigée côté serveur (TS4.10).
  • 🟠 M4 - proxy /api ajouté à vite.config.js et validé (TS4.18, TS4.19).
  • 🟠 M5 - upserts par lot dans storage.js (TS4.20).
  • 🟡 Imports - import() dynamiques d'App.jsx/Auth.jsx convertis en imports statiques (TS4.22, TS4.23).
  • 🟡 ESLint - Dépendances ESLint installées localement et script lint exécuté (TS4.24).
  • 🟡 M6 / hygiène - re-export SyncMenu retiré (TS4.15), textes obsolètes SyncMenu (Blobs/4 s), README nettoyé du terme "KOBIKE" et de la synchro ~4s (TS4.27, TS4.25). Clé VITE_ANTHROPIC_API_KEYANTHROPIC_API_KEY renommée dans le code.

Reporté au Sprint 05 (Dette d'architecture et optimisations) :

  • 🟠 US-ARCH-04 (TS4.11–4.14) - extraction hooks/ + context/ et déduplication des dashboards : gros refactor, reporté. window.__forceAppRerender temporairement conservé.
  • 🟠 US-BE-05 (TS4.16–4.17) - factorisation server.js ↔ Netlify Functions.
  • 🟠 TS4.21 - pull Realtime ciblé.
  • 🟠 TS4.26, TS4.28 - Réalignement du schéma décrit dans audit_refactoring.md et suppression des fichiers morts cloudClient et pollCloud.

🛠️ Kanban des Tâches Techniques

🔴 Bloc 1 - Correctifs critiques (100% Terminés)

US-FIX-01 · Stabilité du rendu React (C1)

  • TS4.1 : App.jsx - déplacer setEmployeeMode(false) (L166) et la garde if (!ws) { onLogout(); ... } (L181) hors du corps de rendu, dans un useEffect dédié.
  • TS4.2 : Vérifier l'absence d'autres setState en rendu dans les 4 pages ; corriger si présents.
  • TS4.3 : Reproduire puis valider la disparition de l'« Error #310 » au basculement Manager ⇄ Collaborateur.

US-FIX-02 · Horodatage des notes (C2)

  • TS4.4 : TaskDetail.jsx:78 - créer la note avec le champ date (au lieu de ts).
  • TS4.5 : TaskDetail.jsx:249 - afficher n.date (au lieu de n.ts).
  • TS4.6 : Test manuel : créer une note → rafraîchir/Realtime → la date reste valide (plus de « Invalid Date »).

US-SEC-03 · Durcissement de l'authentification (C3, C4, M2)

  • TS4.7 : Retirer ADMIN_PIN, EMPLOYEE_PIN, SUPER_MANAGER_PIN de taskHelpers.js ; supprimer l'affichage des PIN dans Auth.jsx (L156, L161).
  • TS4.8 : Migration DB - ajouter pin_hash, hacher les PIN existants (bcrypt), retirer la colonne pin en clair du schéma et du seed-db.js. (SQL prêt pour la prod, validé en dev)
  • TS4.9 : server.js + netlify/functions/auth.js - vérifier le PIN via hash ; supprimer le fallback jwtSecret = 'secret' (échec au démarrage si absent).
  • TS4.10 : Unifier la liste des administrateurs en base ; supprimer les emails admin codés en dur divergents (taskHelpers.js vs server.js/auth.js).

🟠 Bloc 2 - Architecture & dette majeure (Partiel / Différé)

US-ARCH-04 · Extraction hooks & contexte (M3, code mal placé)

  • TS4.11 : Créer src/context/AppContext.jsx (état global : session, wsList, sync) remplaçant window.__forceAppRerender. (Reporté au Sprint 05)
  • TS4.12 : Créer src/hooks/useAuth.js (login/logout/expiration). (Reporté au Sprint 05)
  • TS4.13 : Créer src/hooks/useTasks.js, useProjects.js, useMembers.js (CRUD) et useRealtime.js. (Reporté au Sprint 05)
  • TS4.14 : Refactorer AdminDashboard.jsx et SuperManagerDashboard.jsx pour consommer ces hooks ; supprimer la duplication de saveMember/deleteMember/saveProject/deleteProject. (Reporté au Sprint 05)
  • TS4.15 : Retirer le re-export de service dans SyncMenu.jsx:151.

US-BE-05 · Factorisation backend (M1)

  • TS4.16 : Extraire signJWT, la requête membre et le calcul de rôle dans un module partagé (ex. netlify/functions/_shared/auth-core.js). (Reporté au Sprint 05)
  • TS4.17 : Importer ce module dans server.js et netlify/functions/auth.js ; supprimer le code dupliqué. (Reporté au Sprint 05)

US-DX-06 · Workflow de développement (M4)

  • TS4.18 : Ajouter server.proxy['/api'] vers le backend local dans vite.config.js (ou documenter netlify dev dans le README).
  • TS4.19 : Valider la connexion par PIN et /api/public_data en npm run dev.

US-PERF-07 · Optimisation synchro (M5)

  • TS4.20 : storage.js:writeToSupabase - remplacer les boucles for … upsert(t) par des upsert([...]) par lot (tâches, notes, phases, membres).
  • TS4.21 : subscribeToRealtimeChanges - cibler le pull sur la table/le projet du payload au lieu d'un pullFromSupabase() global. (Reporté au Sprint 05)

🟡 Bloc 3 - Imports & hygiène (Partiel)

US-IMP-08 · Imports statiques & outillage (§3 imports, MI2)

  • TS4.22 : App.jsx - remplacer les import('./services/storage') / import('./services/supabaseClient') dynamiques (L24, 35, 52, 58, 112, 141) par des imports statiques en tête de fichier.
  • TS4.23 : Auth.jsx:79 - idem pour setSessionToken.
  • TS4.24 : Ajouter ESLint (eslint-plugin-react-hooks, eslint-plugin-react) + Prettier + script lint dans package.json ; corriger les avertissements. (Installé localement, lints détectés pour correction future)

US-DOC-09 · Réalignement documentaire (M6, MI1, MI7, MI8)

  • TS4.25 : README.md - retirer « KOBIKE » et la synchro « ~4 secondes » (Realtime WebSocket réel).
  • TS4.26 : audit/audit_refactoring.md - corriger le schéma décrit (label/order/pin_hash) pour refléter le schéma réel. (Reporté au Sprint 05)
  • TS4.27 : SyncMenu.jsx - retirer les mentions « Netlify Function storage » et « polling 4 s ».
  • TS4.28 : Nettoyer cloudClient (MI1) et pollCloud (MI8) morts ; retirer les console.* de production ; renommer VITE_ANTHROPIC_API_KEYANTHROPIC_API_KEY (MI7). (Reporté au Sprint 05)

Validation de fin de sprint

  • TS4.29 : npm run test vert + npm run build réussi.
  • TS4.30 : Vérification manuelle des 3 correctifs critiques (rôles, notes, auth) et mise à jour de la revue de sprint.