From 7ebc0af3c7dc9cdc55f38feddab35ca7dee65164 Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Wed, 24 Sep 2025 06:13:48 +0200 Subject: [PATCH] feat: expand multi-tenant architecture and role management in TODO - Updated migration plan to include a complete user model with roles (ADMIN, MANAGER, USER) and hierarchical relationships. - Added detailed phases for implementing role-based permissions and collaborative features, enhancing user management and task assignment. - Structured UI/UX considerations for different user roles, ensuring tailored experiences and improved navigation. --- TODO.md | 91 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 74 insertions(+), 17 deletions(-) diff --git a/TODO.md b/TODO.md index b8ca787..95d152a 100644 --- a/TODO.md +++ b/TODO.md @@ -197,32 +197,89 @@ src/services/ #### **Architecture actuelle → Multi-tenant** - **Problème** : App mono-utilisateur avec données globales -- **Solution** : Transformation en app multi-utilisateurs avec isolation des données +- **Solution** : Transformation en app multi-utilisateurs avec isolation des données + système de rôles #### **Plan de migration** - [ ] **Phase 1: Authentification** - - [ ] Système de login/mot de passe (NextAuth.js ou custom) + - [ ] Système de login/mot de passe (NextAuth.js) - [ ] Gestion des sessions sécurisées - [ ] Pages de connexion/inscription/mot de passe oublié - [ ] Middleware de protection des routes -- [ ] **Phase 2: Modèle de données multi-tenant** - - [ ] Ajouter `userId` à toutes les tables (tasks, daily, tags, preferences, etc.) - - [ ] Migration des données existantes vers un utilisateur par défaut - - [ ] Contraintes de base de données pour l'isolation - - [ ] Index sur `userId` pour les performances +- [ ] **Phase 2: Modèle de données multi-tenant + Rôles** + - [ ] **Modèle User complet** + - [ ] Table `users` (id, email, password, name, role, createdAt, updatedAt) + - [ ] Enum `UserRole` : `ADMIN`, `MANAGER`, `USER` + - [ ] Champs optionnels : avatar, timezone, language + - [ ] **Relations hiérarchiques** + - [ ] Table `user_teams` pour les relations manager → users + - [ ] Champ `managerId` dans users (optionnel, référence vers un manager) + - [ ] Support des équipes multiples par utilisateur + - [ ] **Migration des données existantes** + - [ ] Créer un utilisateur admin par défaut avec toutes les données actuelles + - [ ] Ajouter `userId` à toutes les tables (tasks, daily, tags, preferences, etc.) + - [ ] Contraintes de base de données pour l'isolation + - [ ] Index sur `userId` pour les performances -- [ ] **Phase 3: Services et API** - - [ ] Modifier tous les services pour filtrer par `userId` - - [ ] Middleware d'injection automatique du `userId` dans les requêtes - - [ ] Validation que chaque utilisateur ne voit que ses données - - [ ] API d'administration (optionnel) +- [ ] **Phase 3: Système de rôles et permissions** + - [ ] **Rôle ADMIN** + - [ ] Gestion complète des utilisateurs (CRUD) + - [ ] Assignation/modification des rôles + - [ ] Accès à toutes les données système (analytics globales) + - [ ] Configuration système (intégrations Jira/TFS globales) + - [ ] Gestion des équipes et hiérarchies + - [ ] **Rôle MANAGER** + - [ ] Vue sur les tâches/daily de ses équipiers + - [ ] Assignation de tâches à ses équipiers + - [ ] Analytics d'équipe (métriques, deadlines, performance) + - [ ] Création de tâches pour son équipe + - [ ] Accès aux rapports de son équipe + - [ ] **Rôle USER** + - [ ] Accès uniquement à ses propres données + - [ ] Réception de tâches assignées par son manager + - [ ] Gestion de son daily/kanban personnel + - [ ] **Middleware de permissions** + - [ ] Validation des droits d'accès par route + - [ ] Helper functions `canAccess()`, `canManage()`, `isAdmin()` + - [ ] Protection automatique des API routes -- [ ] **Phase 4: UI et UX** - - [ ] Header avec profil utilisateur et déconnexion - - [ ] Onboarding pour nouveaux utilisateurs - - [ ] Gestion du profil utilisateur - - [ ] Partage optionnel entre utilisateurs (équipes) +- [ ] **Phase 4: Services et API avec rôles** + - [ ] **Services utilisateurs** + - [ ] `user-management.ts` : CRUD utilisateurs (admin only) + - [ ] `team-management.ts` : Gestion des équipes (admin/manager) + - [ ] `role-permissions.ts` : Logique des permissions + - [ ] **Modification des services existants** + - [ ] Tous les services filtrent par `userId` OU permissions manager + - [ ] Middleware d'injection automatique du `userId` + `userRole` + - [ ] Services analytics étendus pour les managers + - [ ] Validation que chaque utilisateur ne voit que ses données autorisées + +- [ ] **Phase 5: UI et UX multi-rôles** + - [ ] **Interface Admin** + - [ ] Page de gestion des utilisateurs (/admin/users) + - [ ] Création/modification/suppression d'utilisateurs + - [ ] Assignation des rôles et équipes + - [ ] Dashboard admin avec métriques globales + - [ ] **Interface Manager** + - [ ] Vue équipe avec tâches de tous les équipiers + - [ ] Assignation de tâches à l'équipe + - [ ] Dashboard manager avec analytics d'équipe + - [ ] Gestion des deadlines et priorités d'équipe + - [ ] **Interface commune** + - [ ] Header avec profil utilisateur, rôle et déconnexion + - [ ] Onboarding différencié par rôle + - [ ] Navigation adaptée aux permissions + - [ ] Indicateurs visuels du rôle actuel + +- [ ] **Phase 6: Fonctionnalités collaboratives** + - [ ] **Assignation de tâches** + - [ ] Managers peuvent créer et assigner des tâches + - [ ] Notifications de nouvelles tâches assignées + - [ ] Suivi du statut des tâches assignées + - [ ] **Partage et visibilité** + - [ ] Tâches partagées entre équipiers + - [ ] Commentaires et collaboration sur les tâches + - [ ] Historique des modifications par utilisateur #### **Considérations techniques** - **Base de données** : Ajouter `userId` partout + contraintes