140 lines
4.6 KiB
Markdown
140 lines
4.6 KiB
Markdown
# Changelog - Système de Pending
|
|
|
|
## Version 1.1.1 - 2025-09-16
|
|
|
|
### 🔧 Corrections critiques
|
|
|
|
- **Fix URL API** : Correction de l'URL de l'API de `http://localhost:18000` vers `http://localhost:3001/api`
|
|
- **Résolution des timeouts** : Le frontend peut maintenant contacter le backend correctement
|
|
- **Logs de debug** : Ajout de logs pour tracer les appels API et diagnostiquer les problèmes
|
|
|
|
## 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
|