cceac3d35be66ff6dd610a1d656947968aca8157
Facturation SANTINOVA
Application web complète de gestion de la réception et du traitement des factures pour l'entreprise SANTINOVA.
Fonctionnalités
Réception multi-canal des factures
- Upload manuel (PDF, images, scans)
- Préparation pour réception par email (intégration future)
- Préparation pour import depuis portail fournisseur (intégration future)
- Support des documents scannés
Extraction automatique par OCR/IA
- Extraction via OpenAI Vision API (GPT-4.1-mini)
- Détection automatique : fournisseur, numéro de facture, dates, montants
- Extraction des lignes de détail
- Score de confiance OCR
- Création automatique des fournisseurs détectés
Classement et archivage
- Classement par fournisseur, date, statut
- Archivage des documents originaux (PDF/images)
- Recherche full-text sur le contenu des factures
Workflow de validation/approbation
- Statuts : Reçue → En vérification → Validée → Approuvée → Payée → Archivée
- Rôles : Opérateur, Validateur, Approbateur, Administrateur
- Historique complet des actions (audit log)
- Contrôle des permissions par rôle
Rapprochement avec bons de commande
- Gestion complète des bons de commande
- Rapprochement automatique/manuel facture ↔ bon de commande
- Détection des écarts de montant
- Alertes en cas d'écart significatif
Suivi des échéances de paiement
- Tableau de bord des échéances
- Alertes pour factures en retard
- Alertes pour factures proches de l'échéance (7 jours)
- Statistiques par fournisseur et par période
Exports comptables
- Export CSV (compatible tableurs)
- Export Excel (XLSX formaté)
- Module préparatoire CEGI Compta First (intégration future)
Dashboard
- Vue d'ensemble : KPIs, factures en attente, montants
- Graphiques : répartition par statut, évolution mensuelle, top fournisseurs
- Actions en attente selon le rôle de l'utilisateur
Authentification et gestion des utilisateurs
- Authentification JWT
- Gestion des rôles et permissions
- CRUD utilisateurs (admin uniquement)
Stack technique
| Composant | Technologie |
|---|---|
| Backend | Node.js + Express + TypeScript |
| Frontend | React + Vite + TypeScript + Tailwind CSS |
| Base de données | MySQL 8.0 avec Drizzle ORM |
| OCR/IA | OpenAI Vision API (GPT-4.1-mini) |
| Graphiques | Chart.js + react-chartjs-2 |
| Authentification | JWT (jsonwebtoken + bcryptjs) |
| Upload | Multer |
| Export | xlsx (SheetJS) |
| Conteneurisation | Docker + Docker Compose |
Déploiement avec Docker
Prérequis
- Docker et Docker Compose installés
- Clé API OpenAI (optionnelle, pour l'OCR)
Configuration
- Copier et modifier le fichier
.env:
cp .env .env.local
- Modifier les variables dans
.env.local:
DB_ROOT_PASSWORD=votre_mot_de_passe_db
JWT_SECRET=votre_secret_jwt_unique
OPENAI_API_KEY=votre_cle_api_openai
APP_PORT=8080
Lancement
# Construire et démarrer tous les services
docker compose up -d --build
# Vérifier les logs
docker compose logs -f
# Arrêter les services
docker compose down
Accès
- Application : http://localhost:8080
- API : http://localhost:8080/api
- Health check : http://localhost:8080/api/health
Compte administrateur par défaut
| Champ | Valeur |
|---|---|
adminItinova@santinova-soft.org |
|
| Mot de passe | Itinova69! |
Développement local
Backend
cd backend
npm install
cp .env.example .env
# Modifier .env avec vos paramètres
npm run db:migrate
npm run db:seed
npm run dev
Frontend
cd frontend
npm install
npm run dev
Le frontend est accessible sur http://localhost:5173 et proxifie les appels API vers le backend sur le port 3001.
Structure du projet
facturation-santinova/
├── backend/
│ ├── src/
│ │ ├── config/ # Configuration DB
│ │ ├── db/ # Schéma, migrations, seed
│ │ ├── middleware/ # Auth JWT, upload Multer
│ │ ├── routes/ # Routes API Express
│ │ ├── services/ # Services (OCR, audit)
│ │ └── index.ts # Point d'entrée serveur
│ ├── uploads/ # Stockage des fichiers
│ ├── package.json
│ └── tsconfig.json
├── frontend/
│ ├── src/
│ │ ├── components/ # Composants React (Layout)
│ │ ├── context/ # Contexte Auth
│ │ ├── pages/ # Pages de l'application
│ │ ├── services/ # Client API Axios
│ │ ├── types/ # Types TypeScript
│ │ └── utils/ # Utilitaires (formatage)
│ ├── package.json
│ └── vite.config.ts
├── Dockerfile # Build multi-stage production
├── Dockerfile.migrate # Migration et seed DB
├── docker-compose.yml # Orchestration Docker
├── .env # Variables d'environnement
└── README.md
API Endpoints
Authentification
POST /api/auth/login- ConnexionGET /api/auth/me- Profil utilisateur courantGET /api/auth/users- Liste des utilisateurs (admin)POST /api/auth/users- Créer un utilisateur (admin)PUT /api/auth/users/:id- Modifier un utilisateur (admin)DELETE /api/auth/users/:id- Désactiver un utilisateur (admin)
Factures
GET /api/invoices- Liste des factures (paginée, filtrable)GET /api/invoices/stats- StatistiquesGET /api/invoices/:id- Détail d'une facturePOST /api/invoices/upload- Upload et OCRPUT /api/invoices/:id- Modifier une facturePUT /api/invoices/:id/lines- Modifier les lignesPOST /api/invoices/:id/status- Changer le statut (workflow)POST /api/invoices/:id/match- Rapprochement BCGET /api/invoices/:id/file- Télécharger le fichier originalDELETE /api/invoices/:id- Supprimer (admin)
Fournisseurs
GET /api/suppliers- ListeGET /api/suppliers/:id- DétailPOST /api/suppliers- CréerPUT /api/suppliers/:id- ModifierDELETE /api/suppliers/:id- Désactiver
Bons de commande
GET /api/purchase-orders- ListeGET /api/purchase-orders/:id- DétailPOST /api/purchase-orders- CréerPUT /api/purchase-orders/:id- ModifierDELETE /api/purchase-orders/:id- Supprimer
Exports
GET /api/exports/invoices/csv- Export CSVGET /api/exports/invoices/excel- Export ExcelGET /api/exports/cegi- Export CEGI (préparatoire)
Dashboard
GET /api/dashboard- Données du tableau de bord
Notifications
GET /api/notifications- ListePUT /api/notifications/:id/read- Marquer comme luePUT /api/notifications/read-all- Tout marquer comme luGET /api/notifications/count- Compteur non lues
Intégrations futures prévues
- CEGI Compta First : Module d'export comptable complet
- Réception email : Parsing automatique des factures reçues par email
- Portail fournisseur : Import automatisé depuis les portails
- Notifications email : Alertes par email pour les échéances
Licence
Propriétaire - SANTINOVA
Description
Languages
TypeScript
98.3%
Dockerfile
0.8%
CSS
0.6%
JavaScript
0.2%
HTML
0.1%