# TowerControl v2.0 - Gestionnaire de tâches moderne

## ✅ Phase 1: Nettoyage et architecture (TERMINÉ)

### 1.1 Configuration projet Next.js

- [x] Initialiser Next.js avec TypeScript
- [x] Configurer ESLint, Prettier
- [x] Setup structure de dossiers selon les règles du workspace
- [x] Configurer base de données (SQLite local)
- [x] Setup Prisma ORM

### 1.2 Architecture backend standalone

- [x] Créer `services/database.ts` - Pool de connexion DB
- [x] Créer `services/tasks.ts` - Service CRUD pour les tâches
- [x] Créer `lib/types.ts` - Types partagés (Task, Tag, etc.)
- [x] Nettoyer l'ancien code de synchronisation

### 1.3 API moderne et propre

- [x] `app/api/tasks/route.ts` - API CRUD complète (GET, POST, PATCH, DELETE)
- [x] Supprimer les routes de synchronisation obsolètes
- [x] Configuration moderne dans `lib/config.ts`

**Architecture finale** : App standalone avec backend propre et API REST moderne

## 🎯 Phase 2: Interface utilisateur moderne (EN COURS)

### 2.1 Système de design et composants UI

- [x] Créer les composants UI de base (Button, Input, Card, Modal, Badge)
- [x] Implémenter le système de design tech dark (couleurs, typographie, spacing)
- [x] Setup Tailwind CSS avec classes utilitaires personnalisées
- [x] Créer une palette de couleurs tech/cyberpunk

### 2.2 Composants Kanban existants (à améliorer)

- [x] `components/kanban/Board.tsx` - Tableau Kanban principal
- [x] `components/kanban/Column.tsx` - Colonnes du Kanban
- [x] `components/kanban/TaskCard.tsx` - Cartes de tâches
- [x] `components/ui/Header.tsx` - Header avec statistiques
- [x] Refactoriser les composants pour utiliser le nouveau système UI

### 2.3 Gestion des tâches (CRUD)

- [x] Formulaire de création de tâche (Modal + Form)
- [x] Création rapide inline dans les colonnes (QuickAddTask)
- [x] Formulaire d'édition de tâche (Modal + Form avec pré-remplissage)
- [x] Édition inline du titre des tâches (clic sur titre → input)
- [x] Suppression de tâche (icône discrète + API call)
- [x] Changement de statut par drag & drop (@dnd-kit)
- [x] Validation des formulaires et gestion d'erreurs

### 2.4 Gestion des tags

- [x] Créer/éditer des tags avec sélecteur de couleur
- [x] Autocomplete pour les tags existants
- [x] Suppression de tags (avec vérification des dépendances)
- [x] Affichage des tags avec couleurs personnalisées
- [x] Service tags avec CRUD complet (Prisma)
- [x] API routes /api/tags avec validation
- [x] Client HTTP et hook useTags
- [x] Composants UI (TagInput, TagDisplay, TagForm)
- [x] Intégration dans les formulaires (TagInput avec autocomplete)
- [x] Intégration dans les TaskCards (TagDisplay avec couleurs)
- [x] Contexte global pour partager les tags
- [x] Page de gestion des tags (/tags) avec interface complète
- [x] Navigation dans le Header (Kanban ↔ Tags)
- [x] Filtrage par tags (intégration dans Kanban)
- [x] Interface de filtrage complète (recherche, priorités, tags)
- [x] Logique de filtrage temps réel dans le contexte
- [x] Intégration des filtres dans KanbanBoard

### 2.5 Clients HTTP et hooks

- [x] `clients/tasks-client.ts` - Client pour les tâches (CRUD complet)
- [x] `clients/tags-client.ts` - Client pour les tags
- [x] `clients/base/http-client.ts` - Client HTTP de base
- [x] `hooks/useTasks.ts` - Hook pour la gestion des tâches (CRUD complet)
- [x] `hooks/useTags.ts` - Hook pour la gestion des tags
- [x] Drag & drop avec @dnd-kit (intégré directement dans Board.tsx)
- [x] Gestion des erreurs et loading states
- [x] Architecture SSR + hydratation client optimisée

### 2.6 Fonctionnalités Kanban avancées

- [x] Drag & drop entre colonnes (@dnd-kit avec React 19)
- [x] Drag & drop optimiste (mise à jour immédiate + rollback si erreur)
- [x] Filtrage par statut/priorité/assigné
- [x] Recherche en temps réel dans les tâches
- [x] Interface de filtrage complète (KanbanFilters.tsx)
- [x] Logique de filtrage dans TasksContext
- [x] Tri des tâches (date, priorité, alphabétique)

### 2.7 Système de thèmes (clair/sombre)

- [x] Créer le contexte de thème (ThemeContext + ThemeProvider)
- [x] Ajouter toggle de thème dans le Header (bouton avec icône soleil/lune)
- [x] Définir les variables CSS pour le thème clair
- [x] Adapter tous les composants UI pour supporter les deux thèmes
- [x] Modifier la palette de couleurs pour le mode clair
- [x] Adapter les composants Kanban (Board, TaskCard, Column)
- [x] Adapter les formulaires et modales
- [x] Adapter la page de gestion des tags
- [x] Sauvegarder la préférence de thème (localStorage)
- [x] Configuration par défaut selon préférence système (prefers-color-scheme)

## 📊 Phase 3: Intégrations et analytics (Priorité 3)

### 3.1 Gestion du Daily

- [x] Créer `services/daily.ts` - Service de gestion des daily notes
- [x] Modèle de données Daily (date, checkboxes hier/aujourd'hui)
- [x] Interface Daily avec sections "Hier" et "Aujourd'hui"
- [x] Checkboxes interactives avec état coché/non-coché
- [x] Liaison optionnelle checkbox ↔ tâche existante
- [x] Cocher une checkbox NE change PAS le statut de la tâche liée
- [x] Navigation par date (daily précédent/suivant)
- [x] Auto-création du daily du jour si inexistant
- [x] UX améliorée : édition au clic, focus persistant, input large
- [x] Vue calendar/historique des dailies

### 3.2 Intégration Jira Cloud

- [x] Créer `services/jira.ts` - Service de connexion à l'API Jira Cloud
- [x] Configuration Jira (URL, email, API token) dans `lib/config.ts`
- [x] Authentification Basic Auth (email + API token)
- [x] Récupération des tickets assignés à l'utilisateur
- [x] Mapping des statuts Jira vers statuts internes (todo, in_progress, done, etc.)
- [x] Synchronisation unidirectionnelle (Jira → local uniquement)
- [x] Gestion des diffs - ne pas écraser les modifications locales
- [x] Style visuel distinct pour les tâches Jira (bordure spéciale)
- [x] Métadonnées Jira (projet, clé, assignee) dans la base
- [x] Possibilité d'affecter des tags locaux aux tâches Jira
- [x] Interface de configuration dans les paramètres
- [x] Synchronisation manuelle via bouton (pas d'auto-sync)
- [x] Logs de synchronisation pour debug
- [x] Gestion des erreurs et timeouts API

### 3.3 Page d'accueil/dashboard

- [x] Créer une page d'accueil moderne avec vue d'ensemble
- [x] Widgets de statistiques (tâches par statut, priorité, etc.)
- [x] Déplacer kanban vers /kanban et créer nouveau dashboard à la racine
- [x] Actions rapides vers les différentes sections
- [x] Affichage des tâches récentes
- [x] Graphiques de productivité (tâches complétées par jour/semaine)
- [x] Indicateurs de performance personnels
- [x] Intégration des analytics dans le dashboard

### 3.4 Analytics et métriques

- [x] `services/analytics.ts` - Calculs statistiques
- [x] Métriques de productivité (vélocité, temps moyen, etc.)
- [x] Graphiques avec Recharts (tendances, vélocité, distribution)
- [x] Composants de graphiques (CompletionTrend, Velocity, Priority, Weekly)
- [x] Insights automatiques et métriques visuelles

## Autre Todo

- [x] Avoir un bouton pour réduire/agrandir la font des taches dans les kanban (swimlane et classique)
- [x] Refactorer les couleurs des priorités dans un seul endroit
- [x] Settings synchro Jira : ajouter une liste de projet à ignorer, doit etre pris en compte par le service bien sur
- [x] Faire des pages à part entière pour les sous-pages de la page config + SSR
- [x] Afficher dans l'édition de task les todo reliés. Pouvoir en ajouter directement avec une date ou sans.
- [x] Dans les titres de colonnes des swimlanes, je n'ai pas les couleurs des statuts
- [x] Système de sauvegarde automatique base de données
  - [x] Sauvegarde automatique configurable (hourly/daily/weekly)
  - [x] Configuration complète dans les paramètres avec interface dédiée
  - [x] Rotation automatique des sauvegardes (configurable)
  - [x] Format de sauvegarde avec timestamp + compression optionnelle
  - [x] Interface complète pour visualiser et gérer les sauvegardes
  - [x] CLI d'administration pour les opérations avancées
  - [x] API REST complète pour la gestion programmatique
  - [x] Vérification d'intégrité et restauration sécurisée
  - [x] Option de restauration depuis une sauvegarde sélectionnée

## 🔧 Phase 4: Server Actions - Migration API Routes (Nouveau)

### 4.1 Migration vers Server Actions - Actions rapides

**Objectif** : Remplacer les API routes par des server actions pour les actions simples et fréquentes

#### Actions TaskCard (Priorité 1)

- [x] Créer `actions/tasks.ts` avec server actions de base
- [x] `updateTaskStatus(taskId, status)` - Changement de statut
- [x] `updateTaskTitle(taskId, title)` - Édition inline du titre
- [x] `deleteTask(taskId)` - Suppression de tâche
- [x] Modifier `TaskCard.tsx` pour utiliser server actions directement
- [x] Remplacer les props callbacks par calls directs aux actions
- [x] Intégrer `useTransition` pour les loading states natifs
- [x] Tester la revalidation automatique du cache
- [x] **Nettoyage** : Supprimer props obsolètes dans tous les composants Kanban
- [x] **Nettoyage** : Simplifier `tasks-client.ts` (garder GET et POST uniquement)
- [x] **Nettoyage** : Modifier `useTasks.ts` pour remplacer mutations par server actions

#### Actions Daily (Priorité 2)

- [x] Créer `actions/daily.ts` pour les checkboxes
- [x] `toggleCheckbox(checkboxId)` - Toggle état checkbox
- [x] `addCheckboxToDaily(dailyId, content)` - Ajouter checkbox
- [x] `updateCheckboxContent(checkboxId, content)` - Éditer contenu
- [x] `deleteCheckbox(checkboxId)` - Supprimer checkbox
- [x] `reorderCheckboxes(dailyId, checkboxIds)` - Réorganiser
- [x] Modifier les composants Daily pour utiliser server actions
- [x] **Nettoyage** : Supprimer routes `/api/daily/checkboxes` (POST, PATCH, DELETE)
- [x] **Nettoyage** : Simplifier `daily-client.ts` (garder GET uniquement)
- [x] **Nettoyage** : Modifier hook `useDaily.ts` pour `useTransition`

#### Actions User Preferences (Priorité 3)

- [x] Créer `actions/preferences.ts` pour les toggles
- [x] `updateViewPreferences(preferences)` - Préférences d'affichage
- [x] `updateKanbanFilters(filters)` - Filtres Kanban
- [x] `updateColumnVisibility(columns)` - Visibilité colonnes
- [x] `updateTheme(theme)` - Changement de thème
- [x] Remplacer les hooks par server actions directes
- [x] **Nettoyage** : Supprimer routes `/api/user-preferences/*` (PUT/PATCH)
- [x] **Nettoyage** : Simplifier `user-preferences-client.ts` (GET uniquement)
- [x] **Nettoyage** : Modifier `UserPreferencesContext.tsx` pour server actions

#### Actions Tags (Priorité 4)

- [x] Créer `actions/tags.ts` pour la gestion tags
- [x] `createTag(name, color)` - Création tag
- [x] `updateTag(tagId, data)` - Modification tag
- [x] `deleteTag(tagId)` - Suppression tag
- [x] Modifier les formulaires tags pour server actions
- [x] **Nettoyage** : Supprimer routes `/api/tags` (POST, PATCH, DELETE)
- [x] **Nettoyage** : Simplifier `tags-client.ts` (GET et search uniquement)
- [x] **Nettoyage** : Modifier `useTags.ts` pour server actions directes

#### Migration progressive avec nettoyage immédiat

**Principe** : Pour chaque action migrée → nettoyage immédiat des routes et code obsolètes

### 4.2 Conservation API Routes - Endpoints complexes

**À GARDER en API routes** (pas de migration)

#### Endpoints de fetching initial

- ✅ `GET /api/tasks` - Récupération avec filtres complexes
- ✅ `GET /api/daily` - Vue daily avec logique métier
- ✅ `GET /api/tags` - Liste tags avec recherche
- ✅ `GET /api/user-preferences` - Préférences initiales

#### Endpoints d'intégration externe

- ✅ `POST /api/jira/sync` - Synchronisation Jira complexe
- ✅ `GET /api/jira/logs` - Logs de synchronisation
- ✅ Configuration Jira (formulaires complexes)

#### Raisons de conservation

- **API publique** : Réutilisable depuis mobile/externe
- **Logique complexe** : Synchronisation, analytics, rapports
- **Monitoring** : Besoin de logs HTTP séparés
- **Real-time futur** : WebSockets/SSE non compatibles server actions

### 4.3 Architecture hybride cible

```
Actions rapides → Server Actions directes
├── TaskCard actions (status, title, delete)
├── Daily checkboxes (toggle, add, edit)
├── Preferences toggles (theme, filters)
└── Tags CRUD (create, update, delete)

Endpoints complexes → API Routes conservées
├── Fetching initial avec filtres
├── Intégrations externes (Jira, webhooks)
├── Analytics et rapports
└── Future real-time features
```

### 4.4 Avantages attendus

- **🚀 Performance** : Pas de sérialisation HTTP pour actions rapides
- **🔄 Cache intelligent** : `revalidatePath()` automatique
- **📦 Bundle reduction** : Moins de code client HTTP
- **⚡ UX** : `useTransition` loading states natifs
- **🎯 Simplicité** : Moins de boilerplate pour actions simples

## 📊 Phase 5: Surveillance Jira - Analytics d'équipe (Priorité 5)

### 5.1 Configuration projet Jira

- [x] Ajouter champ `projectKey` dans la config Jira (settings)
- [x] Interface pour sélectionner le projet à surveiller
- [x] Validation de l'existence du projet via API Jira
- [x] Sauvegarde de la configuration projet dans les préférences
- [x] Test de connexion spécifique au projet configuré

### 5.2 Service d'analytics Jira

- [x] Créer `services/jira-analytics.ts` - Métriques avancées
- [x] Récupération des tickets du projet (toute l'équipe, pas seulement assignés)
- [x] Calculs de vélocité d'équipe (story points par sprint)
- [x] Métriques de cycle time (temps entre statuts)
- [x] Analyse de la répartition des tâches par assignee
- [x] Détection des goulots d'étranglement (tickets bloqués)
- [x] Historique des sprints et burndown charts
- [x] Cache intelligent des métriques (éviter API rate limits)

### 5.3 Page de surveillance `/jira-dashboard`

- [x] Créer page dédiée avec navigation depuis settings Jira
- [x] Vue d'ensemble du projet (nom, lead, statut global)
- [x] Sélecteur de période (7j, 30j, 3 mois, sprint actuel)
- [x] Graphiques de vélocité avec Recharts
- [x] Heatmap d'activité de l'équipe
- [x] Timeline des releases et milestones
- [x] Alertes visuelles (tickets en retard, sprints déviants)

### 5.4 Métriques et graphiques avancés

- [x] **Vélocité** : Story points complétés par sprint
- [x] **Burndown chart** : Progression vs planifié
- [x] **Cycle time** : Temps moyen par type de ticket
- [x] **Throughput** : Nombre de tickets complétés par période
- [x] **Work in Progress** : Répartition par statut et assignee
- [x] **Quality metrics** : Ratio bugs/features, retours clients
- [x] **Predictability** : Variance entre estimé et réel
- [x] **Collaboration** : Matrice d'interactions entre assignees

### 5.5 Fonctionnalités de surveillance

- [x] **Cache serveur intelligent** : Cache en mémoire avec invalidation manuelle
- [x] **Export des métriques** : Export CSV/JSON avec téléchargement automatique
- [x] **Comparaison inter-sprints** : Tendances, prédictions et recommandations
- [x] Détection automatique d'anomalies (alertes)
- [x] Filtrage par composant, version, type de ticket
- [x] Vue détaillée par sprint avec drill-down
- [x] ~~Intégration avec les daily notes (mentions des blockers)~~ (supprimé)

### 📁 Refactoring structure des dossiers (PRIORITÉ HAUTE)

#### **Problème actuel**

- Structure mixte : `src/app/`, `src/actions/`, `src/contexts/` mais `components/`, `lib/`, `services/`, etc. à la racine
- Alias TypeScript incohérents dans `tsconfig.json`
- Non-conformité avec les bonnes pratiques Next.js 13+ App Router

#### **Plan de migration**

- [x] **Phase 1: Migration des dossiers**
  - [x] `mv components/ src/components/`
  - [x] `mv lib/ src/lib/`
  - [x] `mv hooks/ src/hooks/`
  - [x] `mv clients/ src/clients/`
  - [x] `mv services/ src/services/`

- [x] **Phase 2: Mise à jour tsconfig.json**

  ```json
  "paths": {
    "@/*": ["./src/*"]
    // Supprimer les alias spécifiques devenus inutiles
  }
  ```

- [x] **Phase 3: Correction des imports**
  - [x] Tous les imports `@/services/*` → `@/services/*` (déjà OK)
  - [x] Tous les imports `@/lib/*` → `@/lib/*` (déjà OK)
  - [x] Tous les imports `@/components/*` → `@/components/*` (déjà OK)
  - [x] Tous les imports `@/clients/*` → `@/clients/*` (déjà OK)
  - [x] Tous les imports `@/hooks/*` → `@/hooks/*` (déjà OK)
  - [x] Vérifier les imports relatifs dans les scripts/

- [x] **Phase 4: Mise à jour des règles Cursor**
  - [x] Règle "services" : Mettre à jour les exemples avec `src/services/`
  - [x] Règle "components" : Mettre à jour avec `src/components/`
  - [x] Règle "clients" : Mettre à jour avec `src/clients/`
  - [x] Vérifier tous les liens MDC dans les règles

- [x] **Phase 5: Tests et validation**
  - [x] `npm run build` - Vérifier que le build passe
  - [x] `npm run dev` - Vérifier que le dev fonctionne
  - [x] `npm run lint` - Vérifier ESLint
  - [x] `npx tsc --noEmit` - Vérifier TypeScript
  - [x] Tester les fonctionnalités principales

#### **Structure finale attendue**

```
src/
├── app/           # Pages Next.js (déjà OK)
├── actions/       # Server Actions (déjà OK)
├── contexts/      # React Contexts (déjà OK)
├── components/    # Composants React (à déplacer)
├── lib/           # Utilitaires et types (à déplacer)
├── hooks/         # Hooks React (à déplacer)
├── clients/       # Clients HTTP (à déplacer)
└── services/      # Services backend (à déplacer)

## Autre Todos
- [x] Synchro Jira auto en background timé comme pour la synchro de sauvegarde
- [x] refacto des getallpreferences en frontend : ca devrait eter un contexte dans le layout qui balance serverside dans le hook
- [x] backups : ne backuper que si il y a eu un changement entre le dernier backup et la base actuelle
- [x] refacto des dates avec le utils qui pour l'instant n'est pas utilisé
- [x] split de certains gros composants.
- [x] Page jira-dashboard : onglets analytics avancés et Qualité et collaboration : les charts sortent des cards; il faut reprendre la UI pour que ce soit consistant.
- [x] Page Daily : les mots aujourd'hui et hier ne fonctionnent dans les titres que si c'est vraiment aujourd'hui :)
- [x] Désactiver le hover sur les taskCard
- [x] Refacto et intégration design : mode sombre et clair sont souvent mal généré par défaut
- [x] Personnalisation : couleurs <!-- Image de fond personnalisée implémentée -->


## 🔄 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) ✅
- [x] **Déplacer `database.ts`** → `core/database.ts`
  - [x] Corriger tous les imports internes des services
  - [x] Corriger import dans scripts/reset-database.ts
- [x] **Déplacer `system-info.ts`** → `core/system-info.ts`
  - [x] Corriger imports dans actions/system
  - [x] Corriger import dynamique de backup
- [x] **Déplacer `user-preferences.ts`** → `core/user-preferences.ts`
  - [x] Corriger 13 imports externes (actions, API routes, pages)
  - [x] Corriger 3 imports internes entre services

### Phase 2: Analytics & Métriques ✅
- [x] **Déplacer `analytics.ts`** → `analytics/analytics.ts`
  - [x] Corriger 2 imports externes (actions, components)
- [x] **Déplacer `metrics.ts`** → `analytics/metrics.ts`
  - [x] Corriger 7 imports externes (actions, hooks, components)
- [x] **Déplacer `manager-summary.ts`** → `analytics/manager-summary.ts`
  - [x] Corriger 3 imports externes (components, pages)
  - [x] Corriger imports database vers ../core/database

### Phase 3: Data Management ✅
- [x] **Déplacer `backup.ts`** → `data-management/backup.ts`
  - [x] Corriger 6 imports externes (clients, components, pages, API)
  - [x] Corriger imports relatifs vers ../core/ et ../../lib/
- [x] **Déplacer `backup-scheduler.ts`** → `data-management/backup-scheduler.ts`
  - [x] Corriger import dans script backup-manager.ts
  - [x] Corriger imports relatifs entre services

### Phase 4: Task Management ✅
- [x] **Déplacer `tasks.ts`** → `task-management/tasks.ts`
  - [x] Corriger 7 imports externes (pages, API routes, actions)
  - [x] Corriger import dans script seed-data.ts
- [x] **Déplacer `tags.ts`** → `task-management/tags.ts`
  - [x] Corriger 8 imports externes (pages, API routes, actions)
  - [x] Corriger import dans script seed-tags.ts
- [x] **Déplacer `daily.ts`** → `task-management/daily.ts`
  - [x] Corriger 6 imports externes (pages, API routes, actions)
  - [x] Corriger imports relatifs vers ../core/database

### Phase 5: Intégrations ✅
- [x] **Déplacer `tfs.ts`** → `integrations/tfs.ts`
  - [x] Corriger 10 imports externes (actions, API routes, components, types)
  - [x] Corriger imports relatifs vers ../core/
- [x] **Déplacer services Jira** → `integrations/jira/`
  - [x] `jira.ts` → `integrations/jira/jira.ts`
  - [x] `jira-scheduler.ts` → `integrations/jira/scheduler.ts`
  - [x] `jira-analytics.ts` → `integrations/jira/analytics.ts`
  - [x] `jira-analytics-cache.ts` → `integrations/jira/analytics-cache.ts`
  - [x] `jira-advanced-filters.ts` → `integrations/jira/advanced-filters.ts`
  - [x] `jira-anomaly-detection.ts` → `integrations/jira/anomaly-detection.ts`
  - [x] Corriger 18 imports externes (actions, API routes, hooks, components)
  - [x] Corriger imports relatifs entre services Jira

## Phase 6: Cleaning
- [x] **Uniformiser les imports absolus** dans tous les services
  - [x] Remplacer tous les imports relatifs `../` par `@/services/...`
  - [x] Corriger l'import dynamique dans system-info.ts
  - [x] 12 imports relatifs → imports absolus cohérents

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

```

### 🔄 Intégration TFS/Azure DevOps

- [x] **Lecture des Pull Requests TFS** : Synchronisation des PR comme tâches <!-- Implémenté le 22/09/2025 -->
  - [x] PR arrivent en backlog avec filtrage par team project
  - [x] Synchronisation aussi riche que Jira (statuts, assignés, commentaires)
  - [x] Filtrage par team project, repository, auteur
- [x] **Architecture plug-and-play pour intégrations** <!-- Implémenté le 22/09/2025 -->
  - [x] Refactoriser pour interfaces génériques d'intégration
  - [x] Interface `IntegrationService` commune (Jira, TFS, GitHub, etc.)
  - [x] UI générique de configuration des intégrations
  - [x] Système de plugins pour ajouter facilement de nouveaux services

### 📋 Daily - Gestion des tâches non cochées

- [x] **Section des tâches en attente** <!-- Implémenté le 21/09/2025 -->
  - [x] Liste de toutes les todos non cochées (historique complet)
  - [x] Filtrage par date (7/14/30 jours), catégorie (tâches/réunions), ancienneté
  - [x] Action "Archiver" pour les tâches ni résolues ni à faire
  - [x] Section repliable dans la page Daily (sous les sections Hier/Aujourd'hui)
  - [x] **Bouton "Déplacer à aujourd'hui"** pour les tâches non résolues <!-- Implémenté le 22/09/2025 avec server action -->
  - [x] Indicateurs visuels d'ancienneté (couleurs vert→rouge)
  - [x] Actions par tâche : Cocher, Archiver, Supprimer
- [x] **Statut "Archivé" basique** <!-- Implémenté le 21/09/2025 -->
  - [x] Marquage textuel [ARCHIVÉ] dans le texte de la tâche
  - [x] 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)

---

## 🖼️ **IMAGE DE FOND PERSONNALISÉE** ✅ TERMINÉ

### **Fonctionnalités implémentées :**

- [x] **Sélecteur d'images de fond** dans les paramètres généraux
- [x] **Images prédéfinies** : dégradés bleu, violet, coucher de soleil, océan, forêt
- [x] **URL personnalisée** : possibilité d'ajouter une image via URL
- [x] **Aperçu en temps réel** de l'image sélectionnée
- [x] **Application globale** : l'image s'applique sur toutes les pages
- [x] **Optimisation visuelle** : effet de flou et transparence pour la lisibilité
- [x] **Sauvegarde persistante** : préférence sauvegardée en base de données
- [x] **Interface intuitive** : sélection facile avec aperçus visuels

### **Architecture technique :**

- **Types** : `backgroundImage` ajouté à `ViewPreferences`
- **Service** : `userPreferencesService` mis à jour
- **Actions** : `setBackgroundImage` server action créée
- **Composant** : `BackgroundImageSelector` avec presets et URL personnalisée
- **Contexte** : `BackgroundContext` pour l'application globale
- **Styles** : CSS optimisé pour la lisibilité avec images de fond

## 🔄 **SCHEDULER TFS** ✅ TERMINÉ

### **Fonctionnalités implémentées :**

- [x] **Scheduler TFS automatique** basé sur le modèle Jira
- [x] **Configuration dans UserPreferences** : `tfsAutoSync` et `tfsSyncInterval`
- [x] **Intervalles configurables** : hourly, daily, weekly
- [x] **Auto-start du scheduler** au démarrage de l'application
- [x] **Migration douce** des champs scheduler en base de données
- [x] **Gestion des erreurs** et validation de configuration
- [x] **Status et monitoring** du scheduler

### **Architecture technique :**

- **Service** : `TfsScheduler` dans `src/services/integrations/tfs/scheduler.ts`
- **Configuration** : Champs `tfsAutoSync` et `tfsSyncInterval` dans `UserPreferences`
- **Migration** : Méthode `ensureTfsSchedulerFields()` pour compatibilité
- **Types** : Interface `TfsSchedulerConfig` avec validation
- **Singleton** : Instance globale `tfsScheduler` avec auto-start
- **Logs** : Console logs détaillés pour monitoring

### **Différences avec Jira :**

- **Pas de board d'équipe** : TFS se concentre sur les Pull Requests individuelles
- **Configuration simplifiée** : Pas de `ignoredProjects`, mais `ignoredRepositories`
- **Focus utilisateur** : Synchronisation basée sur les PRs assignées à l'utilisateur

### **Interface utilisateur :**

- **TfsSchedulerConfig** : Configuration du scheduler automatique avec statut et contrôles
- **TfsSync** : Interface de synchronisation manuelle avec détails et statistiques
- **API Routes** : `/api/tfs/scheduler-config` et `/api/tfs/scheduler-status` pour la gestion
- **Même format que Jira** : Interface identique avec badges de statut, contrôles et informations

---

## 🎨 **REFACTORING THÈME & PERSONNALISATION COULEURS**

### **Phase 1: Nettoyage Architecture Thème**

- [x] **Décider de la stratégie** : CSS Variables vs Tailwind Dark Mode vs Hybride <!-- CSS Variables choisi -->
- [x] **Configurer tailwind.config.js** avec `darkMode: 'class'` si nécessaire <!-- Annulé : CSS Variables pur -->
- [x] **Supprimer la double application** du thème (layout.tsx + ThemeContext + UserPreferencesContext) <!-- ThemeContext est maintenant la source unique -->
- [x] **Refactorer les CSS variables** : `:root` pour défaut, `.dark/.light` pour override <!-- Architecture CSS propre avec :root neutre -->
- [x] **Nettoyer les composants** : supprimer classes `dark:` hardcodées, utiliser uniquement CSS variables <!-- TERMINÉ : toutes les occurrences supprimées -->
- [ ] **Corriger les problèmes d'hydration** mismatch et flashs de thème
- [ ] **Créer un système de design cohérent** avec tokens de couleur

---
