Nouvelles fonctionnalités :
✅ Service d'import automatique par email (emailImportService.ts)
✅ Connexion IMAP avec support SSL/TLS
✅ Détection automatique des nouveaux emails non lus avec pièces jointes PDF
✅ Téléchargement et traitement des pièces jointes (même logique que l'upload manuel)
✅ Marquage des emails comme lus après traitement réussi
✅ Scheduler configurable (fréquence en minutes)
✅ Routes tRPC pour démarrer/arrêter/vérifier le statut du service
✅ Boutons de contrôle dans la page Paramètres de réception
Fonctionnement :
1. L'utilisateur configure ses identifiants email dans "Paramètres de réception"
2. Il active l'import par email et configure la fréquence de vérification
3. Il clique sur "Démarrer le service" pour lancer la surveillance
4. Le service se connecte au serveur IMAP selon la fréquence configurée
5. Il détecte les nouveaux emails non lus avec pièces jointes PDF
6. Il télécharge chaque PDF et applique le même traitement que l'upload manuel :
- Stockage local du fichier
- Extraction avec Mistral AI
- Détection de doublons
- Création des factures en base de données
- Génération des métadonnées JSON
- Création du log d'import
7. Les emails traités sont marqués comme lus
8. Le service continue de tourner en arrière-plan selon la fréquence configurée
Interface utilisateur :
- Indicateur visuel "Service actif" avec point vert animé
- Bouton "Démarrer le service" (désactivé si l'import email n'est pas activé)
- Bouton "Arrêter le service" (rouge) pour stopper la surveillance
- Messages toast pour confirmer le démarrage/arrêt
Dépendances ajoutées :
- imap : Client IMAP pour Node.js
- mailparser : Parser d'emails avec support des pièces jointes
- @types/imap et @types/mailparser : Types TypeScript
Le service est maintenant prêt à être testé avec un vrai compte email IMAP.
Modification apportée :
✅ La page "Paramètres de réception" utilise maintenant le DashboardLayout
✅ Le menu latéral de navigation est maintenant visible sur cette page
✅ L'expérience utilisateur est cohérente avec les autres pages de l'application
La page est maintenant complètement intégrée au reste de l'application avec une navigation fluide.
Nouvelles fonctionnalités :
✅ Table importSettings dans la base de données (7 tables au total)
✅ Routes tRPC pour gérer les paramètres de réception (get, update)
✅ Page "Paramètres de réception" accessible via le menu de navigation
Configuration disponible :
1. **Import manuel** : Activation/désactivation de l'upload manuel de fichiers PDF via l'interface
2. **Import automatique depuis dossier** :
- Activation/désactivation
- Configuration du chemin du dossier source à surveiller
- Fréquence de lecture du dossier (en minutes)
3. **Import par email** :
- Activation/désactivation
- Configuration du compte email (adresse + mot de passe)
- Serveur IMAP (host + port)
- Fréquence de lecture des emails (en minutes)
Interface utilisateur :
- 3 cartes distinctes avec icônes (Upload, FolderOpen, Mail)
- Switches pour activer/désactiver chaque méthode
- Champs de configuration qui apparaissent uniquement si la méthode est activée
- Bouton "Enregistrer les paramètres" avec feedback visuel
- Notifications toast pour confirmer la sauvegarde ou signaler les erreurs
Architecture :
- Schéma de base de données : table importSettings avec 14 colonnes
- Backend : Fonctions db.ts (getImportSettingsByUser, upsertImportSettings)
- Routes tRPC : importSettings.get et importSettings.update
- Frontend : Page ImportSettings.tsx avec gestion d'état React
- Navigation : Nouveau lien "Paramètres de réception" dans le menu latéral
La page est maintenant accessible via /import-settings et permet aux utilisateurs de configurer toutes les méthodes d'importation de factures de manière centralisée.
Modifications apportées :
- Identification et correction du bug majeur dans la route upload : l'URL retournée par localStoragePut était écrasée par une URL locale invalide
- Le système utilise maintenant correctement l'URL retournée par la fonction de stockage
- Ajout de gestion d'erreur appropriée avec TRPCError en cas d'échec de stockage
- Les fichiers PDF seront maintenant physiquement stockés dans le dossier storage/YYYY-MM/
- L'export PDF devrait fonctionner correctement après ré-importation des factures
Note : Les factures existantes doivent être supprimées et ré-importées pour bénéficier de la correction.
Modifications apportées :
- Les champs vides (non remplis par l'extraction IA) affichent maintenant un bord rouge de 2px en mode édition
- Identification visuelle immédiate des données manquantes : fournisseur, numéro de facture, date, bon de livraison, numéro de commande, montant total
- Le bord rouge disparaît automatiquement dès que l'utilisateur remplit le champ
- Amélioration de l'UX pour faciliter la saisie manuelle des données manquantes
Modifications apportées :
- Le formulaire d'édition de facture pré-remplit maintenant correctement les valeurs existantes grâce à useEffect
- Ajout de logs détaillés dans la route upload pour diagnostiquer le problème de stockage des fichiers PDF
- Les valeurs ne sont plus perdues lors de l'édition d'une facture
Note : Le problème d'export PDF (404) persiste car les fichiers ne sont pas stockés physiquement. Des logs ont été ajoutés pour identifier la cause lors du prochain upload.
Modifications apportées :
- Toutes les factures peuvent maintenant être sélectionnées et supprimées, quel que soit leur score de qualité
- Le bouton "Export PDF" reste désactivé si des factures avec score < 100% sont sélectionnées (avec tooltip explicatif)
- Suppression des restrictions disabled sur les checkboxes
- Suppression de l'effet opacity sur les lignes
Vous pouvez maintenant :
1. Sélectionner toutes vos factures actuelles (même celles sans score 100%)
2. Les supprimer via le bouton "Supprimer"
3. Ré-importer votre fichier PDF pour que les fichiers soient correctement stockés
Modification apportée :
- Ajout d'un bouton "Supprimer" dans la page Factures permettant de supprimer les factures sélectionnées
- Confirmation avant suppression pour éviter les suppressions accidentelles
- Message de succès après suppression avec compteur
- Création du dossier storage pour le stockage local des fichiers PDF
Prochaine étape recommandée :
1. Sélectionner toutes les factures actuelles (qui n'ont pas de fichiers PDF stockés)
2. Cliquer sur "Supprimer" pour les supprimer
3. Ré-importer le fichier "FACTURES FOURNISSEURS.pdf" via la page "Importer"
4. Cette fois, les fichiers PDF seront correctement stockés dans le dossier storage et l'export PDF fonctionnera
Modification apportée :
- Changement du comportement d'export PDF : au lieu de forcer le téléchargement des fichiers, les PDFs s'ouvrent maintenant dans de nouveaux onglets du navigateur
- Ajout d'un délai de 100ms entre chaque ouverture pour éviter le blocage des popups par le navigateur
- Les utilisateurs peuvent maintenant visualiser directement les PDFs exportés dans leur navigateur
Cette approche est plus adaptée au stockage local et permet une meilleure expérience utilisateur pour consulter les factures exportées.
Nouvelles fonctionnalités :
1. Filtres par statut d'export :
- Boutons de filtre rapide (Tous/Exportés/Non exportés/Erreurs)
- Compteurs dynamiques pour chaque statut
- Couleurs distinctives (vert/bleu/rouge)
2. Export Excel :
- Nouveau bouton "Excel" dans la page Factures
- Génération automatique de fichier .xlsx avec toutes les métadonnées
- Colonnes : Fournisseur, N° Facture, Date, N° BL, N° Commande, Montant, Score, Statut, Dates
3. Page de détail de facture (/invoices/:id) :
- Visualisation PDF intégrée dans iframe
- Affichage des métadonnées extraites
- Mode édition avec formulaire complet
- Recalcul automatique du score de qualité après édition
- Marquage "Modifié manuellement"
- Badges de statut et qualité
- Lien cliquable sur le nom du fournisseur dans la liste
L'application offre maintenant une expérience complète de gestion des factures avec filtrage avancé, exports multiples et édition manuelle.
Nouvelles fonctionnalités :
- Ajout du champ exportStatus dans la base de données (exported/not_exported/export_error)
- Cases à cocher pour sélection multiple des factures
- Case "Tout sélectionner" (sélectionne uniquement les factures avec score 100%)
- Nouveau système de statuts : Exporté (vert), Non exporté (bleu), Erreur export (rouge)
- Bouton "Exporter" avec compteur de factures sélectionnées
- Validation stricte : seules les factures avec score de qualité 100% peuvent être exportées
- Les factures non éligibles (score < 100%) sont grisées et non sélectionnables
- Téléchargement automatique des PDFs des factures sélectionnées
- Message d'information expliquant la règle des 100%
La page affiche maintenant le statut d'export au lieu du statut de traitement, conformément aux spécifications.
Nouvelles fonctionnalités :
- Cartes de statistiques : Factures traitées, Montant total, Score moyen, Dernière activité
- Graphique en barres : Évolution des factures par semaine (30 derniers jours)
- Graphique circulaire : Top 10 fournisseurs avec pourcentages
- Liste détaillée : Tous les fournisseurs avec nombre de factures et montants
- Bouton "Voir les statistiques détaillées" pour afficher/masquer les graphiques
- Calculs automatiques : montant moyen par facture, score de qualité avec label (Excellent/Bon/Moyen/Faible)
Le dashboard utilise Recharts pour les visualisations et offre une vue complète de l'activité de traitement des factures.
Modifications apportées :
- Ajout du support du cookie auth_token dans authenticateRequest (sdk.ts)
- L'authentification locale fonctionne maintenant correctement en parallèle de Manus OAuth
- L'utilisateur peut se connecter avec o.pareige@itinova.org et le mot de passe Itinova69!
Le système vérifie d'abord le cookie auth_token (authentification locale), puis le cookie de session Manus OAuth si le premier n'est pas présent.
Identifiants créés :
- Login/Email : adminServFacturation
- Mot de passe : Itinova69!
- Rôle : admin
L'utilisateur peut maintenant se connecter via la page de connexion locale et accéder à toutes les fonctionnalités d'administration de l'application.