Files
towercontrol/TODO.md
Julien Froidefond 7ebc0af3c7 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.
2025-09-24 06:13:48 +02:00

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 IntegrationService commune (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 IntegrationProvider standardisée
    • Configuration dynamique des intégrations
    • Gestion des credentials par intégration
  • Modèles de données étendus
    • PullRequest pour TFS/GitHub
    • PendingRequest pour les demandes Jira
    • ArchivedTask pour 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.tscore/database.ts
    • Corriger tous les imports internes des services
    • Corriger import dans scripts/reset-database.ts
  • Déplacer system-info.tscore/system-info.ts
    • Corriger imports dans actions/system
    • Corriger import dynamique de backup
  • Déplacer user-preferences.tscore/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.tsanalytics/analytics.ts
    • Corriger 2 imports externes (actions, components)
  • Déplacer metrics.tsanalytics/metrics.ts
    • Corriger 7 imports externes (actions, hooks, components)
  • Déplacer manager-summary.tsanalytics/manager-summary.ts
    • Corriger 3 imports externes (components, pages)
    • Corriger imports database vers ../core/database

Phase 3: Data Management

  • Déplacer backup.tsdata-management/backup.ts
    • Corriger 6 imports externes (clients, components, pages, API)
    • Corriger imports relatifs vers ../core/ et ../../lib/
  • Déplacer backup-scheduler.tsdata-management/backup-scheduler.ts
    • Corriger import dans script backup-manager.ts
    • Corriger imports relatifs entre services

Phase 4: Task Management

  • Déplacer tasks.tstask-management/tasks.ts
    • Corriger 7 imports externes (pages, API routes, actions)
    • Corriger import dans script seed-data.ts
  • Déplacer tags.tstask-management/tags.ts
    • Corriger 8 imports externes (pages, API routes, actions)
    • Corriger import dans script seed-tags.ts
  • Déplacer daily.tstask-management/daily.ts
    • Corriger 6 imports externes (pages, API routes, actions)
    • Corriger imports relatifs vers ../core/database

Phase 5: Intégrations

  • Déplacer tfs.tsintegrations/tfs.ts
    • Corriger 10 imports externes (actions, API routes, components, types)
    • Corriger imports relatifs vers ../core/
  • Déplacer services Jiraintegrations/jira/
    • jira.tsintegrations/jira/jira.ts
    • jira-scheduler.tsintegrations/jira/scheduler.ts
    • jira-analytics.tsintegrations/jira/analytics.ts
    • jira-analytics-cache.tsintegrations/jira/analytics-cache.ts
    • jira-advanced-filters.tsintegrations/jira/advanced-filters.ts
    • jira-anomaly-detection.tsintegrations/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
  • Isolation et organisation des types & interfaces
    • Analytics types (src/services/analytics/types.ts)
      • Extraire TaskType, CheckboxType de manager-summary.ts
      • Extraire KeyAccomplishment, UpcomingChallenge, ManagerSummary de manager-summary.ts
      • Créer types.ts centralisé pour le dossier analytics
      • Remplacer tous les imports par import type { ... } from './types'
    • Task Management types (src/services/task-management/types.ts)
      • Analyser quels types spécifiques manquent aux services tasks/tags/daily
      • Créer types.ts pour 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 CacheEntry de analytics-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'
    • 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
    • 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/types dans services
      • Remplacer par import type { ... } from '@/lib/types' quand applicable
      • Vérifier que les imports de valeurs restent normaux (sans type)

Points d'attention pour chaque service:

  1. Identifier tous les imports du service (grep)
  2. Déplacer le fichier vers le nouveau dossier
  3. Corriger les imports externes (actions, API, hooks, components)
  4. Corriger les imports internes entre services
  5. Tester que l'app fonctionne toujours
  6. 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.*