Commit Graph

28 Commits

Author SHA1 Message Date
Manus
ee49992530 Checkpoint: Ajout de l'association Service→Signature dans l'onglet Signatures des Paramètres et apposition automatique de la signature sur les PDFs exportés lors de l'export BAP. Inclut : table serviceSignatures, routes tRPC, interface de configuration, et modification de exportToPdf pour apposer la signature en bas à droite du PDF avec le nom du signataire. 2026-03-14 19:28:50 -04:00
Manus
33a82e2ad2 Checkpoint: Ajout de l'onglet "Signatures" dans la page Paramètres : table DB signatures (firstName, lastName, imageKey, imageUrl), migration appliquée, routes tRPC (list, upload, create, delete), composant SignaturesSection avec formulaire d'ajout (prénom+nom+upload image), grille d'affichage des signatures avec aperçu, bouton de suppression au survol 2026-03-14 18:52:47 -04:00
Manus
9868a1afda Checkpoint: Ajout du bouton Validation BAP dans la page Factures BAP : nouveau champ bapValidated/bapValidatedAt dans le schéma, migration DB, route tRPC validateBAP avec vérification des critères (Score 100%, non exportée, isSubscription=0, service+typeAchat+ventilation remplis), bouton vert actif/désactivé avec tooltip explicatif, badge "Validé" pour les factures déjà validées 2026-03-06 04:17:53 -05:00
Manus
f16efa4197 Checkpoint: Checkpoint saved: Améliorations majeures de l'export des factures BAP
Deux nouvelles fonctionnalités implémentées :

 **Indicateur visuel d'exportabilité**
- Icône verte ✓ (CheckCircle) dans la colonne Score pour identifier visuellement les factures exportables
- L'icône apparaît uniquement pour les factures qui remplissent tous les critères :
  * Score de qualité = 100%
  * Type d'achat rempli (CAPEX ou OPEX)
  * Service concerné rempli
  * Ventilation comptable remplie
- Tooltip "Facture exportable" au survol de l'icône

 **Export automatique vers le dossier configuré**
- Les PDFs sont maintenant copiés automatiquement vers le dossier configuré dans les paramètres (exportFolder)
- Création automatique du dossier d'export s'il n'existe pas
- Gestion des erreurs de copie avec messages détaillés
- Notification de succès affichant le nombre de factures exportées et le chemin du dossier
- Mise à jour du statut d'export (exported/export_error) pour chaque facture
- Validation préalable : le dossier d'export doit être configuré avant l'export

Modifications techniques :
- client/src/pages/InvoicesBAP.tsx : Ajout de l'icône CheckCircle dans la colonne Score
- client/src/pages/InvoicesBAP.tsx : Modification du callback onSuccess pour afficher le dossier d'export
- client/src/pages/Invoices.tsx : Mise à jour du callback onSuccess (même modification)
- server/routers.ts : Refonte complète de la route exportToPdf :
  * Récupération du paramètre exportFolder depuis importSettings
  * Validation que exportFolder est configuré
  * Création du dossier d'export avec fs.mkdir (recursive)
  * Copie des PDFs avec fs.copyFile depuis storage vers exportFolder
  * Gestion des erreurs individuelles par facture
  * Retour des informations : exportFolder, copiedCount, liste des factures

Bénéfices utilisateur :
- **Visibilité** : Identification immédiate des factures prêtes à l'export grâce à l'icône verte
- **Automatisation** : Plus besoin d'ouvrir manuellement les PDFs dans le navigateur
- **Organisation** : Les PDFs sont automatiquement copiés dans le dossier de destination
- **Traçabilité** : Notification claire avec le chemin du dossier et le nombre de factures exportées
- **Fiabilité** : Gestion des erreurs avec mise à jour du statut pour chaque facture

Cette amélioration transforme l'export en un processus entièrement automatisé et transparent pour l'utilisateur.
2026-02-13 10:33:09 -05:00
Manus
d32359fc10 Checkpoint: Ajout de la configuration des champs obligatoires pour le score LLM
Nouvelle fonctionnalité permettant de configurer quels champs sont obligatoires ou optionnels pour atteindre un score de reconnaissance de 100%.

Modifications:
- Nouvelle table llmFieldsConfig dans la base de données
- Routes tRPC pour gérer la configuration (getAll, updateField)
- Interface utilisateur dans la page Paramètres avec tableau et cases à cocher
- Modification du code d'extraction pour générer dynamiquement l'instruction de score
- Initialisation automatique des champs par défaut (supplierName, invoiceNumber, invoiceDate, totalAmount obligatoires)
- Tests unitaires pour valider la fonctionnalité

L'utilisateur peut maintenant personnaliser quels champs doivent être détectés pour qu'une facture atteigne 100% de score.
2026-02-13 03:39:41 -05:00
Manus
96f6367094 Checkpoint: Ré-application automatique des règles d'automatisme sur factures BAP existantes
 **Mise à jour automatique des factures BAP**

Le système applique maintenant automatiquement les règles d'automatisme sur toutes les factures BAP existantes lors de la création, modification ou activation d'une règle.

**Déclencheurs de ré-application automatique :**
1. **Création d'une règle active** : Si isActive = 1, toutes les factures BAP sont analysées et mises à jour
2. **Modification d'une règle active** : Si la règle modifiée est active, ré-application immédiate
3. **Activation d'une règle** : Lors du passage de isActive 0 → 1, ré-application automatique

**Fonctionnement :**
- Filtrage automatique des factures BAP (isSubscription = 0)
- Application séquentielle de toutes les règles actives par ordre de priorité
- Mise à jour des champs : Type d'achat, Service concerné, Ventilation comptable
- Traçage des champs auto-remplis dans autoFilledFields pour coloration (vert)
- Invalidation du cache des factures pour rafraîchissement immédiat de l'interface

**Notifications utilisateur :**
- Création : "Règle créée et appliquée aux factures BAP existantes" (si active)
- Modification : "Règle mise à jour et appliquée aux factures BAP existantes" (si active)
- Messages différenciés selon l'état actif/inactif de la règle

**Route API supplémentaire :**
- `automationRules.reapplyToExistingInvoices` : Permet une ré-application manuelle si nécessaire
- Retourne le nombre total de factures BAP et le nombre de factures mises à jour

Architecture technique :
- server/routers.ts : Ajout de la logique de ré-application dans create/update/toggleActive
- server/routers.ts : Nouvelle route reapplyToExistingInvoices pour ré-application manuelle
- server/automationEngine.ts : Utilisation de applyAutomationRules(userId, invoice)
- client/src/pages/AutomationRules.tsx : Notifications différenciées selon le contexte
- client/src/pages/AutomationRules.tsx : Invalidation du cache invoices pour rafraîchissement

Bénéfices utilisateur :
- **Cohérence** : Toutes les factures BAP sont toujours à jour avec les règles actives
- **Gain de temps** : Pas besoin de ré-appliquer manuellement les règles
- **Transparence** : Notifications claires sur l'application automatique
- **Flexibilité** : Possibilité de créer des règles inactives pour tests avant activation
- **Traçabilité** : Coloration verte des champs auto-remplis dans l'interface Factures BAP
2026-02-12 04:07:06 -05:00
Manus
d0ef89e6ba Checkpoint: Améliorations majeures de la gestion des règles d'automatisme
Trois nouvelles fonctionnalités implémentées :

 **Assistant de création guidée**
- Deux modes de création : "Assistant de création" (guidé) et "Mode avancé" (complet)
- Interface simplifiée pour les utilisateurs non techniques
- Boutons séparés pour choisir le mode de création

 **Test de règles avant activation**
- Bouton "Tester la règle" dans le formulaire de création/édition
- Simulation sur toutes les factures existantes sans modification
- Affichage des résultats :
  * Nombre total de factures
  * Nombre de factures affectées
  * Aperçu des 10 premières factures avec les modifications prévues
- Permet de valider l'impact avant d'activer la règle

 **Duplication de règles**
- Bouton "Dupliquer" (icône Copy bleue) dans la liste des règles
- Création automatique d'une copie avec le suffixe "(copie)"
- Règle dupliquée désactivée par défaut pour éviter les conflits
- Facilite la création de variantes de règles similaires

Architecture technique :
- server/routers.ts : Ajout des routes `test` et `duplicate` dans automationRules
- server/routers.ts : Ajout des interfaces Condition et Actions
- server/routers.ts : Implémentation de la logique d'évaluation des conditions pour le test
- client/src/pages/AutomationRules.tsx : Ajout des mutations testMutation et duplicateMutation
- client/src/pages/AutomationRules.tsx : Ajout des états wizardMode, wizardStep, testResultsOpen, testResults
- client/src/pages/AutomationRules.tsx : Modification des boutons de création (Assistant vs Mode avancé)
- client/src/pages/AutomationRules.tsx : Ajout du bouton "Tester la règle" dans le DialogFooter
- client/src/pages/AutomationRules.tsx : Ajout du Dialog des résultats de test avec statistiques et aperçu
- client/src/pages/AutomationRules.tsx : Ajout du bouton "Dupliquer" dans le tableau des règles

Bénéfices utilisateur :
- **Sécurité** : Test avant activation pour éviter les erreurs de configuration
- **Productivité** : Duplication rapide pour créer des variantes
- **Accessibilité** : Assistant guidé pour les utilisateurs non techniques
- **Transparence** : Visualisation de l'impact réel avant application
- **Confiance** : Validation des règles sur données réelles

Ces améliorations transforment la gestion des automatismes en un outil puissant, sécurisé et accessible à tous les profils d'utilisateurs.
2026-02-12 03:28:27 -05:00
Manus
716b259fe4 Checkpoint: Coloration des valeurs dans Factures BAP (automatique vs manuelle)
Nouvelle fonctionnalité visuelle :
 Valeurs remplies automatiquement par les règles : affichées en VERT
 Valeurs saisies manuellement : affichées en BLEU
 Traçage intelligent de l'origine des valeurs (automatique ou manuelle)
 Mise à jour automatique de la couleur lors d'une modification manuelle

Architecture technique :
- drizzle/schema.ts : Ajout du champ autoFilledFields (JSON) pour tracer l'origine
- server/automationEngine.ts : Enregistrement des champs remplis automatiquement
- server/routers.ts : Ajout de autoFilledFields dans le schéma d'update
- client/src/pages/InvoicesBAP.tsx : Fonction getFieldColor() pour déterminer la couleur
- Migration 0010_late_thor_girl.sql appliquée avec succès

Fonctionnement :
1. **Import de facture** : Les règles d'automatisme s'appliquent et marquent les champs remplis dans autoFilledFields
2. **Affichage** : La fonction getFieldColor() analyse autoFilledFields pour déterminer la couleur :
   - Champ dans autoFilledFields → VERT (rempli automatiquement)
   - Champ avec valeur mais pas dans autoFilledFields → BLEU (rempli manuellement)
   - Champ vide → Pas de couleur
3. **Modification manuelle** : Lors d'une édition, le champ est retiré de autoFilledFields et passe en BLEU

Bénéfices utilisateur :
- Visibilité immédiate sur l'origine des données
- Confiance accrue dans les automatismes (vert = validé par règle)
- Identification rapide des saisies manuelles nécessitant vérification
- Traçabilité complète du remplissage des champs métier

Cette fonctionnalité améliore considérablement la transparence du système d'automatisation et facilite le contrôle qualité des données.
2026-02-11 12:39:22 -05:00
Manus
72c3f503a3 Checkpoint: Système de gestion des automatismes pour remplissage automatique des factures
Nouvelle fonctionnalité majeure :
 Page "Automatismes" complète pour gérer les règles de remplissage automatique
 Système de règles conditionnelles SI...ALORS pour automatiser le remplissage des champs métier
 Support de conditions multiples avec logique AND/OR
 Application automatique des règles lors de l'import de factures
 Gestion de la priorité des règles (ordre d'exécution)
 Activation/désactivation des règles individuelles

Architecture technique :
- drizzle/schema.ts : Table automationRules avec conditions JSON et actions JSON
- server/db.ts : Fonctions CRUD complètes pour les règles (create, update, delete, list)
- server/routers.ts : Routes tRPC pour gérer les automatismes
- server/automationEngine.ts : Moteur d'évaluation et d'application des règles
- client/src/pages/AutomationRules.tsx : Interface complète de gestion des règles
- Migration 0009_regular_warhawk.sql appliquée avec succès

Fonctionnement des règles :
1. **Conditions (SI)** : Définissez des critères basés sur les champs de la facture
   - Champs disponibles : Fournisseur, N° Facture, Montant, Date, N° Commande, N° Bon de livraison
   - Opérateurs : contient, égal à, commence par, finit par, >, <, >=, <=
   - Logique : AND (toutes les conditions) ou OR (au moins une condition)

2. **Actions (ALORS)** : Définissez les champs à remplir automatiquement
   - Type d'achat (CAPEX/OPEX)
   - Service concerné (depuis la liste des services)
   - Ventilation comptable (depuis la liste des ventilations)

3. **Priorité** : Les règles sont appliquées dans l'ordre de priorité
   - Une règle de priorité supérieure ne peut pas être écrasée par une règle de priorité inférieure

4. **Application automatique** : Les règles s'appliquent automatiquement lors de l'import de factures

Exemples d'utilisation :
- SI Fournisseur contient "Microsoft" ET Montant > 1000 ALORS Type d'achat = CAPEX, Service = DSI
- SI Fournisseur contient "EDF" ALORS Type d'achat = OPEX, Ventilation = TOUS
- SI N° Facture commence par "AB" ALORS Service = Administration

Interface utilisateur :
- Liste des règles avec nom, conditions, actions et statut
- Formulaire de création/édition avec interface intuitive
- Boutons d'activation/désactivation rapide
- Suppression avec confirmation
- Affichage lisible des conditions et actions

Cette fonctionnalité permet de gagner un temps considérable en automatisant le remplissage des champs métier selon des règles métier prédéfinies.
2026-02-11 12:35:26 -05:00
Manus
6e04cbe798 Checkpoint: Ajout du paramètre "Dossier d'export" dans les paramètres de réception
Nouvelle fonctionnalité :
 Champ "Dossier d'export" ajouté dans la page Paramètres de réception
 Permet de configurer le chemin du dossier de destination pour l'export des factures
 Stockage en base de données dans la table importSettings
 Interface utilisateur avec carte dédiée et champ de saisie

Modifications techniques :
- drizzle/schema.ts : Ajout du champ exportFolder (type text, nullable) dans la table importSettings
- server/routers.ts : Ajout de exportFolder dans les routes importSettings.get et importSettings.update
- client/src/pages/ImportSettings.tsx : Ajout du state, initialisation, et carte UI pour le dossier d'export
- Migration de base de données : 0008_orange_prism.sql appliquée avec succès

Utilisation :
1. Accéder à "Paramètres de réception" dans le menu
2. Descendre jusqu'à la section "Dossier d'export"
3. Saisir le chemin absolu du dossier (ex: /chemin/vers/dossier/export)
4. Cliquer sur "Enregistrer les paramètres"
5. Le chemin est sauvegardé et pourra être utilisé pour les exports futurs

Ce paramètre permettra de centraliser la configuration du dossier d'export pour toutes les fonctionnalités d'export de l'application.
2026-02-11 12:26:52 -05:00
Manus
7cb2fee76e Checkpoint: Correction de la détection automatique du champ Abonnement pour utiliser uniquement les mots-clés configurés dans subscriptionKeywords au lieu des mots-clés génériques codés en dur 2026-02-11 10:41:59 -05:00
Manus
4535cd6bdf Checkpoint: Ajout du champ Abonnement (OUI/NON) aux factures avec détection automatique par mots-clés et édition directe dans la liste 2026-02-11 09:54:17 -05:00
Manus
14c50fc8fd Checkpoint: Ajout d'un bouton "Détail" dans la liste des factures pour afficher le texte complet extrait du PDF. Le texte est maintenant demandé à Mistral AI lors de l'extraction et sauvegardé dans la base de données. Une boîte de dialogue affiche le texte complet avec défilement. 2026-02-11 09:30:58 -05:00
Manus
d02961343a Checkpoint: Correction de l'erreur lors de l'ajout d'un service dans la liste des services. La fonction initializeDefaultLists vérifie maintenant les doublons avant insertion. 2026-02-11 08:18:36 -05:00
Manus
4a8be36d00 Checkpoint: Ajout de 3 champs métier aux factures (Service concerné, Type d'achat, Ventilation comptable) avec interface d'administration pour gérer les listes enrichissables. Les champs apparaissent dans la liste des factures et dans le formulaire d'édition. 2026-02-11 08:03:30 -05:00
Manus
2715c9e0c7 Checkpoint: Ajout du bouton "Vérifier maintenant" pour forcer une vérification immédiate des emails sans attendre le prochain cycle automatique. 2026-02-11 05:52:56 -05:00
Manus
fcf9e8f7b7 Checkpoint: Ajout du bouton "Effacer les logs" dans la page Historique d'import avec confirmation de suppression. 2026-02-11 05:24:18 -05:00
Manus
cd61c75c4c Checkpoint: Checkpoint saved: Implémentation complète de l'import automatique depuis dossier et du système de notifications.
Nouvelles fonctionnalités :

**1. Import automatique depuis dossier (folderImportService.ts)**
 Surveillance périodique d'un dossier local configuré
 Détection automatique des nouveaux fichiers PDF
 Traitement identique à l'upload manuel (extraction Mistral AI, détection doublons, stockage)
 Déplacement automatique des fichiers traités vers un sous-dossier "processed"
 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

**2. Système de notifications (notificationService.ts)**
 Notifications automatiques après chaque import (email ou dossier)
 Résumé détaillé : nombre de factures importées, doublons ignorés, erreurs
 Format adapté selon la source (email avec nom de fichier, dossier avec nombre de fichiers)
 Intégration avec le système de notifications Manus (notifyOwner)
 Notifications envoyées au propriétaire du projet

**Fonctionnement de l'import dossier :**
1. L'utilisateur configure le chemin du dossier source dans "Paramètres de réception"
2. Il active l'import automatique et configure la fréquence de vérification
3. Il clique sur "Démarrer le service" pour lancer la surveillance
4. Le service scanne le dossier selon la fréquence configurée
5. Il détecte les nouveaux fichiers PDF (non encore traités)
6. Il traite chaque PDF avec la même logique que l'upload manuel
7. Les fichiers traités sont déplacés vers un sous-dossier "processed"
8. Une notification est envoyée avec le résumé des résultats

**Fonctionnement des notifications :**
- Après chaque import automatique (email ou dossier), une notification est envoyée
- La notification contient :
  * Source de l'import (📧 email ou 📁 dossier)
  * Nom du fichier (email) ou nombre de fichiers (dossier)
  *  Nombre de factures importées
  * 🔄 Nombre de doublons ignorés
  *  Nombre d'erreurs
  * Total de factures détectées
- Les notifications apparaissent dans l'interface Manus du propriétaire

**Interface utilisateur :**
- Chaque carte (Import dossier, Import email) dispose maintenant de :
  * Indicateur visuel "Service actif" avec point vert animé
  * Bouton "Démarrer le service" (désactivé si l'import 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 :**
- chokidar : Surveillance de fichiers et dossiers pour Node.js

**Architecture :**
- folderImportService.ts : Service d'import automatique depuis dossier
- notificationService.ts : Service de notifications centralisé
- Routes tRPC : folderImportService.{start, stop, status}
- Intégration des notifications dans emailImportService et folderImportService

Les deux services d'import automatique (email et dossier) sont maintenant opérationnels avec notifications intégrées.
2026-02-11 05:16:44 -05:00
Manus
ff916d6a79 Checkpoint: Checkpoint saved: Implémentation complète de l'import automatique par email.
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.
2026-02-11 05:08:45 -05:00
Manus
35efbf632d Checkpoint: Checkpoint saved: Ajout d'une page "Paramètres de réception" complète pour configurer les différentes méthodes d'import de factures.
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.
2026-02-10 12:05:23 -05:00
Manus
4690b16c9f Checkpoint: Correction critique du système de stockage des fichiers PDF.
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.
2026-01-12 14:56:23 -05:00
Manus
d7d7d98940 Checkpoint: Correction du formulaire d'édition et ajout de logs pour diagnostic.
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.
2026-01-12 14:41:29 -05:00
Manus
63c2afea1f Checkpoint: Ajout des filtres par statut d'export, export Excel et page de détail avec édition manuelle.
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.
2026-01-08 10:19:05 -05:00
Manus
d24f7c5569 Checkpoint: Modification de la page Factures avec sélection multiple et export PDF.
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.
2026-01-08 09:17:29 -05:00
Manus
a237057b77 Checkpoint: Ajout d'un tableau de bord détaillé avec statistiques avancées et graphiques.
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.
2026-01-08 08:56:35 -05:00
Manus
a56e6c58f4 Checkpoint: Correction du système d'authentification locale pour supporter le cookie auth_token.
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.
2026-01-08 08:43:05 -05:00
Manus
5a01860aba Checkpoint: Application complète de dématérialisation de facturation avec extraction IA (Mistral), authentification locale + Azure AD, stockage local, et export SFTP.
Fonctionnalités implémentées :
 Authentification locale (email/password) + Azure AD + Manus OAuth
 Upload drag-and-drop de fichiers PDF avec suivi en temps réel
 Extraction automatique avec Mistral AI (OCR + LLM)
 Détection de doublons (fournisseur, numéro, date)
 Score de qualité d'extraction (0-100)
 Tableau de bord avec statistiques
 Liste des factures avec recherche et filtres
 Paramètres utilisateur (LLM, keywords, SFTP)
 Historique des imports avec logs détaillés
 Gestion des utilisateurs (admin)
 Export SFTP manuel/automatique
 Stockage local avec organisation YYYY-MM
 Tests unitaires d'authentification

Architecture :
- Frontend : React 19 + Vite + TailwindCSS + Radix UI
- Backend : Express + tRPC + Drizzle ORM
- Base de données : MySQL (6 tables)
- IA : Mistral AI pour extraction
- Stockage : Local filesystem
- Export : SFTP

Pages :
- Login (choix local/Azure/Manus)
- Dashboard (statistiques)
- Upload (drag-and-drop)
- Invoices (liste avec recherche)
- Settings (LLM, keywords, SFTP)
- History (logs d'import)
- Users (gestion admin)
2026-01-08 06:02:07 -05:00
Manus
205b6061ef Initial project bootstrap 2026-01-08 05:47:56 -05:00