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

  1. Copier et modifier le fichier .env :
cp .env .env.local
  1. 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

Compte administrateur par défaut

Champ Valeur
Email 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 - Connexion
  • GET /api/auth/me - Profil utilisateur courant
  • GET /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 - Statistiques
  • GET /api/invoices/:id - Détail d'une facture
  • POST /api/invoices/upload - Upload et OCR
  • PUT /api/invoices/:id - Modifier une facture
  • PUT /api/invoices/:id/lines - Modifier les lignes
  • POST /api/invoices/:id/status - Changer le statut (workflow)
  • POST /api/invoices/:id/match - Rapprochement BC
  • GET /api/invoices/:id/file - Télécharger le fichier original
  • DELETE /api/invoices/:id - Supprimer (admin)

Fournisseurs

  • GET /api/suppliers - Liste
  • GET /api/suppliers/:id - Détail
  • POST /api/suppliers - Créer
  • PUT /api/suppliers/:id - Modifier
  • DELETE /api/suppliers/:id - Désactiver

Bons de commande

  • GET /api/purchase-orders - Liste
  • GET /api/purchase-orders/:id - Détail
  • POST /api/purchase-orders - Créer
  • PUT /api/purchase-orders/:id - Modifier
  • DELETE /api/purchase-orders/:id - Supprimer

Exports

  • GET /api/exports/invoices/csv - Export CSV
  • GET /api/exports/invoices/excel - Export Excel
  • GET /api/exports/cegi - Export CEGI (préparatoire)

Dashboard

  • GET /api/dashboard - Données du tableau de bord

Notifications

  • GET /api/notifications - Liste
  • PUT /api/notifications/:id/read - Marquer comme lue
  • PUT /api/notifications/read-all - Tout marquer comme lu
  • GET /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
Gestion de la réception et du traitement des factures - Facturation SANTINOVA
Readme 513 KiB
Languages
TypeScript 98.3%
Dockerfile 0.8%
CSS 0.6%
JavaScript 0.2%
HTML 0.1%