Files
towercontrol/TODO.md
Julien Froidefond 88ab8c9334 feat: complete Phase 5 of service refactoring
- Marked tasks in `TODO.md` as completed for moving TFS and Jira services to the `integrations` directory and correcting imports across the codebase.
- Updated imports in various action files, API routes, and components to reflect the new structure.
- Removed obsolete `jira-advanced-filters.ts`, `jira-analytics.ts`, `jira-analytics-cache.ts`, `jira-anomaly-detection.ts`, `jira-scheduler.ts`, `jira.ts`, and `tfs.ts` files to streamline the codebase.
- Added new tasks in `TODO.md` for future cleaning and organization of service imports.
2025-09-23 10:32:25 +02:00

9.4 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

  • Les imports des services dans les services : pourquoi ne pas utiliser @/services/... ?
  • Les types & interfaces dans services : j'aimerai isoler les types dans des fihiers séparés et revoir les imports; par dossier un par un. Tant qu'à faire, il faudrait qu'on fasse toujours des "import type {} from ..." (ajouter le mot type sur l'import des types)

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

#### **Plan de migration**
- [ ] **Phase 1: Authentification**
  - [ ] Système de login/mot de passe (NextAuth.js ou custom)
  - [ ] 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 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 4: UI et UX**
  - [ ] Header avec profil utilisateur et déconnexion
  - [ ] Onboarding pour nouveaux utilisateurs
  - [ ] Gestion du profil utilisateur
  - [ ] Partage optionnel entre utilisateurs (équipes)

#### **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.*