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
5.7 KiB
5.7 KiB
Invoice Analyzer - TODO
Phase 1: Base de données et schéma
- Créer table users avec support authentification locale + Azure AD
- Créer table sourceFiles pour fichiers PDF uploadés
- Créer table invoices pour factures extraites
- Créer table userSettings pour paramètres utilisateur
- Créer table importLogs pour historique des imports
- Créer table llmLogs pour logs des appels LLM
- Pousser les migrations avec pnpm db:push
Phase 2: Authentification
- Implémenter authentification locale (email/password avec bcrypt)
- Implémenter authentification Azure AD avec MSAL
- Créer helpers de génération de tokens JWT
- Créer middleware de vérification des rôles (user/admin)
Phase 3: Stockage et extraction IA
- Créer helper de stockage local avec préfixe YYYY-MM
- Implémenter extraction PDF avec Mistral OCR
- Implémenter extraction de métadonnées avec Mistral LLM
- Créer système de scoring de qualité (0-100)
- Implémenter détection de doublons
- Créer helper de génération de fichiers JSON de métadonnées
- Implémenter logger LLM pour debug
Phase 4: Export SFTP
- Créer helper de connexion SFTP
- Implémenter export manuel de factures
- Implémenter export automatique de factures
- Créer test de connexion SFTP
Phase 5: Routes tRPC
- Routes auth (me, loginLocal, getAzureLoginUrl, logout)
- Routes invoices (upload, list, getById, update, delete, search, getStats)
- Routes sourceFiles (getByIds pour polling)
- Routes settings (get, upsert)
- Routes admin (createUser, getAllUsers, updatePassword, toggleActive, deleteUser)
- Routes sftp (testConnection, exportInvoices)
- Routes importLogs (getByUser)
- Routes llmLogs (getBySourceFile, getByInvoice)
Phase 6: Pages Frontend
- Page Login avec formulaire local + bouton Azure AD
- Page Dashboard avec statistiques et graphiques
- Page Upload avec drag-and-drop et suivi temps réel
- Page Invoices avec liste, recherche, filtres, pagination
- Page Settings avec configuration LLM, keywords, SFTP
- Page History avec logs et détails
- Page Users (admin) pour gestion des utilisateurs
- Layout avec navigation adaptée (DashboardLayout)
- Configuration des routes dans App.tsx
Phase 7: Tests et finalisation
- Tests unitaires d'authentification (hashPassword, verifyPassword, JWT)
- Tests de logout avec cookies multiples
- Vérification du build et de la compilation TypeScript
- Vérification du serveur de développement
- Créer le checkpoint final
Corrections et améliorations
-
Créer un utilisateur administrateur avec login adminServFacturation
-
Tester la connexion locale avec le nouvel utilisateur
-
Modifier l'email de l'administrateur de adminServFacturation à o.pareige@itinova.org
-
Diagnostiquer le problème de connexion locale avec o.pareige@itinova.org
-
Corriger l'authentification locale (ajout support cookie auth_token)
Amélioration du Dashboard
- Créer route tRPC pour statistiques détaillées (factures par semaine, top fournisseurs)
- Créer cartes de statistiques (Factures traitées, Montant total, Score moyen, Dernière activité)
- Créer graphique en barres des factures par semaine (Recharts)
- Créer graphique circulaire du top 10 fournisseurs (Recharts)
- Créer liste détaillée des fournisseurs avec nombre de factures
- Ajouter bouton "Voir les statistiques détaillées"
Modification page Factures - Export PDF
- Ajouter champ exportStatus dans le schéma invoices (exported/not_exported/export_error)
- Ajouter champ exportedAt dans le schéma invoices (déjà existant)
- Créer route tRPC pour exporter les factures en PDF
- Créer route tRPC pour mettre à jour le statut d'export
- Ajouter cases à cocher pour sélection multiple dans la page Factures
- Ajouter case "Tout sélectionner"
- Modifier l'affichage des statuts (Exporté/Non exporté/Erreur export)
- Ajouter bouton "Exporter" (actif uniquement pour score 100%)
- Implémenter le téléchargement de PDF pour les factures sélectionnées
- Valider que seules les factures avec score 100% peuvent être exportées
Nouvelles fonctionnalités
- Ajouter des boutons de filtre par statut d'export (Tous/Exportés/Non exportés/Erreurs)
- Créer route tRPC pour export Excel
- Créer page InvoiceDetail avec visualisation des métadonnées
- Ajouter formulaire d'édition manuelle des champs
- Implémenter la mise à jour des métadonnées
- Recalculer le score de qualité après édition manuelle
- Ajouter bouton "Export Excel" dans la page Factures
- Générer fichier Excel avec toutes les métadonnées
Correction export PDF
- Diagnostiquer le problème d'export PDF (URLs non accessibles)
- Corriger la route exportToPdf pour retourner les bonnes URLs
- Modifier le code client pour ouvrir les PDFs dans de nouveaux onglets
- Ajouter un délai entre chaque ouverture pour éviter le blocage des popups
Correction erreur 404 PDF
- Vérifier la configuration Express pour servir les fichiers statiques
- Vérifier les URLs générées pour les fichiers PDF
- Identifier que les fichiers n'ont pas été stockés lors de l'import initial
- Ajouter bouton "Supprimer" pour supprimer les factures sélectionnées
- Créer le dossier storage pour le stockage local
Correction bouton Supprimer
- Permettre la sélection de toutes les factures pour suppression (pas seulement celles à 100%)
- Séparer la logique de sélection pour export et suppression
- Supprimer les restrictions disabled sur les checkboxes
- Ajouter validation pour export PDF (seulement score 100%)