Files
sonum/todo.md

122 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SONUM - Todo
## Base de données & Backend
- [x] Schéma DB : tables établissements, solutions, éditeurs, blocs fonctionnels, logiciels_etablissements
- [x] Schéma DB : tables demandes_contact, consultations (traçabilité), cgu_acceptances
- [x] Données de référence : régions, types d'activité, blocs fonctionnels, états déploiement, modes hébergement
- [x] Procédures tRPC : CRUD solutions et éditeurs
- [x] Procédures tRPC : CRUD établissements et rattachement logiciels
- [x] Procédures tRPC : moteur de recherche multicritères
- [x] Procédures tRPC : fiche logiciels + compteur consultation
- [x] Procédures tRPC : prise de contact (email + notification)
- [x] Procédures tRPC : demandes de contact (liste, réponse)
- [x] Procédures tRPC : CGU (vérification + acceptation)
- [x] Procédures tRPC : gestion des rôles (admin/user)
## Interface & Design
- [x] Design system : couleurs FEHAP, typographie, tokens CSS
- [x] Layout principal avec navigation (sidebar + header)
- [x] Page de connexion / landing
- [x] Modale Charte CGU (1ère connexion)
- [x] Page d'accueil : moteur de recherche multicritères
- [x] Page résultats de recherche (tableau triable)
- [x] Page "Mes Établissements" (accordéons)
- [x] Formulaire de saisie guidé en étapes (rattacher une solution)
- [x] Mode édition complète inline des tableaux
- [x] Page fiche logiciels d'un établissement
- [x] Modale prise de contact
- [x] Page "Mes Demandes de Contact"
- [x] Interface gestionnaire SONUM (accès admin)
- [x] Lien retour espace adhérent FEHAP
## Tests
- [x] Tests unitaires procédures tRPC (14 tests passés)
## Évolution v2 — Profil Adhérent FEHAP & Auth locale
### Base de données
- [x] Étendre enum sonumRole : ajouter "adherent"
- [x] Table local_users : id, userId (FK), passwordHash, createdAt
- [x] Vérifier que la table users supporte les comptes créés manuellement (sans openId OAuth)
### Backend tRPC
- [x] Procédure admin.createUser : créer un utilisateur manuellement (nom, email, rôle, mot de passe)
- [x] Procédure admin.listUsers : liste complète des utilisateurs avec rôle et établissements
- [x] Procédure admin.updateUser : modifier nom, email, rôle d'un utilisateur
- [x] Procédure admin.deleteUser : supprimer un utilisateur
- [x] Procédure admin.setAffectations : affecter un ou plusieurs établissements à un adhérent
- [x] Procédure admin.removeEtablissement : retirer un établissement d'un adhérent (inclus dans setAffectations)
- [x] Procédure auth.loginLocal : authentification par email + mot de passe (JWT session)
- [x] Middleware : les adhérents FEHAP voient uniquement leurs établissements affectés
### Interface
- [x] Page de choix de connexion : OAuth FEHAP vs Connexion locale
- [x] Formulaire de connexion locale (email + mot de passe)
- [x] Page admin : onglet "Gestion des utilisateurs" avec tableau et actions CRUD
- [x] Page admin : affectations établissements inline dans le tableau utilisateurs
- [x] Badge "Adhérent FEHAP" dans le header et la sidebar
- [x] Vue "Mes Établissements" filtrée pour les adhérents (uniquement les établissements affectés)
## Évolution v3 — Gestion des établissements par utilisateur
- [x] Étendre admin.setAffectations pour accepter tous les rôles (référent + adhérent)
- [x] Interface Admin : panneau dédié "Établissements" par utilisateur avec liste complète, barre de recherche et cases à cocher
- [x] Afficher le nombre d'établissements affectés dans le tableau utilisateurs
## Évolution v4
- [x] CGU : afficher à chaque connexion (réinitialiser à chaque login, pas seulement à la fermeture du navigateur)
- [x] Moteur de recherche : corriger les filtres multicritères qui ne fonctionnent pas
- [x] Page "Mes Solutions Numériques" : liste de toutes mes solutions avec les établissements les utilisant (accordéon)
- [x] Page "Solutions Logicielles" : liste globale des solutions avec établissements équipés (accordéon), accessible depuis la sidebar
- [x] Admin : onglet import établissements (CSV/Excel)
- [x] Admin : onglet import contacts (CSV/Excel)
## Évolution v5
- [x] Solutions Logicielles : toggle vue accordéon / vue liste à plat (solutions + établissements visibles sans clic)
## Évolution v6
- [x] Admin : onglet "Éditeurs" — CRUD éditeurs (ajouter, modifier, supprimer)
- [x] Admin : onglet "Blocs fonctionnels" — CRUD blocs fonctionnels (ajouter, modifier, supprimer)
- [x] Backend : procédures tRPC CRUD éditeurs (createEditeur, updateEditeur, deleteEditeur)
- [x] Backend : procédures tRPC CRUD blocs fonctionnels (createBlocFonctionnel, updateBlocFonctionnel, deleteBlocFonctionnel)
- [x] Backend : procédure statistiques (stats par bloc fonctionnel, par région, taux de remplissage)
- [x] Page "Tableau de bord" : graphiques recharts (barres, camembert, indicateurs clés)
- [x] Lien "Tableau de bord" dans la sidebar (visible uniquement gestionnaires)
## Évolution v7
- [x] Vue liste Solutions Logicielles : alternance de couleurs de fond (blanc / bleu clair) à chaque changement de solution pour améliorer la lisibilité
## Évolution v8 — Skill itinova-user-management
- [x] Schéma DB : ajout champs firstName, lastName, login, isActive dans table users
- [x] Schéma DB : migration enum role (admin/standard/readonly)
- [x] db.ts : createLocalUser étendu (firstName, lastName, login, role, isActive)
- [x] db.ts : authenticateLocalUser accepte login ou email
- [x] db.ts : updateUser étendu avec nouveaux champs
- [x] routers.ts : loginLocal accepte login ou email (pas seulement email)
- [x] routers.ts : middleware writeProcedure pour bloquer mutations readonly
- [x] routers.ts : updateUser étendu avec firstName, lastName, login, role, isActive
- [x] Admin.tsx : formulaire création/édition avec firstName, lastName, login, role, isActive
- [x] Login.tsx : page de choix avec logo FEHAP
- [x] LoginLocal.tsx : formulaire connexion locale avec logo FEHAP (haut) et Santinova (bas)
- [x] Seed admin : compte admin@sonum.fr / Admin2024! créé
## Correction v8b — Seed admin conforme au skill
- [x] seed-admin.mjs : créer le compte adminItinova / Itinova69! (login=adminItinova, email=adminItinova@santinova-soft.org, rôle=admin)
- [x] Nettoyage de l'ancien compte mal créé (id=180019)
- [x] Redéploiement Gitea avec seed corrigé
## Maintenance — Audit, robustesse et optimisation
- [x] Auditer les dépendances, les fichiers suivis et les artefacts inutiles
- [x] Identifier puis supprimer le code mort et les imports inutilisés sans modifier les comportements métier
- [x] Renforcer les accès et mutations sensibles avec des validations, des contrôles dautorisation et des erreurs explicites
- [x] Optimiser les calculs et rendus React identifiés comme coûteux ou répétitifs
- [x] Ajouter des commentaires ciblés pour les invariants métier et les décisions techniques non évidentes
- [x] Ajouter des tests de non-régression pour les corrections critiques
- [x] Exécuter TypeScript, les tests unitaires et le build de production avant livraison