Open LudmillaT opened 3 weeks ago
Je ne suis pas certain que cela soit un bug, mais peut-être tout simplement que ces utilisateurs ont des permissions différentes ? Vous reproduisez chez vous ? Vous avez vérifié les permissions ?
Si c'est un soucis, il ne semble pas spécifique à la carte de la page d'accueil, car avec l'utilisateur PUBLIC, on a les mêmes dernières observations quand on accède au module Synthèse.
Nous avons effectivement observer ce bug en premier lieux chez nous (même version de GeoNature que la démo). Nous avons un groupe qui visualise toutes les données et dont les données sensibles sont flouter (permission image 1) et un groupe qui visualise toutes les données de manière précises (permission image 2)
Permission données flouter
Permission données précises
Ils sont donc sensé voir les même données (avec juste un floutage sur les données sensibles pour un des deux groupe), en toutes logique les dernières données observé pour ces deux groupes sont les même. C'est ce qui nous a fait penché pour un bug sur le calcul des 100 dernières observations lorsque le groupe n'as accès qu'aux données sensible flouter.
Oui c'est plus lier au dernières observations afficher que ce soit dans la synthèse ou sur la page d'accueil.
Je confirme l'observation de Ludmilla et confirme le fait que c'est difficile de parler d'un bug. J'avais déjà recherché la raison de pourquoi les données sensibles s'affichent prioritairement par rapport aux données non sensibles. C'est lié à la manière dont la requête est générée pour retourner les données sensibles floutées. L'enchainement de ces lignes https://github.com/PnX-SI/GeoNature/blob/3bdda83ce2a4923e515343223aaf3e7f0fb63e29/backend/geonature/core/gn_synthese/routes.py#L218-L231
Génère une requête de ce type :
SELECT *
FROM gn_synthese.v_synthese_for_web_app
INNER JOIN (
SELECT *
FROM données_sensibles
LIMIT ["NB_MAX_OBS_MAP"]
UNION ALL
SELECT *
FROM données_non_sensibles
LIMIT ["NB_MAX_OBS_MAP"]
)
ORDER BY id_synthese
LIMIT ["NB_MAX_OBS_MAP"]
Il y a un ORDER BY au niveau de la requête principale, mais pas au niveau des sous-requetes sur les données sensibles et et les données non sensibles. Donc selon la valeur du paramètre ["NB_MAX_OBS_MAP"] et selon le nombre de données dans la base les sous-requêtes vont retourner des données random qui ne seront pas forcément les plus récentes.
En fait la requête formatée de cette manière devrait retourner le résultat attendu :
SELECT *
FROM gn_synthese.v_synthese_for_web_app
INNER JOIN (
SELECT *
FROM données_sensibles
LIMIT ["NB_MAX_OBS_MAP"]
ORDER BY date_min DESC, id_synthese
UNION ALL
SELECT *
FROM données_non_sensibles
LIMIT ["NB_MAX_OBS_MAP"]
ORDER BY date_min DESC, id_synthese
)
ORDER BY date_min DESC, id_synthese
LIMIT ["NB_MAX_OBS_MAP"]
Au passage quand il doit y avoir la prise en compte des données sensible c'est un tri sur le champ id_synthese qui est effectué sur gn_synthese.v_synthese_for_web_app
, alors que quand l'affichage des données se fait sans prise en compte de la sensibilité c'est le champ date_min qui sert à trier les données :
https://github.com/PnX-SI/GeoNature/blob/3bdda83ce2a4923e515343223aaf3e7f0fb63e29/backend/geonature/core/gn_synthese/routes.py#L194-L199
J'ai bien conscience de la difficulté du traitement des données sensibles, mais cette requête m'avait vraiment interrogée quand je m'y étais penché. Je ne sais pas si ce serait encore le cas aujourd'hui avec un peu de recul.
Ah ouais OK OK, c’est en limitant à 100 que les données sensibles remontent si on a du floutage appliqué. Je comprends.
Version GeoNature : 2.14.2
Description du bug Lorsqu’on se connecte en tant qu’admin, la carte des 100 dernières observations semble bien correspondre aux 100 dernières observations. Cependant, lorsqu’on se connecte avec un autre profil, il semble que les données affichées comme étant les 100 dernières observations soient, en priorité, les dernières données sensibles.
Accès Admin :
Accès public :