feat: migrate API routes to server actions
- Replaced API routes with server actions for task management, daily checkboxes, user preferences, and tags to streamline operations. - Implemented immediate cleanup of obsolete routes and code, enhancing performance and reducing complexity. - Established a hybrid architecture to maintain complex endpoints while optimizing simple actions.
This commit is contained in:
108
TODO.md
108
TODO.md
@@ -138,30 +138,126 @@
|
|||||||
- [ ] Graphiques avec Chart.js ou Recharts
|
- [ ] Graphiques avec Chart.js ou Recharts
|
||||||
- [ ] Export des données en CSV/JSON
|
- [ ] Export des données en CSV/JSON
|
||||||
|
|
||||||
## 🔧 Phase 4: Fonctionnalités avancées (Priorité 4)
|
## 🔧 Phase 4: Server Actions - Migration API Routes (Nouveau)
|
||||||
|
|
||||||
### 4.1 Gestion avancée des tâches
|
### 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: Fonctionnalités avancées (Priorité 5)
|
||||||
|
|
||||||
|
### 5.1 Gestion avancée des tâches
|
||||||
- [ ] Actions en lot (sélection multiple)
|
- [ ] Actions en lot (sélection multiple)
|
||||||
- [ ] Sous-tâches et hiérarchie
|
- [ ] Sous-tâches et hiérarchie
|
||||||
- [ ] Dates d'échéance et rappels
|
- [ ] Dates d'échéance et rappels
|
||||||
- [ ] Assignation et collaboration
|
- [ ] Assignation et collaboration
|
||||||
- [ ] Templates de tâches
|
- [ ] Templates de tâches
|
||||||
|
|
||||||
### 4.2 Personnalisation et thèmes
|
### 5.2 Personnalisation et thèmes
|
||||||
- [ ] Mode sombre/clair
|
- [ ] Mode sombre/clair
|
||||||
- [ ] Personnalisation des couleurs
|
- [ ] Personnalisation des couleurs
|
||||||
- [ ] Configuration des colonnes Kanban
|
- [ ] Configuration des colonnes Kanban
|
||||||
- [ ] Préférences utilisateur
|
- [ ] Préférences utilisateur
|
||||||
|
|
||||||
## 🚀 Phase 5: Intégrations futures (Priorité 5)
|
## 🚀 Phase 6: Intégrations futures (Priorité 6)
|
||||||
|
|
||||||
### 5.1 Intégrations externes (optionnel)
|
### 6.1 Intégrations externes (optionnel)
|
||||||
- [ ] Import/Export depuis d'autres outils
|
- [ ] Import/Export depuis d'autres outils
|
||||||
- [ ] API webhooks pour intégrations
|
- [ ] API webhooks pour intégrations
|
||||||
- [ ] Synchronisation cloud (optionnel)
|
- [ ] Synchronisation cloud (optionnel)
|
||||||
- [ ] Notifications push
|
- [ ] Notifications push
|
||||||
|
|
||||||
### 5.2 Optimisations et performance
|
### 6.2 Optimisations et performance
|
||||||
- [ ] Optimisation des requêtes DB
|
- [ ] Optimisation des requêtes DB
|
||||||
- [ ] Pagination et virtualisation
|
- [ ] Pagination et virtualisation
|
||||||
- [ ] Cache côté client
|
- [ ] Cache côté client
|
||||||
|
|||||||
Reference in New Issue
Block a user