# 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