Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Fiche taxon] Ajout d'un onglet "Observateurs" dans la fiche taxon #3204

Open
wants to merge 20 commits into
base: develop
Choose a base branch
from

Conversation

edelclaux
Copy link
Contributor

@edelclaux edelclaux commented Sep 26, 2024

Closes #3203

Il s'agit de créer un onglet observateur dans la fiche taxon.
L'issue est assez détaillée sur les fonctionnalités, je propose de se référer à cette dernière concernant les propos du développement.

image

Description sommaire du développement réalisé

Config

Ce travail s’appuie sur les modifications réalisées dans la PR #3205

Route

La route associée est déclarée seulement si la config l'autorise.

La route ajoutée species_observers\<cd_ref> a été placée au même niveau que les autres routes de la synthèse.
On pourrait envisager de restructurer les routes associées à la fiche espèce. On est à l'écoute :)

Requête

En l'état, la requête ne s’appuie pas sur une Vue / Vue matérialisée. Il reste à évaluer si il n'y aurait pas besoin de fonctionner différemment.

Des éléments du calcul du retour ont été décalé dans des fonctions dédiées "SpeciesSheetUtils" permettant de centraliser certaines fonctions, comme la récupération des cd_nom associés à un cd_ref.
Il y a certainement des choses qui sont déjà développées à droite ou à gauche, à mutualiser avec d'autres appels à d'autres endroits. En l'état, je ne savais pas où placer ce genre de méthode dans le backend.

Frontend

La gestion de la liste paginée est appuyée par un objet Pagination contenant les éléments de paginations. De la même manière que pour la requête, cet objet pourrait être réutilisé ailleurs. Mais je ne sais pas où placer ce genre de choses dans le frontend.

Copy link

codecov bot commented Sep 26, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 82.10%. Comparing base (5c3e6bc) to head (79db916).
Report is 2 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #3204      +/-   ##
===========================================
+ Coverage    81.95%   82.10%   +0.15%     
===========================================
  Files           86       87       +1     
  Lines         6964     7024      +60     
===========================================
+ Hits          5707     5767      +60     
  Misses        1257     1257              
Flag Coverage Δ
pytest 82.10% <100.00%> (+0.15%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@camillemonchicourt
Copy link
Member

OK merci.
Je comprends pas comment les paramètres fonctionnent et s'écrivent. C'est trop du python pour moi.
Possible de mettre un exemple dans le fichier d'exemple de conf (https://github.com/PnX-SI/GeoNature/blob/develop/config/default_config.toml.example) ?
Merci.

@edelclaux
Copy link
Contributor Author

OK merci. Je comprends pas comment les paramètres fonctionnent et s'écrivent. C'est trop du python pour moi. Possible de mettre un exemple dans le fichier d'exemple de conf (https://github.com/PnX-SI/GeoNature/blob/develop/config/default_config.toml.example) ? Merci.

OK merci. Je comprends pas comment les paramètres fonctionnent et s'écrivent. C'est trop du python pour moi. Possible de mettre un exemple dans le fichier d'exemple de conf (https://github.com/PnX-SI/GeoNature/blob/develop/config/default_config.toml.example) ? Merci.

Comme ça.
https://github.com/naturalsolutions/geonature/blob/7706dae9f267ad78839e68a3327eddab81477173/config/default_config.toml.example#L444C5-L446C23

@camillemonchicourt
Copy link
Member

OK merci, c'est bien utile pour moi.
Sauf erreur de ma part, si je regarde les autres paramètres existants, on ne devrait pas plutôt être sur :

[SYNTHESE.SPECIES_SHEET]
        # Permet d'activer l'onglet "Observateurs" dans la fiche espèce, et la route liée (permettant de récupérer les observateurs par espèce)
        ENABLE_OBSERVERS = true

?

@camillemonchicourt
Copy link
Member

Il faut bien que la liste des observateurs et le nombre de données observées par chacun soient eux aussi basés sur les permissions du R Sysnthèse et notamment leur éventuel SCOPE.

Si j'ai un SCOPE 2, alors je ne vois que les observateurs des observations liées à ce SCOPE et le nombre d'observation cohérent.

Cela pour garantir la cohérence globale avec ce que je vois par ailleurs dans la fiche espèce et dans le module Synthèse.

@edelclaux
Copy link
Contributor Author

Il faut bien que la liste des observateurs et le nombre de données observées par chacun soient eux aussi basés sur les permissions du R Sysnthèse et notamment leur éventuel SCOPE.

Si j'ai un SCOPE 2, alors je ne vois que les observateurs des observations liées à ce SCOPE et le nombre d'observation cohérent.

Cela pour garantir la cohérence globale avec ce que je vois par ailleurs dans la fiche espèce et dans le module Synthèse.

Le scope est contrôlé par:

https://github.com/naturalsolutions/geonature/blob/10df0848316fb80dfefe506b67c39455cddd5878/backend/geonature/core/gn_synthese/routes.py#L1054

qui appelle

https://github.com/naturalsolutions/geonature/blob/10df0848316fb80dfefe506b67c39455cddd5878/backend/geonature/core/gn_synthese/utils/species_sheet.py#L17C1-L21C40

@edelclaux edelclaux force-pushed the feat/species-pages/observers branch 5 times, most recently from 9ca78a2 to 277625c Compare October 4, 2024 16:16
@edelclaux edelclaux marked this pull request as ready for review October 4, 2024 16:27
@edelclaux edelclaux changed the title Feat/species page/observers: Ajout d'un onglet "Observateurs" dans la fiche espèce [Fiche taxon] Ajout d'un onglet "Observateurs" dans la fiche taxon Oct 4, 2024
@edelclaux
Copy link
Contributor Author

Codecov Report

Attention: Patch coverage is 82.97872% with 8 lines in your changes missing coverage. Please review.

Project coverage is 81.83%. Comparing base (c3f7f65) to head (277625c).
Report is 5 commits behind head on develop.

Files with missing lines Patch % Lines
backend/geonature/core/gn_synthese/routes.py 77.27% 5 Missing ⚠️
...nd/geonature/core/gn_synthese/utils/taxon_sheet.py 86.95% 3 Missing ⚠️
Additional details and impacted files

☔ View full report in Codecov by Sentry. 📢 Have feedback on the report? Share it here.

Cette PR doit être traitée APRÈS la PR de mise à jour de la config / du vocabulaire / des fixtures #3205

@edelclaux edelclaux force-pushed the feat/species-pages/observers branch 6 times, most recently from c11e75a to 04b433a Compare October 8, 2024 10:43
@edelclaux edelclaux marked this pull request as draft October 8, 2024 12:35
@edelclaux edelclaux force-pushed the feat/species-pages/observers branch 2 times, most recently from c76c608 to 8fe4062 Compare October 17, 2024 10:42
@edelclaux
Copy link
Contributor Author

edelclaux commented Oct 25, 2024

Résumé des échanges / tests

Discussion: Table cor_observer_synthese VS champs observers

--> pas de remise en cause de cor_observer_synthese
Ici, on utilisera donc le champs observers.

Discussion: Parsing du champs observers: dynamique vs statique

Dynamique: parser le champs à la volée

  • avantage: dynamique
  • inconvénient: lourd

Statique: VM de correspondance + tâche celery

  • avantage: dans un recoin
  • inconvénient: maj quotidiennes

Tests réalisés

Les tests réalisés ont donné les résultats suivants:

Ce test comprend l'intégralité de la requête, avec par exemple la jointure sur les médias incluse.

Sur un taxon contenant beaucoup d'observation, (le merle noir sur les données de l'ARB IDF):

  • Nombre d'observation: > 40000 observations de ce taxon
  • Durée de la requête: immédiat

Sur l'intégralité d'une base réelle:

  • Nombre d'observation: > 3200000
  • Durée de la requête: 8-9 secondes

Conclusion

A mon avis, on reste dans des durées d'éxecution corrects.

On peut rester sur la solution dynamique, en parsant le chmaps osbervers à la volée, avec un séparateur inscrit dans la config.

Est-ce que vous confirmez ?

@camillemonchicourt
Copy link
Member

320000 observations c'est un instance plutôt légère.
On a souvent au moins 1 ou 2 millions d'observations et des champs "observateurs" assez hétérogènes.
Donc si on met 9 secondes avec 320000 observations, ça vaut le coup de tester avec plus d'un million d'observations, car ça peut devenir rédhibitoire.

@edelclaux
Copy link
Contributor Author

320000 observations c'est un instance plutôt légère. On a souvent au moins 1 ou 2 millions d'observations et des champs "observateurs" assez hétérogènes. Donc si on met 9 secondes avec 320000 observations, ça vaut le coup de tester avec plus d'un million d'observations, car ça peut devenir rédhibitoire.

J'ai oublié un zéro ! C'est 3 200 000 observations ^^ (je mets à jour le texte)

@camillemonchicourt
Copy link
Member

Ah oui OK, là ça commence à être pas mal en effet et bien représentatif.
9 secondes, un peu trop long mais acceptable. Et compréhensible au regard du choix de se baser sur un champs texte.
Peut-être afficher un petit loader le temps que ça se charge.

@edelclaux edelclaux marked this pull request as ready for review October 29, 2024 09:57
@edelclaux
Copy link
Contributor Author

J'ai rajouté le loader.

J'ai mis la PR en "prête à être revue" étant donné les deniers échanges.

@edelclaux edelclaux force-pushed the feat/species-pages/observers branch from 0deae09 to ae8bde3 Compare December 9, 2024 15:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants