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

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

Open
LudmillaT opened this issue Nov 6, 2024 · 4 comments
Labels

Comments

@LudmillaT
Copy link

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

@LudmillaT LudmillaT added the bug label Nov 6, 2024
@camillemonchicourt
Copy link
Member

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
Copy link
Author

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
Copy link
Contributor

jbrieuclp commented Nov 6, 2024

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

allowed_geom_cte = build_allowed_geom_cte(
blurring_permissions=blurring_permissions,
precise_permissions=precise_permissions,
blurred_geom_query=blurred_geom_query,
precise_geom_query=precise_geom_query,
limit=result_limit,
)
obs_query = build_synthese_obs_query(
observations=observations,
allowed_geom_cte=allowed_geom_cte,
limit=result_limit,
)
geojson_column = func.st_asgeojson(allowed_geom_cte.c.geom)

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 :

obs_query = (
select(observations)
.where(VSyntheseForWebApp.the_geom_4326.isnot(None))
.order_by(VSyntheseForWebApp.date_min.desc())
.limit(result_limit)
)

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
Copy link
Member

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants