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