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 repertoiredata/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]