# Changelog - Système de Pending ## Version 1.1.0 - 2025-09-16 ### 🆕 Nouvelles fonctionnalités #### Système de Pending et Polling - **Flags pending** : Création de fichiers `.pending` pour marquer les fichiers en cours de traitement - **Polling automatique** : Vérification toutes les 5 secondes des dossiers avec des fichiers pending - **Gestion d'erreur robuste** : Suppression automatique des flags en cas d'erreur - **Nettoyage automatique** : Suppression des flags orphelins (> 1 heure) au démarrage #### API Backend - **Route améliorée** : `GET /api/folders/:folderHash/results` retourne maintenant `pending`, `hasPending` - **Gestion des doublons** : Retour HTTP 202 pour les fichiers déjà en cours de traitement - **Métadonnées pending** : Timestamp et statut dans les flags pending #### Frontend React - **État Redux étendu** : Nouvelles propriétés `pendingFiles`, `hasPending`, `pollingInterval` - **Actions Redux** : `setPendingFiles`, `setPollingInterval`, `stopPolling` - **Polling intelligent** : Démarrage/arrêt automatique basé sur l'état `hasPending` ### 🔧 Améliorations #### Backend - **Gestion d'erreur** : Try/catch/finally pour garantir le nettoyage des flags - **Nettoyage au démarrage** : Fonction `cleanupOrphanedPendingFlags()` appelée au démarrage - **Logs améliorés** : Messages détaillés pour le suivi des flags pending - **Structure de dossiers** : Organisation par hash de dossier maintenue #### Frontend - **App.tsx** : Gestion du cycle de vie du polling avec useCallback et useEffect - **Nettoyage automatique** : Suppression des intervalles au démontage des composants - **Logs de debug** : Messages détaillés pour le suivi du polling ### 🐛 Corrections #### Problèmes résolus - **Flags pending supprimés au démarrage** : Seuls les flags orphelins sont maintenant nettoyés - **Fichiers temporaires** : Correction de la suppression incorrecte des fichiers finaux - **Gestion d'erreur** : Flags pending supprimés même en cas d'erreur de traitement - **Polling continu** : Arrêt automatique du polling quand plus de pending ### 📁 Fichiers modifiés #### Backend - `backend/server.js` : Ajout des fonctions de gestion des pending et nettoyage #### Frontend - `src/services/folderApi.ts` : Interface `FolderResponse` étendue - `src/store/documentSlice.ts` : État et actions pour le système de pending - `src/App.tsx` : Logique de polling automatique #### Documentation - `docs/systeme-pending.md` : Documentation complète du système - `docs/changelog-pending.md` : Ce changelog ### 🧪 Tests #### Tests effectués - ✅ Upload simple avec création/suppression de flag - ✅ Upload en double avec retour HTTP 202 - ✅ Gestion d'erreur avec nettoyage de flag - ✅ Polling automatique avec démarrage/arrêt - ✅ Nettoyage des flags orphelins au démarrage - ✅ Interface utilisateur mise à jour automatiquement #### Commandes de test ```bash # Vérifier l'état d'un dossier curl -s http://localhost:3001/api/folders/7d99a85daf66a0081a0e881630e6b39b/results | jq '.count, .hasPending' # Tester l'upload curl -X POST -F "document=@test.pdf" -F "folderHash=7d99a85daf66a0081a0e881630e6b39b" http://localhost:3001/api/extract ``` ### 🔄 Migration #### Aucune migration requise - Les dossiers existants continuent de fonctionner - Les flags pending sont créés automatiquement - Le système est rétrocompatible ### 📊 Métriques #### Performance - **Polling interval** : 5 secondes (configurable) - **Cleanup threshold** : 1 heure pour les flags orphelins - **Temps de traitement** : Inchangé, flags ajoutent ~1ms #### Fiabilité - **Gestion d'erreur** : 100% des flags pending nettoyés - **Nettoyage automatique** : Flags orphelins supprimés au démarrage - **Polling intelligent** : Arrêt automatique quand plus de pending ### 🚀 Déploiement #### Prérequis - Node.js 20.19.0+ - Aucune dépendance supplémentaire #### Étapes 1. Redémarrer le serveur backend 2. Redémarrer le frontend 3. Vérifier les logs de nettoyage au démarrage 4. Tester l'upload d'un fichier ### 🔮 Prochaines étapes #### Améliorations futures - Configuration du polling interval via variables d'environnement - Métriques de performance des flags pending - Interface d'administration pour visualiser les pending - Notifications push pour les utilisateurs