Reprise de données (import de signalements) - MTES-MCT/histologe GitHub Wiki

Reprise des signalements

Historique

Merci de prendre en compte le dernier sur les derniers signalements importés: 18, 48, 73, 38, 81

https://github.com/MTES-MCT/histologe/issues/761

Description

Une commande permet de faire un import d'une liste de signalement rempli saisie dans une feuille excel. Ces derniers seront tagués comme étant importés.

Pré-requis

Vérfier que le client aws S3 est bien installé

$ aws --version
aws-cli/1.25.61 Python/3.8.16 Linux/5.15.0-56-generic botocore/1.27.60

Documention installation AWS CLI

Définir la variable d'environnement du bucket de DEV afin de pouvoir exécuter le script shell

$ export BUCKET_URL=my-bucket-name

Il s'agit dans le projet de la variable d'environnement S3_BUCKET de .env.local

Lors l'import en production, mettre à jour la variable d'environnement

Étapes

1. Préparation et vérifications

Dans tous les cas

  • Se rendre sur le drive afin d'exporter le google sheet en CSV
  • Le fichier doit être avec des séparateurs ,
  • Le fichier ne doit pas contenir de sauts de ligne
  • Vérifier le format des références, pour que ça ne créé pas de références bizarres en base (notamment pour l'année en cours)
  • Lors de l'import, il y a parfois des colonnes trop longues par rapport à la BDD, il faudra les modifier un à un lors de l'étape suivante

Si il y a des images

  • Placer le fichier csv dans le dossier /data/images
  • Créer un dossier import_[code_territoire] avec tous les fichiers du drive dedans
  • Exécuter la commande ./scripts/upload-s3.sh slugify-signalement [code_territoire]
  • Exécuter la commande make console app="slugify-doc-signalement 67 0"

2. Envoi

  • Créer un répertoire data/signalement/

Si il y a des images

Dans le dossier /tmp

  • Récupérer le fichier signalement_slugged_[code_territoire].csv
  • Le copier dans /data/signalement
  • Le renommer signalement_[code_territoire].csv
  • Exécuter la commande ./scripts/upload-s3.sh image [code_territoire]

Sinon

  • Déposer le fichier signalement_[code_territoire].csv à l'intérieur de ce dossier

Dans tous les cas

  • Exécuter la commande ./scripts/upload-s3.sh signalement [code_territoire] qui va permettre de pousser le fichier sur le bucket.
  • Vérifier que le fichier a bien été poussé aws s3 ls [BUCKET_URL]/csv/

3. Exécution de la commande Symfony

En local

make console app="import-signalement 81"

Pour la pré-production et production

$ scalingo -a [nom-application] run php bin/console app:import-signalement [code_territoire]

4 Si il y a des images générations des miniatures et resize

make console app="create-signalement-photo-variants [code_territoire]"

Pour la pré-production et production

$ scalingo -a [nom-application] run php bin/console app:create-signalement-photo-variants [code_territoire]

Reprise des images dans fichier séparé

Historique

L'Isère est le premier territoire à fournir des images pour ses signalements historiques. Le territoire a fourni un lien drive afin de télécharger les documents (~10GB) et le fichier de mapping est sur le drive Histologe.

Ce fichier de correspondance permet de faire la relation entre les signalements déjà importés et les documents à rattacher.

Il faudra alors télécharger le fichier de correspondance et le renommer en mapping_doc_signalement-38.csv avant de le pousser sur le service de stockage en ligne.

Description

Voici un exemple de format du fichier fourni par le territoire 38 - ISERE

id_EnregistrementAttachment id_Enregistrement sAttachFileName
64868 14 Courrier Mairie.docx
64869 14 Lettre Monsieur John.docx
64872 12 Fiche Madame Jane.pdf
64873 12 Courrier Prefecture.pdf

Télécharger ce fichier d'exemple mapping_doc_signalement_01.csv et le déposer dans data/images/

Télécharger et décompresser ce dossier import_XX.zip afin de déposer les images dans data/images/import_01

  • id_Enregistrement: Référence du signalement (sans l'année: ce qui être problématique s'ils existent des doublons)
  • sAttachFileName: Nom du fichier

Il faudrait pour les prochains fichiers avoir une nouvelle colonne qui correspondrait à l'année du dépôt de signalement

Voici le format en sortie sur lequel va s'appuyer le rattachement des documents au signalement après avoir joué l'une des deux commandes.

id_EnregistrementAttachment id_Enregistrement sAttachFileName
64868 14 123-courrier-mairie.docx
64869 14 456-ettre-Monsieur-john.docx
64872 12 789-Fiche Madame Jane.pdf
64873 12 101112-Courrier Prefecture.pdf

Pré-requis

Vérfier que le client aws S3 est bien installé

$ aws --version
aws-cli/1.25.61 Python/3.8.16 Linux/5.15.0-56-generic botocore/1.27.60

Documention installation AWS CLI

Définir la variable d'environnement du bucket de DEV afin de pouvoir exécuter le script shell

$ export BUCKET_URL=my-bucket-name

Il s'agit dans le projet de la variable d'environnement S3_BUCKET de .env.local

Commandes utiles

Afficher la liste des fichiers du répertoire csv

$ aws s3 ls [BUCKET_URL]/csv

Etapes

1. Préparation (Ces étapes ne sont pas à faire en production)

  • Créer un répertoire data/images/import_[code_territoire] et déposer quelques images, mettre des références de signalement qui existent en base de donnée
  • Créer un fichier data/images/mapping_doc_signalement_[code_territoire].csv en suivant le format définit en description, vous devez avoir autant de lignes de CSV que d'images dans le répertoire.

2. Exécution des commandes en local

  • Exécuter la commande ./scripts/upload-s3.sh mapping-doc [code_territoire] qui va permettre de pousser votre fichier de mapping sur le bucket.
  • Vérifier que le fichier a bien été poussé aws s3 ls [BUCKET_URL]/csv/
  • Exécuter la commande en local uniquement app:slugify-doc-signalement' qui va vous créer un nouveau fichier csv avec des noms d'images slugifié et renommer les noms de fichiers de votre repertoire data/images/import_[code_territoire].
  • Exécuter la commande ./scripts/upload-s3.sh image [code_territoire]afin de pousser vos images slugifié sur le bucket

3. Exécution de la commande en production

  • Le nouveau fichier est disponible sur le bucket, vous pouvez exécuter la commande app:update-doc-signalement qui va mettre à jour les signalements.
  • Vérifier en base de données que les colonnes documents et photos ne sont pas vides pour les signalements qui vous intéresse.
  • Afficher la page de signalement et vérifier que les images et documents s'affichent correctement.

La commande make upload action=process-all zip="01" permet d'executer l'étape 2 et 3 pour l'environnement local

Pour la production

$ scalingo -a [nom-application] run php bin/console app:update-doc-signalement [code_territoire]