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)
This commit is contained in:
59
todo.md
Normal file
59
todo.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user