[API Indicateurs] Récupérer les valeurs des indicateurs pour le niveau COMMUNE, en filtrant par département
Objectif :
- l'api existante de récupération des valeurs d'un indicateur pour tous les départements, régions ou epcis est la suivante https://dev.resiliencealimentaire.org/crater/api/indicateurs/pratiquesAgricoles.partSauBioPourcent?categorieTerritoire=EPCI
- pour des raisons de performances, cette api ne permet pas pour l'instant de récupérer les valeurs pour le niveau COMMUNE (35000 communes en France, la taille de la réponse générée serait selon les cas > 50 mega)
- on souhaite malgré tout récupérer les données pour le niveau commune, et pour cela, on restreindra le périmètre à un ensemble de départements. Ainsi l'url suivante permettra de récupérer les valeurs de l'indicateur 'pratiquesAgricoles.partSauBioPourcent' pour toutes les communes des départements 'D-31' et 'D-63' https://dev.resiliencealimentaire.org/crater/api/indicateurs/pratiquesAgricoles.partSauBioPourcent?categorieTerritoire=COMMUNE&idsDepartements=D-31|D-63
Détails :
- il faut autoriser la valeur COMMUNE pour le paramètre categorieTerritoire
- il faut ajouter un paramètre idsDepartements, qui contient les ids de département souhaités, séparés par le caractère |
- règle de gestion : si categorieTerritoire=COMMUNE, le paramètre idsDepartements est obligatoire,
- règle de gestion : idsDepartements contient au maximum 15 départements (constante, configurable)
- règle de gestion : on retourne les valeurs de l'indicateur demandé pour l'ensemble des communes appartenant aux départements passés en paramètre
Solution technique :
- les valeurs des indicateurs sont aujourd'hui stockées en mémoire, dans l'objet Diagnostic, qui ne contient pas l'id du département, mais uniquement l'id de la commune
- il faut ajouter sur la classe DiagnosticEntite un attribut idDepartement, qui est alimenté lors de l'injection (voir injecteurDiagnostic.ts). Pour cela, l'injecteur doit charger en tout premier le fichier referentiel-territoires.csv, avant le fichier donnees-territoires.csv . Le fichier reférentiel-territoires.csv contient l'idDepartement associé à une commune
- il faut ensuite filtrer les informations selon ce champ dans la methode construireReponseIndicateursJson de la classe ApiDiagnostics
Rq : cette solution n'est pas la plus performante car le filter est fait sur une map de 35000 objets. Un refacto pourra etre envisagé utlérieurement
Edited by Lionel