| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| database:sinp-aura:gn2pg [2024/02/20 14:03] – [Installer le Dashboard Gn2Pg] jpmilcent | database:sinp-aura:gn2pg [2026/03/05 13:43] (Version actuelle) – [Principes pour les données transmises] jpmilcent |
|---|
| * Afficher la table : ''gn2pg_lpo.data_json'' | * Afficher la table : ''gn2pg_lpo.data_json'' |
| * Trier les données par ordre décroissant du champ ''update_ts''. La date la plus récente devrait s'afficher en premier | * Trier les données par ordre décroissant du champ ''update_ts''. La date la plus récente devrait s'afficher en premier |
| * Le champ "id_date" contient l'id_synthese à copier. | * La date ''update_ts'' et la valeur du champ ''id_data'' du dernier enregistrement devrait correspondre au dernier log de Gn2Pg : ''2024-11-18 15:37:53,851 - DEBUG - store_postgresql:store_1_data - 43682513'' |
| | * Le champ "id_data" contient l'id_synthese à copier. |
| * Modifier ensuite le fichier ''~/data/gn2pg/config/lpo_config.toml'' sur le serveur hébergeant //Gn2Pg//. | * Modifier ensuite le fichier ''~/data/gn2pg/config/lpo_config.toml'' sur le serveur hébergeant //Gn2Pg//. |
| * Ajouter/Modifier le paramètre ''filter_n_up_id_synthese'' et lui associer l'id synthese précédemment copié comme valeur. | * Ajouter/Modifier le paramètre ''filter_n_up_id_synthese'' et lui associer l'id synthese précédemment copié comme valeur. |
| * Nous gardons la contrainte d’unicité entre ''id_source'' et ''entité_source_pk_value''. | * Nous gardons la contrainte d’unicité entre ''id_source'' et ''entité_source_pk_value''. |
| * Avec la fourniture du « vrai » identifiant produit par le producteur au niveau du champs additionnel sous la clé « ''source_id_data'' ». | * Avec la fourniture du « vrai » identifiant produit par le producteur au niveau du champs additionnel sous la clé « ''source_id_data'' ». |
| * Pas d’utilisation de l’UUID à ce stade car effets de bords qui pourront s’avérer problématiques selon les usages. | * Jusqu'à la version v1.6.9, pas d’utilisation de l’UUID car effets de bords qui s’avérent problématiques selon les usages. Utilisation de l'UUID à partir de la version 1.8.0. |
| * Les champs ''identifier'' et ''email'' des données sur les utilisateurs devront avoir la valeur ''NULL''. C'est important pour éviter tout conflit avec les utilisateurs créant des comptes directement depuis les interfaces. Pour éviter aussi des bugs au niveau de l'inscription et du renouvellement des mots de passe, il y a un index unique sur ces 2 champs. Enfin, même si cela crée des doublons, nous distinguerons les entrées dans la table ''t_roles'' pour les utilisateurs s'inscrivant au SINP vis à vis des entrées générées par GN2PG ou les scripts d'intégrations des données au format CSV. La fonction se chargeant d'insérer les utilisateurs dans la table ''t_roles'' de GeoNature a été modifiée pour insérer ''NULL'' dans le champ ''email'' et l'email dans le champ ''additional_data'' sous l'attribut ''gn2pg_data.email''. | * Les champs ''identifier'' et ''email'' des données sur les utilisateurs devront avoir la valeur ''NULL''. C'est important pour éviter tout conflit avec les utilisateurs créant des comptes directement depuis les interfaces. Pour éviter aussi des bugs au niveau de l'inscription et du renouvellement des mots de passe, il y a un index unique sur ces 2 champs. Enfin, même si cela crée des doublons, nous distinguerons les entrées dans la table ''t_roles'' pour les utilisateurs s'inscrivant au SINP vis à vis des entrées générées par GN2PG ou les scripts d'intégrations des données au format CSV. |
| * Le champ ''meta_validation_date'' de la synthèse du fournisseur utilisera l'alias ''validation_date'' soit : ''s.meta_validation_date AS validation_date'' | * Le champ ''meta_validation_date'' de la synthèse du fournisseur utilisera l'alias ''validation_date'' soit : ''s.meta_validation_date AS validation_date'' |
| * Le champ ''additional_data'' de la synthèse du fournisseur utilisera l'alias ''donnees_additionnelles'' soit : ''s.additional_data::text AS donnees_additionnelles'' | * Le champ ''additional_data'' de la synthèse du fournisseur utilisera l'alias ''donnees_additionnelles'' soit : ''s.additional_data::text AS donnees_additionnelles'' |
| * « ''source_id_data'' » | * « ''source_id_data'' » |
| |
| | ==== Modifications du code de to_synthese ==== |
| | * Remplacement de la valeur du schéma ''gn2pg_import'' par ''gn2pg_flavia'' ou ''gn2pg_lpo''. |
| | * **La fonction se chargeant d'insérer les utilisateurs dans la table ''t_roles'' de GeoNature a été modifiée pour insérer ''NULL'' dans le champ ''email'' et l'email dans le champ ''additional_data'' sous l'attribut ''gn2pg_data.email''**. |
| ===== Mise à jour de l'installation de Gn2Pg ===== | ===== Mise à jour de l'installation de Gn2Pg ===== |
| * Sur le dépôt Github //sinp-<region>-data// : | * Sur le dépôt Github //sinp-<region>-data// : |
| * afficher la version actuellement installée de Pipenv via Pipx : ''pipx list'' | * afficher la version actuellement installée de Pipenv via Pipx : ''pipx list'' |
| * mise à jour : ''pipx upgrade pipenv'' | * mise à jour : ''pipx upgrade pipenv'' |
| * vérifier la version de Pipenv : ''pipenv --version'' | * vérifier la version de Pipenv : ''%%pipenv --version%%'' |
| * Mettre à jour les dépendances des paquets Python : ''pipenv sync'' | * Mettre à jour les dépendances des paquets Python : ''pipenv sync'' |
| * Se placer dans le dossier de gn2pg : '' cd ~/data/gn2pg/'' | * Se placer dans le dossier de gn2pg : '' cd ~/data/gn2pg/'' |
| * Pour chaque schéma abritant les tables de Gn2Pg (ou //source//), il faut cloner le dépôt Gn2Pg. Ex. pour le SINP AURA (nous avons 2 //sources// : flavia, lpo) : | * Pour chaque schéma abritant les tables de Gn2Pg (ou //source//), il faut cloner le dépôt Gn2Pg. Ex. pour le SINP AURA (nous avons 2 //sources// : flavia, lpo) : |
| * Se placer dans le dossier ''gn2pg/'' avec : ''cd ~/www/gn2pg/'' | * Se placer dans le dossier ''gn2pg/'' avec : ''cd ~/www/gn2pg/'' |
| * Cloner une première fois le dépôt en tant que //lpo// avec : ''git clone https://github.com/lpoaura/GN2PG.git lpo'' | * Cloner une première fois le dépôt en tant que //lpo// avec : ''%%git clone https://github.com/lpoaura/GN2PG.git lpo%%'' |
| * Cloner une seconde fois le dépôt en tant que //flavia// avec : ''git clone https://github.com/lpoaura/GN2PG.git flavia'' | * Cloner une seconde fois le dépôt en tant que //flavia// avec : ''%%git clone https://github.com/lpoaura/GN2PG.git flavia%%'' |
| * Pour chaque source : | * Pour chaque source, nous allons réaliser manuellement les étapes présentes dans ''install/02_install_app.sh'' (pour les adapter à notre infrastructure) : |
| * se placer dans le dossier de la source : ''cd ~/www/gn2pg/<source>/'' | * se placer dans le dossier de la source : ''cd ~/www/gn2pg/<source>/'' |
| * Copier le fichier settings.ini : ''cp install/settings.ini.sample install/settings.ini'' | * Copier le fichier settings.ini : ''cp install/settings.ini.sample install/settings.ini'' |
| * Modifier le fichier de config : ''vi install/<source>_config.toml'' | * Modifier le fichier de config : ''vi install/<source>_config.toml'' |
| * Vous pouvez garder seulement la section ''[db]'' et commenter les autres sections | * Vous pouvez garder seulement la section ''[db]'' et commenter les autres sections |
| * Nous n'utiliserons pas le script install/ | |
| * Créer un fichier ''environ'' avec : ''vi environ'' <code properties> | * Créer un fichier ''environ'' avec : ''vi environ'' <code properties> |
| GUNICORN_PROC_NAME=gn2pg-<source> | GUNICORN_PROC_NAME=gn2pg-<source> |
| poetry install --extras=dashboard | poetry install --extras=dashboard |
| </code> | </code> |
| * Voir si nécessaire les autres éléments à créer dans ''install/02_install_app.sh'' | * Créer un fichier de service Sytemd : ''vi /etc/systemd/system/gb2pg-<source>.service'' (voir ci-dessous) |
| * Créer un fichier de service Sytemd pour chaque source : ''vi /etc/systemd/system/gb2pg-<source>.service'' (voir ci-dessous) | * Prendre en compte le service créé : ''systemctl daemon-reload'' |
| * Créer un fichier logrotate : ''vi /etc/logrotate.d/gn2pg'' (voir ci-dessous) | * Lancer le service : ''systemctl start gn2pg-<source>.service'' |
| * Créer un premier fichier de config Nginx permettant de récupérer le certificat SSL avec Certbot : '' vi /etc/nginx/site-available/gn2pg.conf '' (voir ci-dessous) | * Si nécessaire, créer un fichier Logrotate (uniquement pour la première source) : ''vi /etc/logrotate.d/gn2pg'' (voir ci-dessous) |
| * Activer le nouveau fichier de config : ''nginx_ensite gn2pg.conf'' | * Si nécessaire, créer un fichier de config Nginx : '' vi /etc/nginx/site-available/gn2pg.conf '' (voir ci-dessous) |
| * Recharger Nginx : ''nginx-reload'' | * Lors de la création du fichier : |
| * Récupérer le certificat SSL : '' certbot -d gn2pg.<domaine-sinp>'' | * Activer le nouveau fichier de config : ''nginx_ensite gn2pg.conf'' |
| * Prendre en compte les services créés : ''systemctl daemon-reload'' | * Recharger Nginx : ''nginx-reload'' |
| * Lancer les services : ''systemctl start gn2pg-<source>.service'' | * Récupérer le certificat SSL : '' certbot -d gn2pg.<domaine-sinp>'' |
| | * Pour les sources suivantes, il faut seulement compléter le fichier config en ajoutant une nouvelle "location" et son proxy. |
| | * Recharger Nginx : ''nginx-reload'' |
| * Tester l'accès au site en https | * Tester l'accès au site en https |
| * Consulter les logs en cas de problème : ''ls /var/log/gn2pg/'' | * Consulter les logs en cas de problème : ''ls /var/log/gn2pg/'' |
| </html> | </html> |
| | |
| | </code> |
| | |
| | ===== Requêtes SQL utiles pour Gn2Pg ===== |
| | <code sql> |
| | -- Nbre de données récupérées depuis une date donnée |
| | SELECT COUNT(*) |
| | FROM gn2pg_lpo.data_json |
| | WHERE update_ts > '2025-06-30'; |
| | |
| | -- Nbre d'erreurs depuis une date donnée |
| | SELECT COUNT(*) |
| | FROM gn2pg_lpo.error_log |
| | WHERE last_ts > '2025-06-22'; |
| | |
| | -- Principaux types d'erreur différents |
| | SELECT DISTINCT split_part(error, e'\n', 1) |
| | FROM gn2pg_lpo.error_log; |
| </code> | </code> |