- 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.
14 KiB
14 KiB
TowerControl v2.0 - Gestionnaire de tâches moderne
Autre Todos
- Désactiver le hover sur les taskCard
🔧 Phase 6: Fonctionnalités avancées (Priorité 6)
6.1 Gestion avancée des tâches
- Actions en lot (sélection multiple)
- Sous-tâches et hiérarchie
- Dates d'échéance et rappels
- Assignation et collaboration
- Templates de tâches
6.2 Personnalisation et thèmes
- Mode sombre/clair
- Personnalisation des couleurs
- Configuration des colonnes Kanban
- Préférences utilisateur
🚀 Phase 7: Intégrations futures (Priorité 7)
7.1 Intégrations externes (optionnel)
- Import/Export depuis d'autres outils
- API webhooks pour intégrations
- Synchronisation cloud (optionnel)
- Notifications push
7.2 Optimisations et performance
- Optimisation des requêtes DB
- Pagination et virtualisation
- Cache côté client
- PWA et mode offline
🚀 Nouvelles idées & fonctionnalités futures
🔄 Intégration TFS/Azure DevOps
- Lecture des Pull Requests TFS : Synchronisation des PR comme tâches
- PR arrivent en backlog avec filtrage par team project
- Synchronisation aussi riche que Jira (statuts, assignés, commentaires)
- Filtrage par team project, repository, auteur
- Architecture plug-and-play pour intégrations
- Refactoriser pour interfaces génériques d'intégration
- Interface
IntegrationServicecommune (Jira, TFS, GitHub, etc.) - UI générique de configuration des intégrations
- Système de plugins pour ajouter facilement de nouveaux services
📋 Daily - Gestion des tâches non cochées
- Section des tâches en attente
- Liste de toutes les todos non cochées (historique complet)
- Filtrage par date (7/14/30 jours), catégorie (tâches/réunions), ancienneté
- Action "Archiver" pour les tâches ni résolues ni à faire
- Section repliable dans la page Daily (sous les sections Hier/Aujourd'hui)
- Bouton "Déplacer à aujourd'hui" pour les tâches non résolues
- Indicateurs visuels d'ancienneté (couleurs vert→rouge)
- Actions par tâche : Cocher, Archiver, Supprimer
- Statut "Archivé" basique
- Marquage textuel [ARCHIVÉ] dans le texte de la tâche
- Interface pour voir les tâches archivées (visuellement distinctes)
- Possibilité de désarchiver une tâche
- Champ dédié en base de données (actuellement via texte)
🎯 Jira - Suivi des demandes en attente
- Page "Jiras en attente"
- Liste des Jiras créés par moi mais non assignés à mon équipe
- Suivi des demandes formulées à d'autres équipes
- Filtrage par projet, équipe cible, ancienneté
- Nouveau modèle de données
- Table séparée pour les "demandes en attente" (différent des tâches Kanban)
- Champs spécifiques : demandeur, équipe cible, statut de traitement
- Notifications quand une demande change de statut
🏗️ Architecture & technique
- Système d'intégrations modulaire
- Interface
IntegrationProviderstandardisée - Configuration dynamique des intégrations
- Gestion des credentials par intégration
- Interface
- Modèles de données étendus
PullRequestpour TFS/GitHubPendingRequestpour les demandes JiraArchivedTaskpour les daily archivées
- UI générique
- Composants réutilisables pour toutes les intégrations
- Configuration unifiée des filtres et synchronisations
- Dashboard multi-intégrations
🔄 Refactoring Services par Domaine
Organisation cible des services:
src/services/
├── core/ # Services fondamentaux
├── analytics/ # Analytics et métriques
├── data-management/# Backup, système, base
├── integrations/ # Services externes
├── task-management/# Gestion des tâches
Phase 1: Services Core (infrastructure) ✅
- Déplacer
database.ts→core/database.ts- Corriger tous les imports internes des services
- Corriger import dans scripts/reset-database.ts
- Déplacer
system-info.ts→core/system-info.ts- Corriger imports dans actions/system
- Corriger import dynamique de backup
- Déplacer
user-preferences.ts→core/user-preferences.ts- Corriger 13 imports externes (actions, API routes, pages)
- Corriger 3 imports internes entre services
Phase 2: Analytics & Métriques ✅
- Déplacer
analytics.ts→analytics/analytics.ts- Corriger 2 imports externes (actions, components)
- Déplacer
metrics.ts→analytics/metrics.ts- Corriger 7 imports externes (actions, hooks, components)
- Déplacer
manager-summary.ts→analytics/manager-summary.ts- Corriger 3 imports externes (components, pages)
- Corriger imports database vers ../core/database
Phase 3: Data Management ✅
- Déplacer
backup.ts→data-management/backup.ts- Corriger 6 imports externes (clients, components, pages, API)
- Corriger imports relatifs vers ../core/ et ../../lib/
- Déplacer
backup-scheduler.ts→data-management/backup-scheduler.ts- Corriger import dans script backup-manager.ts
- Corriger imports relatifs entre services
Phase 4: Task Management ✅
- Déplacer
tasks.ts→task-management/tasks.ts- Corriger 7 imports externes (pages, API routes, actions)
- Corriger import dans script seed-data.ts
- Déplacer
tags.ts→task-management/tags.ts- Corriger 8 imports externes (pages, API routes, actions)
- Corriger import dans script seed-tags.ts
- Déplacer
daily.ts→task-management/daily.ts- Corriger 6 imports externes (pages, API routes, actions)
- Corriger imports relatifs vers ../core/database
Phase 5: Intégrations ✅
- Déplacer
tfs.ts→integrations/tfs.ts- Corriger 10 imports externes (actions, API routes, components, types)
- Corriger imports relatifs vers ../core/
- Déplacer services Jira →
integrations/jira/jira.ts→integrations/jira/jira.tsjira-scheduler.ts→integrations/jira/scheduler.tsjira-analytics.ts→integrations/jira/analytics.tsjira-analytics-cache.ts→integrations/jira/analytics-cache.tsjira-advanced-filters.ts→integrations/jira/advanced-filters.tsjira-anomaly-detection.ts→integrations/jira/anomaly-detection.ts- Corriger 18 imports externes (actions, API routes, hooks, components)
- Corriger imports relatifs entre services Jira
Phase 6: Cleaning
- Uniformiser les imports absolus dans tous les services
- Remplacer tous les imports relatifs
../par@/services/... - Corriger l'import dynamique dans system-info.ts
- 12 imports relatifs → imports absolus cohérents
- Remplacer tous les imports relatifs
- Isolation et organisation des types & interfaces
- Analytics types (
src/services/analytics/types.ts)- Extraire
TaskType,CheckboxTypedemanager-summary.ts - Extraire
KeyAccomplishment,UpcomingChallenge,ManagerSummarydemanager-summary.ts - Créer
types.tscentralisé pour le dossier analytics - Remplacer tous les imports par
import type { ... } from './types'
- Extraire
- Task Management types (
src/services/task-management/types.ts)- Analyser quels types spécifiques manquent aux services tasks/tags/daily
- Créer
types.tspour les types métier spécifiques au task-management - Uniformiser les imports avec
import type { ... } from './types'
- Jira Integration types (
src/services/integrations/jira/types.ts)- Extraire
CacheEntrydeanalytics-cache.ts - Créer types spécifiques aux services Jira (configs, cache, anomalies)
- Centraliser les types d'intégration Jira
- Uniformiser les imports avec
import type { ... } from './types'
- Extraire
- TFS Integration types (
src/services/integrations/types.ts)- Analyser les types spécifiques à TFS dans
tfs.ts - Créer types d'intégration TFS si nécessaire
- Préparer structure extensible pour futures intégrations
- Analyser les types spécifiques à TFS dans
- Core services types (
src/services/core/types.ts)- Analyser si des types spécifiques aux services core sont nécessaires
- Types pour database, system-info, user-preferences
- Conversion des imports en
import type- Analyser tous les imports de types depuis
@/lib/typesdans services - Remplacer par
import type { ... } from '@/lib/types'quand applicable - Vérifier que les imports de valeurs restent normaux (sans
type)
- Analyser tous les imports de types depuis
- Analytics types (
Points d'attention pour chaque service:
- Identifier tous les imports du service (grep)
- Déplacer le fichier vers le nouveau dossier
- Corriger les imports externes (actions, API, hooks, components)
- Corriger les imports internes entre services
- Tester que l'app fonctionne toujours
- Commit le déplacement d'un service à la fois
### 👥 Gestion multi-utilisateurs (PROJET MAJEUR)
#### **Architecture actuelle → Multi-tenant**
- **Problème** : App mono-utilisateur avec données globales
- **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)
- [ ] 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 + 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: 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: 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
- **Sécurité** : Validation côté serveur de l'isolation des données
- **Performance** : Index sur `userId`, pagination pour gros volumes
- **Migration** : Script de migration des données existantes
---
*Focus sur l'expérience utilisateur et le design moderne. App standalone prête pour évoluer vers une plateforme d'intégration complète.*