- Updated TODO.md to include detailed tasks for Jira project configuration, analytics service, and dashboard page. - Added advanced metrics and monitoring functionalities, including velocity calculations, cycle time analysis, and automated anomaly detection. - Introduced new API routes and components for enhanced data handling and visualization.
376 lines
16 KiB
Markdown
376 lines
16 KiB
Markdown
# 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
|
|
- [ ] Créer une page d'accueil moderne avec vue d'ensemble
|
|
- [ ] Widgets de statistiques (tâches par statut, priorité, etc.)
|
|
- [ ] Graphiques de productivité (tâches complétées par jour/semaine)
|
|
- [ ] Indicateurs de performance personnels
|
|
|
|
### 3.4 Analytics et métriques
|
|
- [ ] `services/analytics.ts` - Calculs statistiques
|
|
- [ ] Métriques de productivité (vélocité, temps moyen, etc.)
|
|
- [ ] Graphiques avec Chart.js ou Recharts
|
|
- [ ] Export des données en CSV/JSON
|
|
|
|
## 🔧 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)
|
|
- [ ] Créer `actions/tasks.ts` avec server actions de base
|
|
- [ ] `updateTaskStatus(taskId, status)` - Changement de statut
|
|
- [ ] `updateTaskTitle(taskId, title)` - Édition inline du titre
|
|
- [ ] `deleteTask(taskId)` - Suppression de tâche
|
|
- [ ] Modifier `TaskCard.tsx` pour utiliser server actions directement
|
|
- [ ] Remplacer les props callbacks par calls directs aux actions
|
|
- [ ] Intégrer `useTransition` pour les loading states natifs
|
|
- [ ] Tester la revalidation automatique du cache
|
|
- [ ] **Nettoyage** : Supprimer `PATCH /api/tasks` et `DELETE /api/tasks`
|
|
- [ ] **Nettoyage** : Simplifier `tasks-client.ts` (garder GET et POST uniquement)
|
|
- [ ] **Nettoyage** : Modifier `useTasks.ts` pour remplacer mutations par server actions
|
|
|
|
#### Actions Daily (Priorité 2)
|
|
- [ ] Créer `actions/daily.ts` pour les checkboxes
|
|
- [ ] `toggleCheckbox(checkboxId)` - Toggle état checkbox
|
|
- [ ] `addCheckboxToDaily(dailyId, content)` - Ajouter checkbox
|
|
- [ ] `updateCheckboxContent(checkboxId, content)` - Éditer contenu
|
|
- [ ] `deleteCheckbox(checkboxId)` - Supprimer checkbox
|
|
- [ ] `reorderCheckboxes(dailyId, checkboxIds)` - Réorganiser
|
|
- [ ] Modifier les composants Daily pour utiliser server actions
|
|
- [ ] **Nettoyage** : Supprimer routes `/api/daily/checkboxes` (POST, PATCH, DELETE)
|
|
- [ ] **Nettoyage** : Simplifier `daily-client.ts` (garder GET uniquement)
|
|
- [ ] **Nettoyage** : Modifier composants Daily pour `useTransition`
|
|
|
|
#### Actions User Preferences (Priorité 3)
|
|
- [ ] Créer `actions/preferences.ts` pour les toggles
|
|
- [ ] `updateViewPreferences(preferences)` - Préférences d'affichage
|
|
- [ ] `updateKanbanFilters(filters)` - Filtres Kanban
|
|
- [ ] `updateColumnVisibility(columns)` - Visibilité colonnes
|
|
- [ ] `updateTheme(theme)` - Changement de thème
|
|
- [ ] Remplacer les hooks par server actions directes
|
|
- [ ] **Nettoyage** : Supprimer routes `/api/user-preferences/*` (PUT/PATCH)
|
|
- [ ] **Nettoyage** : Simplifier `user-preferences-client.ts` (GET uniquement)
|
|
- [ ] **Nettoyage** : Modifier `useUserPreferences.ts` pour server actions
|
|
|
|
#### Actions Tags (Priorité 4)
|
|
- [ ] Créer `actions/tags.ts` pour la gestion tags
|
|
- [ ] `createTag(name, color)` - Création tag
|
|
- [ ] `updateTag(tagId, data)` - Modification tag
|
|
- [ ] `deleteTag(tagId)` - Suppression tag
|
|
- [ ] Modifier les formulaires tags pour server actions
|
|
- [ ] **Nettoyage** : Supprimer routes `/api/tags` (POST, PATCH, DELETE)
|
|
- [ ] **Nettoyage** : Simplifier `tags-client.ts` (GET et search uniquement)
|
|
- [ ] **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
|
|
- [ ] Ajouter champ `projectKey` dans la config Jira (settings)
|
|
- [ ] Interface pour sélectionner le projet à surveiller
|
|
- [ ] Validation de l'existence du projet via API Jira
|
|
- [ ] Sauvegarde de la configuration projet dans les préférences
|
|
- [ ] Test de connexion spécifique au projet configuré
|
|
|
|
### 5.2 Service d'analytics Jira
|
|
- [ ] Créer `services/jira-analytics.ts` - Métriques avancées
|
|
- [ ] Récupération des tickets du projet (toute l'équipe, pas seulement assignés)
|
|
- [ ] Calculs de vélocité d'équipe (story points par sprint)
|
|
- [ ] Métriques de cycle time (temps entre statuts)
|
|
- [ ] Analyse de la répartition des tâches par assignee
|
|
- [ ] Détection des goulots d'étranglement (tickets bloqués)
|
|
- [ ] Historique des sprints et burndown charts
|
|
- [ ] Cache intelligent des métriques (éviter API rate limits)
|
|
|
|
### 5.3 Page de surveillance `/jira-dashboard`
|
|
- [ ] Créer page dédiée avec navigation depuis settings Jira
|
|
- [ ] Vue d'ensemble du projet (nom, lead, statut global)
|
|
- [ ] Sélecteur de période (7j, 30j, 3 mois, sprint actuel)
|
|
- [ ] Graphiques de vélocité avec Chart.js ou Recharts
|
|
- [ ] Heatmap d'activité de l'équipe
|
|
- [ ] Timeline des releases et milestones
|
|
- [ ] Alertes visuelles (tickets en retard, sprints déviants)
|
|
|
|
### 5.4 Métriques et graphiques avancés
|
|
- [ ] **Vélocité** : Story points complétés par sprint
|
|
- [ ] **Burndown chart** : Progression vs planifié
|
|
- [ ] **Cycle time** : Temps moyen par type de ticket
|
|
- [ ] **Throughput** : Nombre de tickets complétés par période
|
|
- [ ] **Work in Progress** : Répartition par statut et assignee
|
|
- [ ] **Quality metrics** : Ratio bugs/features, retours clients
|
|
- [ ] **Predictability** : Variance entre estimé et réel
|
|
- [ ] **Collaboration** : Matrice d'interactions entre assignees
|
|
|
|
### 5.5 Fonctionnalités de surveillance
|
|
- [ ] Rafraîchissement automatique des données (configurable)
|
|
- [ ] Export des métriques en CSV/JSON
|
|
- [ ] Comparaison inter-sprints et tendances
|
|
- [ ] Détection automatique d'anomalies (alertes)
|
|
- [ ] Filtrage par composant, version, type de ticket
|
|
- [ ] Vue détaillée par sprint avec drill-down
|
|
- [ ] Intégration avec les daily notes (mentions des blockers)
|
|
|
|
### 5.6 API et architecture
|
|
- [ ] Routes `/api/jira/analytics/*` pour les métriques
|
|
- [ ] Client `jira-analytics-client.ts` avec cache
|
|
- [ ] Hook `useJiraAnalytics.ts` pour la page dashboard
|
|
- [ ] Composants de graphiques réutilisables
|
|
- [ ] Gestion des erreurs API et timeouts
|
|
- [ ] Pagination et lazy loading pour gros projets
|
|
- [ ] Background jobs pour cache des métriques lourdes
|
|
|
|
## 🔧 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
|
|
|
|
## 🛠️ Configuration technique
|
|
|
|
### Stack moderne
|
|
- **Frontend**: Next.js 14, React, TypeScript, Tailwind CSS
|
|
- **Backend**: Next.js API Routes, Prisma ORM
|
|
- **Database**: SQLite (local) → PostgreSQL (production future)
|
|
- **UI**: Composants custom + Shadcn/ui, React Beautiful DnD
|
|
- **Charts**: Recharts ou Chart.js pour les analytics
|
|
|
|
### Architecture respectée
|
|
```
|
|
src/app/
|
|
├── api/tasks/ # API CRUD complète
|
|
├── page.tsx # Page principale
|
|
└── layout.tsx
|
|
|
|
services/
|
|
├── database.ts # Pool Prisma
|
|
└── tasks.ts # Service tâches standalone
|
|
|
|
components/
|
|
├── kanban/ # Board Kanban
|
|
├── ui/ # Composants UI de base
|
|
└── dashboard/ # Widgets dashboard (futur)
|
|
|
|
clients/ # Clients HTTP (à créer)
|
|
hooks/ # Hooks React (à créer)
|
|
lib/
|
|
├── types.ts # Types TypeScript
|
|
└── config.ts # Config app moderne
|
|
```
|
|
|
|
## 🎯 Prochaines étapes immédiates
|
|
|
|
1. **Drag & drop entre colonnes** - react-beautiful-dnd pour changer les statuts
|
|
2. **Gestion avancée des tags** - Couleurs, autocomplete, filtrage
|
|
3. **Recherche et filtres** - Filtrage temps réel par titre, tags, statut
|
|
4. **Dashboard et analytics** - Graphiques de productivité
|
|
|
|
## ✅ **Fonctionnalités terminées (Phase 2.1-2.3)**
|
|
|
|
- ✅ Système de design tech dark complet
|
|
- ✅ Composants UI de base (Button, Input, Card, Modal, Badge)
|
|
- ✅ Architecture SSR + hydratation client
|
|
- ✅ CRUD tâches complet (création, édition, suppression)
|
|
- ✅ Création rapide inline (QuickAddTask)
|
|
- ✅ Édition inline du titre (clic sur titre → input éditable)
|
|
- ✅ Drag & drop entre colonnes (@dnd-kit) + optimiste
|
|
- ✅ Client HTTP et hooks React
|
|
- ✅ Refactoring Kanban avec nouveaux composants
|
|
|
|
---
|
|
|
|
*Focus sur l'expérience utilisateur et le design moderne. App standalone prête pour évoluer.*
|