vdct / ProjetDuMois

GNU Affero General Public License v3.0
21 stars 11 forks source link

Stats géographiques : valeur à 0 lorsqu'absent du json fourni par le serveur #189

Open flacombe opened 3 years ago

flacombe commented 3 years ago

Je ne m'en suis pas aperçu tout de suite puisqu'il y avait toujours des stats existantes lorsque j'ai regardé.

Mon project:update passe à 3h et il s'écoule donc 3h avec une valeur inexistante le jour J dans le graph d'historique d'une zone administrative. image

Il faudrait que les graphs se tiennent à ce que le json présente pour éviter ces valeurs à 0. Il est tard je n'ai pas encore regardé le js nécessaire pour ça

PanierAvide commented 3 years ago

Le client n'affiche que les données qui sont renvoyées, c'est plutôt en base où il faudrait boucler sur les dates :

flacombe commented 3 years ago

Pourtant, cette valeur à 0 n'est pas créée par la base : seul le script project:update créé des lignes dans pdm_feature_counts_per_boundary avant de mettre à jour la vue pdm_boundary_tiles (puisque la série temporelle est obtenue par un GROUP BY)

Les 0 sont bien apparus à minuit, sans que les tuiles aient même été rafraichies. Ce matin, je vide le cache et refresh les tuiles, plus de 0.

flacombe commented 3 years ago

Je constate le problème dans l'autre sens ce soir : l'affichage s'arrête au 8 mars, mais après vérification dans la tuile elle-même, j'ai bien le 9 mars aussi.

Je ne vois que cette boucle qui semble itérer sur le json fourni et il n'y a d'apparence pas de raison qu'elle s'arrête au 8 mars si le 9 est absent https://github.com/vdct/ProjetDuMois/blob/master/website/templates/components/stats.pug#L356

A noter que les dates ne sont pas ordonnées dans mes tuiles, peut-être cela joue-t-il ? (j'ai du supprimer un ORDER BY par soucis d'efficacité sans m'inquiéter de ce à quoi il servait

PanierAvide commented 3 years ago

C'est corrigé dans la branche feature/pr185 : https://github.com/vdct/ProjetDuMois/blob/feature/pr185/website/templates/components/stats.pug#L350

flacombe commented 3 years ago

J'ai toujours le problème du 0 ce soir :

https://enedis.openstreetmap.fr/projects/2021-01_poteaux

PanierAvide commented 3 years ago

Pourtant c'est sensé être géré par cette ligne https://github.com/flacombe/ProjetDuMois/blob/feature/enedis/website/templates/components/stats.pug#L353

Une condition manquante ?

flacombe commented 3 years ago

Le problème c'est que tu itères sur projectDays : on suppose qu'il y a une valeur pour chaque.

Tu filtres ensuite sur d.y != 0 || i < projectDays.length - 1, si je suis dans la plage du projet, je peux avoir un 0 et il apparaitra, alors qu'on ne voudrait pas voir ce point du tout. Dans le cas de mes tuiles, que ca s'arrête au 13/03 au lieu de montrer un 0 pour le 14/03

PanierAvide commented 3 years ago

Après on ne veut masque le 0 que si c'est la dernière valeur, si on a un 0 en cours de route pour une raison x ou y (suppression de masse ou autre), il faut bien la conserver. C'était le sens de cette ligne de code.

flacombe commented 3 years ago

Je suis d'accord pour afficher un 0 si tel est le cas dans les données du serveur.
Sauf que le || 0 ajoute des 0 là où il n'y en a pas.

Si il n'y a pas de valeur pour une date donnée, il ne faut rien afficher et présenter un trou si la série reprend plus tard. C'est ce qui permet de différencier les absences de dénombrement d'une suppression de masse