DiffFetch
Moteur de comparaison intelligent entre les donnees d'inscriptions DPC et l'API Dendreo, pour un suivi precis et automatise de vos formations.
Qu'est-ce que DiffFetch ?
DiffFetch est une application SaaS professionnelle concue pour les organismes de formation. Elle permet de croiser automatiquement les donnees d'inscriptions issues du portail DPC (Developpement Professionnel Continu) avec les informations de gestion provenant de l'API Dendreo.
L'objectif : offrir une vision claire et fiable de l'etat des inscriptions, detecter les anomalies en temps reel et simplifier le suivi administratif des formations de sante.
Comment ca fonctionne ?
1
Collecte des donnees
Import automatique des inscriptions DPC via Google Sheets et recuperation des donnees Dendreo via API.
2
Croisement intelligent
Comparaison des enregistrements par RPPS, nom, session et dates pour identifier les correspondances.
3
Detection des ecarts
Identification automatique des anomalies : inscriptions manquantes, desistements, ecarts de montants.
4
Reporting
Tableau de bord en temps reel, statistiques detaillees et export CSV pour le pilotage.
Fonctionnalites cles
🔄
Comparaison automatique
Croisement quotidien automatise des deux sources de donnees avec rafraichissement programmable.
⚠
Detection d'anomalies
Alertes sur les inscriptions incoherentes, les desistements non reportes et les ecarts financiers.
📊
Statistiques avancees
Tableaux de bord interactifs avec graphiques, tendances et indicateurs de performance.
👥
Multi-utilisateurs
Gestion des comptes avec roles differencies (administrateur, utilisateur) et journal d'audit.
L'equipe
LJ
Leo Lejeau
Fondateur et developpeur de DiffFetch
difffetch.app@gmail.com · 07 78 04 23 70
Architecture technique
DiffFetch est une application web monolithique construite avec des technologies eprouvees, concue pour etre simple a deployer et a maintenir.
☁
Backend
Python 3 / Flask. Serveur leger, pas de dependances lourdes.
💾
Base de donnees
SQLite — fichier local, zero configuration, sauvegarde simple.
🌐
Frontend
HTML / CSS / JS natif. Google Material Design. Chart.js pour les graphiques.
🔒
Securite
bcrypt, CSRF tokens, rate limiting, audit log complet.
Ou sont stockees les donnees ?
Toutes les donnees sont stockees localement sur le serveur qui heberge DiffFetch. Aucune donnee n'est envoyee vers des serveurs tiers (hors les appels API necessaires au fonctionnement).
📁 Base de donnees SQLite (keynove.db)
Un fichier unique contenant toutes les tables de l'application :
- users — Comptes utilisateurs (identifiants, mots de passe haches en bcrypt, roles, dates de connexion)
- comparison_results — Historique complet des resultats de croisement, jour par jour (nom, prenom, RPPS, session, statut OK/KO/attente, montants DPC et Dendreo, details). C'est la memoire de l'application.
- dpc_emails — Emails DPC recus via le webhook Make.com (mode webhook uniquement)
- audit_log — Journal de toutes les actions : connexions, comparaisons, exports, modifications
- app_config — Parametres de configuration dynamiques
📡 Sources de donnees externes (en lecture seule)
- Google Sheets (Source A — DPC) — DiffFetch lit les fichiers Google Sheets contenant les inscriptions et desinscriptions DPC. Les donnees ne sont jamais modifiees par l'application. Les Sheet IDs sont configures dans le fichier
.env.
- API Dendreo (Source B) — DiffFetch interroge l'API REST de Dendreo pour recuperer la liste des participants inscrits aux formations. L'appel utilise 2 credits API par synchronisation. Un cache local chiffre est conserve pour eviter des appels inutiles.
🛡 Cache Dendreo chiffre
Pour limiter les appels API, DiffFetch conserve un backup chiffre (AES-256) des donnees Dendreo dans le dossier backups/. Ce cache est automatiquement rafraichi a chaque synchronisation et permet de fonctionner meme si l'API Dendreo est temporairement indisponible.
📄 Fichier de configuration (.env)
Toute la configuration sensible est stockee dans un fichier .env a la racine de l'application : cles API, identifiants de connexion aux sources, parametres du scheduler. Ce fichier n'est jamais expose et n'est pas versionne.
Fonctionnement du moteur de croisement
Le coeur de DiffFetch est son moteur de croisement intelligent qui compare chaque inscription DPC avec les donnees Dendreo selon une hierarchie de confiance :
Etape 1 — Collecte
A l'heure programmee (par defaut 19h30), DiffFetch recupere les inscriptions et desinscriptions du jour depuis les Google Sheets DPC, ainsi que la liste complete des participants depuis l'API Dendreo.
Etape 2 — Matching multi-criteres
Chaque inscription DPC est comparee avec les enregistrements Dendreo selon cette hierarchie (du plus fiable au moins fiable) :
- Niveau 1 : RPPS + Session — Correspondance parfaite. Le numero RPPS est unique par professionnel de sante.
- Niveau 2 : Nom + Prenom + Session — Matching nominal avec normalisation (accents, casse, tirets).
- Niveau 3 : Nom + Session seule — Quand le prenom est manquant ou differe entre les sources.
- Niveau 4 : RPPS seul — Le professionnel est dans Dendreo mais pas pour la meme session.
Etape 3 — Classification
Chaque inscription recoit un statut :
- OK — Correspondance trouvee dans Dendreo, montants coherents
- PAS OK (Anomalie) — Ecart detecte : montant different, session incoherente, donnees manquantes
- EN ATTENTE — Inscription DPC non trouvee dans Dendreo (pas encore saisie ou en cours de traitement)
- DESINSCRIPTION — Le professionnel s'est desinscrit de la formation
Etape 4 — Persistance
Les resultats sont sauvegardes dans la base de donnees pour constituer un historique. Chaque jour ajoute ses resultats sans ecraser les precedents, permettant de suivre l'evolution dans le temps via la page Statistiques.
Securite et protection des donnees
- Authentification securisee — Mots de passe haches avec bcrypt (algorithme irreversible). Aucun mot de passe n'est stocke en clair.
- Protection CSRF — Chaque session dispose d'un token CSRF unique pour empecher les attaques de type Cross-Site Request Forgery.
- Rate limiting — Limitation du nombre de tentatives de connexion pour empecher les attaques par force brute (blocage temporaire apres plusieurs echecs).
- Journal d'audit — Toutes les actions sont tracees : connexions, comparaisons, exports, modifications de comptes. Consultable par les administrateurs.
- Gestion des roles — Trois niveaux d'acces : administrateur (acces complet), editeur (comparaison et sources), lecteur (consultation uniquement).
- Donnees locales — Aucun cloud tiers. Les donnees restent sur votre serveur. Les sauvegardes Dendreo sont chiffrees en AES-256.
- Cookies de session — Seul un cookie de session (HttpOnly, Secure) est utilise. Aucun traceur, aucun cookie tiers, aucune analyse comportementale.
Contact
Pour toute question, suggestion ou demande d'information concernant DiffFetch :
- Email : difffetch.app@gmail.com
- Telephone : 07 78 04 23 70
- Adresse : 134 bis rue Louis Rouquier, 92300 Levallois-Perret
- Site web : difffetch.com
DiffFetch v4.2 — Application de croisement DPC / Dendreo
Python 3 · Flask · SQLite · Chart.js · Google Material Design