-
Notifications
You must be signed in to change notification settings - Fork 30
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
Feature/taxonomie-dependency #321
Conversation
v0.99.4-dev
Add backend + db in docker-compose Removed imports relative to Taxhub Removed queries relative to Taxhub: TODO
Add get_all_lists function Removed calls to taxonomy models Removed taxonomy models Removed check on TaxHub Api
Replaced by an API call to get the municipality from a latitude and a longitude. Called each time an observation is added. Make this URL a parameter in the configuration Updated the front to get only the name of the municipality In the DataBase the municipality is the name of the town/city
Mount the media volume to persist photos provided by the users Add db persistence
On part sur une installation obligatoire avec Docker ? |
Non on laissera le choix aux deux. On s'attaque au script d'installation en fin de semaine normalement. Cette PR est peut-être mal nommée, elle consiste avant tout à casser les dépendances au schéma taxonomie. On en profite pour dockeriser pour que ce soit plus simple à tester sur un environnement vierge. N'hésite pas si tu as besoin de plus d'informations |
OK super, merci pour les précisions |
Added try/except to catch errors in get_municipality function to prevent new observation from being created. The main encountered error is a DNS error caused by WSL + Docker apparently. Solved by restarting docker service. For this to never happen, this call can be done in the frontend part and the city can be sent to the backend
Add call to Taxhub/Taxref to get families and class
In config: changed API parameter name
Since there can be problems in calling nominatim (API_CITY) in the backend. It is now also called in the frontend with the same API_CITY parameter in the app.config. The API_CITY is called in the backend if the frontend does not manage to get a city (municipality)
Add nginx service as well as the required configuration
Before: everything was in media which requires to copy assets into medias directory Now: Front loads images in assets or asks the backend to get an image from the medias directory
Add scripts that are used both in docker.sh and install_app.sh Normally it should automatically install docker as well as docker-compose and launch the app
To be coherent with install_app, the htpasswd file should be in the config and named backoffice_htpasswd
Did a function to loop on cd_nom but since we only need one cd_nom we do not need this function anymore
Took what is in the dev branch
Consist in building the backend, the frontend and the nginx images Add corresponding docker-compose file Add Dockerfile for nginx to copy the configuration Add dockerignore file to reduce context
sql migration: add the name column (taxon name) + change municipality column type to varchar python: script to populate columns name and municipality by respectively the taxon name (from taxhub) and the municipality name (from nominatim)
Fait dans le commit 8a7d0e6
|
J'avoue que là sur les histoires d'ajout de colonne "nom" et "communes", nominatim etc, je ne comprends pas du tout le sujet. Si il y a d'autres choses, à bien indiquer dans le Changelog (docs/CHANGELOG.md) dans la PR. Dans tous les cas, sans avoir trop compris de quoi il s'agit, je pense que ce n'est pas vraiment souhaitable de stocker dans la table des observations le nom du taxon en plus du cd_nom. C'est une info redondante et si Taxref évolue, on aura dupliqué une info qui peut avoir changé dans Taxref. |
Effectivement c'était l'objectif de cette PR : supprimer le schéma taxref de la base de données et faciliter l'installation. Mais dans ce processus, nous avons eu l'idée de faire la même chose avec le ref_geo : pourquoi avoir un ref_geo alors qu'une API est disponible pour permettre de localiser (même si parfois moins précisément) une observation ? Pour les scripts de migration, ils sont fournis avec et seront documentés. Je comprends totalement ta remarque sur le stockage du nom en plus du cd_nom qui crée une redondance. C'était une demande de @samuelpriou. Mais faire un appel à l'API de taxhub dans le backoffice pour toutes les observations à chaque fois (même avec un système puissant de caching) ne me parait pas très optimisé. Relancer le script fourni (data/migrations/add_taxon_name_and_municipality.py) permet de mettre à jour toutes les observations avec l'API taxhub et l'API de municipalité que tu souhaites. Je suis totalement ouvert pour discuter de cela de vive voix si tu le souhaites. |
OK je comprends mieux. Selon moi, c'est clairement pas une bonne idée de supprimer ces 2 schémas de la BDD de GeoNature-citizen et ça amène à faire des choses qui me paraissent un peu tordues comme de stocker Pour moi, la vraie solution serait que TaxHub et le |
La problématique que je vois avec les schémas Le
Petite précision : nous stockons uniquement le nom de la commune dans Citizen ce qui nous paraît suffisant. |
Ah non surtout pas. C'est le cas dans GeoNature-atlas, où on a bien les schémas Le |
Sujet évoqué ici il y a quelques temps : #100 |
OK pour le FDW, mais à mon avis cela alourdirait le code et l'installation même automatique. Je partirais plus sur un service Je pense qu'on est d'accord dans le fond, c'est juste une histoire de préférences entre SQL et API. A voir pour la performance par contre, à tester... |
Non je ne suis pas d'accord, ce n'est pas qu'une question de préférences entre API et SQL. Par exemple stocker en dur le nom du taxon en plus du cd_nom, alors que le nom (et même le cd_nom) peuvent évoluer dans Taxref, sans en garantir l'intégrité et la cohérence n'est pas anodin pour la qualité des données dans le temps. Idem pour le fait de se baser sur un appel à une API Nominatim au moment de la saisie pour stocker l'information en dur, sans en garantir l'intégrité et la cohérence dans le temps n'est pas anodin non plus au niveau qualité des données. Ce qui est important et doit être pérenne dans le temps sont les données. |
Bonjour @camillemonchicourt, @mvergez Je me permets d'intervenir sur ces échanges et ces choix qui sont les miens.
Actuellement, les dépendances à TaxHub et au RefGeo sont très lourdes tant du point de vue du stockage (plus de 2.8Go en bdd!!!) que de la maintenance (ajout de complexité à l'installation, nécessité de maintient d'une cohérence par rapport aux évolution des applis sources (TaxHub et GeoNature-refgeo). J'ai à ce propos souvenir d'avoir commencé les développements du backend sur une version ref_geo qui avait évolué par la suite et qui avait provoqué des erreurs (models différents).
|
Oui intéressant. OK je comprends mieux. A noter que le "nom cité" est un champs pas ou peu utilisé en affichage, mais pour garder la trace du nom utilisé lors de l'observation. C'est un peu différent du cas présent. Pour le ref_geo, il ne faut vraiment pas le voir comme un référentiel de données avec les zonages français. |
City commes first and then municipality Swap it in refgeo.service.ts, geo.py and migration script Ex: https://nominatim.openstreetmap.org/reverse?lat=44.38408761525667&lon=6.594146490097047&format=json
Juste pour préciser : je parlais d'une comparaison entre un FDW et une API. Dans un contexte d'isolation du ref_geo |
Removed models and routes that are no longer needed
If the geoservice does not manage to get the municipality, do not send the municipality to the backend and let the backend call the nominatim API. It enables to get the city even if the user internet connection is not really good
Bonjour, Résumé des 2 derniers commits :
|
Ne serait-il pas plus simple de déléguer entièrement cette tâche au backend? Cela éviterai justement ces écueil liés à une mauvaise connexion et il n'y a d'autre usage que le rattachement géographique de la donnée côté front. |
Effectivement, je pensais faire cela pour décharger le backend (même si cet appel ne doit pas consommer beaucoup de ressources). Je suis plus dans la philosophie de laisser au maximum au front faire les appels aux APIs. |
Main Goal
Remove taxonomy scheme dependency
This PR enables also to
Closes #236, #216, #167