Mieux contrôler les dérogations d'espèces protégées
Installer docker et docker-compose Peut-être via Docker Desktop, bonne chance !
Front-end en Svelte Back-end en Node.js Base de données Postgres
Le serveur récupère les données des dossiers via l'API Démarches Simplifiées. Il en fait une sauvegarde régulière, parce que Démarches Simplfiées ne sauvegarde les données que temporairement (1 an pour le moment, nous allons demander 5 ans)
En dev, on peut lancer npm run dev
pour lancer le tout.
Le repo est synchroniser dans le conteneur du serveur via un volume.
Les données de la base de données sont sauvegarder dans un volume dans le repo (pour faire des test facilement)
http://localhost:2648/ http://localhost:2648/saisie-especes
### Créer une migration
exécuter knex migrate:make <nom de la migration>
modifier les fonction up()
down()
du fichier ./migrations/XXX-nom.js
documentation sur les migrations knex
Pour régénérer tous les types :
npm run build-types
exécuter npm run build-types:db
Les types sont crées dans le dossier ./scripts/types/database/public
Dans le fichier .js du type supprimer l'export ligne 3 export {};
npm run build-types:ds-88444
Cette commande télécharge aussi la dernière version du schema avant de créer les types
Pour éviter le téléchargement et créer les types à partir du fichier schema existant dans le repo, ajouter l'option --skipDownload
:
node outils/genere-types-88444.js --skipDownload
Pour se connecter au serveur postgres depuis un container : ce container doit être exposé au réseau et utiliser postgres_db
(le container_name
de la base de donnée Postgres) comme hostname
URL pour pgadmin en dev :
http://localhost:5050/
npm start:production
On utilise une base de données Postgres 15.7 en prod
Scalingo fournit des backups https://doc.scalingo.com/databases/postgresql/backing-up
Actuellement, on a un backup quotidien des 7 derniers jours, un backup hebdomadaire des 4 dernières semaines et 10 backups manuels
Ces backups se trouvent dans l'onglet BACKUPS
du dashboard de l'addon PostgreSQL
Après avoir téléchargé un backup de la prod, le mettre dans le dossier backups
et lancer :
cd backups
tar -xf <nom_fichier>.tar.gz
# ignorer le message qui dit "tar: Suppression de « / » au début des noms des membres"
cd -
Cela va dévoiler un fichier .pgsql
du même nom
Ensuite :
docker exec postgres_db pg_restore -C --username=dev -d principale --clean --no-owner --jobs=6 /var/lib/pitchou/backups/<nom_fichier>.pgsql
On peut faire un restore en un clic d'un backup dans l'onglet BACKUPS
du dashboard de l'addon PostgreSQL
Sinon, on peut suivre la procédure de la documentation Scalingo
knex migrate:latest
(fait automatiquement à chaque déploiement, voir package.json scripts.prestart:prod-server
)
Pour aller en arrière et en avant d'un cran dans la liste des migrations :
npm run migrate:down
npm run migrate:up
pour les autocomplete de saisie espèces notamment
node outils/liste-espèces.js
### Ajouter une espèce manquante
Dans le fichier data/sources_especes/espèces_manquantes.csv
ajouter l'espèce avec son identifiant INPN (CD_NOM),nom latin (LB_NOM), nom vernaculaire (NOM_VERN) et sa justification légale (LABEL_STATUT).
Puis lancer node outils/liste-espèces.js
pour régénérer une liste d'espèces complétée.
En dev, depuis le container du serveur
docker exec tooling node --env-file=.env outils/sync-démarches-simplifiées-88444.js
(dernières heures par défaut)
docker exec tooling node --env-file=.env outils/sync-démarches-simplifiées-88444.js --lastModified 2024-07-25
(synchroniser les dossiers modifiés depuis le 25 juillet 2024)
docker exec tooling node --env-file=.env outils/sync-démarches-simplifiées-88444.js --lastModified 2024-01-01
(synchroniser tous les dossiers, date très distantes)
Pour modifier le cron : https://crontab.guru/
node outils/groupes-espèces.js
node --env-file=.env outils/remplir-annotations.js
Utile pour tester rapidement en local après un restore de backup en tant qu'une personne en particulier
docker exec tooling node outils/afficher-liens-de-connexion.js --emails [email protected],[email protected]
Pour les lien de connexion en production :
docker exec tooling node outils/afficher-liens-de-connexion.js --emails [email protected],[email protected] --prod
Pour donner l'origine de manière libre :
docker exec tooling node outils/afficher-liens-de-connexion.js --emails [email protected],[email protected] --origin 'http://test.lol'