🧠 Architecture & Fonctionnement Backend
Découvrez comment le backend Flask et la base de données MongoDB orchestrent le téléchargement, le hachage, l'indexation et l'analyse des données de formation.
1. Importation Journalière & Traitement DDL
Le système intègre la logique des scripts 00_DDL_JSON.py et 02_populate_db.py pour automatiser le flux d'alimentation :
- Téléchargement Résilient : Connexion à l'API
data.gouv.fravec gestion automatique des tentatives (Retry Strategy HTTP) pour récupérer la dernière version du catalogue au format JSON. - Lecture en Streaming (ijson) : Traitement itératif de très gros fichiers JSON sans charger l'intégralité en mémoire RAM.
- Dédoublonnement par Hash SHA-256 : Sérialisation canonique (tri des clés JSON) pour générer une empreinte unique (Hash) pour chaque offre de formation.
- Upsert MongoDB ($addToSet) : Si une formation existe déjà, sa nouvelle date d'extraction est ajoutée au tableau
datessans créer de doublon. Si elle est nouvelle, elle est insérée.
2. Indexation MongoDB Haute Performance
Conformément au script 01_create_indexes.py, trois index stratégiques sont automatiquement créés au démarrage de l'application :
🔑 Index Unique (Hash)
Garantit la clé primaire métier et permet des recherches et upserts instantanés O(1).
📅 Index Multiclés (dates)
Optimise les requêtes de recherche par date spécifique en indexant directement le tableau d'historique.
📝 Index Textuel (Français)
Pondération et recherche linguistique $text sur les intitulés, objectifs et résultats attendus.
3. Pipelines de Requêtes & Graphiques
Le serveur Flask expose des endpoints JSON exploitant les algorithmes définis dans 03_run_queries.py et 04_query_keyword_and_date.py :
{ "$match": { "$text": { "$search": mot_cle } } },
{ "$unwind": "$dates" },
{ "$group": { "_id": "$dates", "total_occurrences": { "$sum": 1 } } },
{ "$sort": { "_id": 1 } }
]