PnX-SI / GeoNature

Application de saisie et de synthèse des observations faune et flore
GNU General Public License v3.0
104 stars 102 forks source link

Accueil / Synthèse - Problème d’affichage carte 100 dernières observations #3249

Open LudmillaT opened 3 weeks ago

LudmillaT commented 3 weeks ago

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 : image

Accès public : image

camillemonchicourt commented 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.

LudmillaT commented 3 weeks ago

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

image

Permission données précises

image

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.

jbrieuclp commented 3 weeks ago

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.

camillemonchicourt commented 3 weeks ago

Ah ouais OK OK, c’est en limitant à 100 que les données sensibles remontent si on a du floutage appliqué. Je comprends.