TaxHub
Service de gestion taxonomique de l'ecosysteme GeoNature avec 4 PR (1 mergee) et 10 issues personnelles entre 2024 et 2026. Les contributions couvrent l'optimisation des routes taxonomiques backend et l'amelioration du chargement des relations imbriquees.
🎯 Contexte et objectifs
- Faire évoluer des applications naturalistes en production sur des flux critiques: import, synthèse, monitoring, taxonomie et gestion des utilisateurs.
- Stabiliser les interfaces backend/frontend via des contrats API plus robustes, du filtrage/pagination, des formulaires dynamiques et une gestion d'erreurs homogène.
- Réduire les corrections manuelles côté métier en améliorant la cohérence des modèles de données, les retours d'administration et les parcours UI.
🧩 Conception
- #projet-taxhub : PR mergée : #684 a optimisé l'import massif de
cd_nomavec traitement par lots, insertion idempotente et retour d'administration détaillé.
💻 Développement
#projet-taxhub : #684 a optimisé l'import massif de
cd_nompar validation en lots,ON CONFLICT DO NOTHINGet calcul de statistiques de retour pour l'administration. Source: PR #684.def _populate_bib_liste_batch(id_list, input_cd_noms): valid_cd_noms = set() unique_input_cd_noms = sorted(set(input_cd_noms)) for batch in _chunked(unique_input_cd_noms, 5000): query = select(Taxref.cd_nom).where(Taxref.cd_nom.in_(batch)) valid_cd_noms.update(db.session.execute(query).scalars().all()) inserted_count = 0 sorted_valid_cd_noms = sorted(valid_cd_noms) for batch in _chunked(sorted_valid_cd_noms, 5000): values = [{"id_liste": id_list, "cd_nom": cd_nom} for cd_nom in batch] insert_stmt = ( pg_insert(cor_nom_liste) .values(values) .on_conflict_do_nothing( index_elements=[cor_nom_liste.c.id_liste, cor_nom_liste.c.cd_nom] ) .returning(cor_nom_liste.c.cd_nom) ) inserted_count += len(db.session.execute(insert_stmt).scalars().all())
📈 Résultats
- Nb PR: 1
- Nb commits: 1
- Nb issues: 10
- Période: 21 novembre 2024 au 9 mars 2026
Technologies utilisées
Backend
Flask
Python
Bases de donnees (SGBD & SQL)
PostgreSQL
Design Patterns & Architecture
SQLAlchemy