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.

Données automatisées

Profil déclarant

En attendant d'autres colonnes qui permettraient d'être plus précis, voici la décision actuelle (PR https://github.com/MTES-MCT/histologe/pull/5067) :

  • Si la colonne "Déclarant est l occupant?" est à "O", alors le profil déclarant est LOCATAIRE.
  • Si la colonne "lien entre declarant et occupant" est "pro", alors le profil déclarant est TIERS_PRO.
  • Sinon, le profil déclarant est TIERS PARTICULIER.

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]