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 (C1–C4, M1–M6, MI*).
✅ Avancement au 07/07/2026 (Fin de Sprint)
Livré & vérifié (npm run test vert, npm run build OK) :
- 🔴 C1 -
setStatesortis du rendu deApp.jsxvia unuseEffectde garde (TS4.1, TS4.2, TS4.3). - 🔴 C2 - champ note
ts→datedansTaskDetail.jsx(TS4.4, TS4.5, TS4.6). - 🔴 C3 (client & SQL) - PIN partagés et
validateMemberPinretirés detaskHelpers.js; codes « 1052 »/« 4011 » retirés de l'UIAuth.jsx(TS4.7). Migration SQL prête et documentée pour la prod (TS4.8). - 🔴 C4 - fallback
jwtSecret = 'secret'supprimé (fail-closed) dansserver.js+netlify/functions/auth.js(TS4.9). - 🟠 M2 - liste d'admins unifiée et corrigée côté serveur (TS4.10).
- 🟠 M4 - proxy
/apiajouté àvite.config.jset validé (TS4.18, TS4.19). - 🟠 M5 - upserts par lot dans
storage.js(TS4.20). - 🟡 Imports -
import()dynamiques d'App.jsx/Auth.jsxconvertis en imports statiques (TS4.22, TS4.23). - 🟡 ESLint - Dépendances ESLint installées localement et script
lintexécuté (TS4.24). - 🟡 M6 / hygiène - re-export
SyncMenuretiré (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_KEY→ANTHROPIC_API_KEYrenommé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.__forceAppRerendertemporairement 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.mdet suppression des fichiers mortscloudClientetpollCloud.
🛠️ 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éplacersetEmployeeMode(false)(L166) et la gardeif (!ws) { onLogout(); ... }(L181) hors du corps de rendu, dans unuseEffectdédié. - TS4.2 : Vérifier l'absence d'autres
setStateen 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 champdate(au lieu dets). - TS4.5 :
TaskDetail.jsx:249- affichern.date(au lieu den.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_PINdetaskHelpers.js; supprimer l'affichage des PIN dansAuth.jsx(L156, L161). - TS4.8 : Migration DB - ajouter
pin_hash, hacher les PIN existants (bcrypt), retirer la colonnepinen clair du schéma et duseed-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 fallbackjwtSecret = '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.jsvsserver.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çantwindow.__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) etuseRealtime.js. (Reporté au Sprint 05) - TS4.14 : Refactorer
AdminDashboard.jsxetSuperManagerDashboard.jsxpour consommer ces hooks ; supprimer la duplication desaveMember/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.jsetnetlify/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 dansvite.config.js(ou documenternetlify devdans le README). - TS4.19 : Valider la connexion par PIN et
/api/public_dataennpm run dev.
US-PERF-07 · Optimisation synchro (M5)
- TS4.20 :
storage.js:writeToSupabase- remplacer les bouclesfor … upsert(t)par desupsert([...])par lot (tâches, notes, phases, membres). - TS4.21 :
subscribeToRealtimeChanges- cibler le pull sur la table/le projet du payload au lieu d'unpullFromSupabase()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 lesimport('./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 poursetSessionToken. - TS4.24 : Ajouter ESLint (
eslint-plugin-react-hooks,eslint-plugin-react) + Prettier + scriptlintdanspackage.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) etpollCloud(MI8) morts ; retirer lesconsole.*de production ; renommerVITE_ANTHROPIC_API_KEY→ANTHROPIC_API_KEY(MI7). (Reporté au Sprint 05)
Validation de fin de sprint
- TS4.29 :
npm run testvert +npm run buildréussi. - TS4.30 : Vérification manuelle des 3 correctifs critiques (rôles, notes, auth) et mise à jour de la revue de sprint.
