Scripts utilitaires
December 20, 2025 · View on GitHub
Ce document décrit l'ensemble des scripts disponibles pour gérer les données et les traitements de l'application.
Table des matières
- Initialisation
- Gestion des utilisateurs
- Synchronisation des dossiers
- Maintenance et retraitement
- Validation de fichiers
- Gestion des jobs BullMQ
- Workflows recommandés
- Notes techniques
Initialisation
download-csv
Télécharge les fichiers CSV de référence depuis la source configurée.
npm run download-csv
Prérequis : Variable d'environnement CSV_SOURCE_URL configurée.
import-reference-data
Importe les données de référence (BSS, BNPE, communes, etc.) depuis les fichiers CSV.
npm run import-reference-data <chemin-dossier-csv>
Exemple :
npm run import-reference-data ./data
import-territoire-data
Importe les données spécifiques à un territoire (points de prélèvement, préleveurs, exploitations, règles, documents).
npm run import-territoire-data <code-territoire> <chemin-dossier-csv>
Exemple :
npm run import-territoire-data DEP-974 ./data
Prérequis :
- Variable d'environnement
S3_PUBLIC_URLconfigurée (pour télécharger les documents) - (Optionnel)
SKIP_DOCUMENT_UPLOAD=truepour sauter l'upload des documents vers S3
Gestion des utilisateurs
Ces scripts permettent de gérer les utilisateurs et leurs rôles d'accès aux territoires.
user:create
Crée un nouvel utilisateur avec un rôle initial sur un territoire.
npm run user:create -- --email=<email> --nom=<nom> --prenom=<prenom> [--structure=<structure>] [--territoire=<code>] [--role=<reader|editor>]
Exemple :
npm run user:create -- \
--email=alice.dupont@example.com \
--nom=Dupont \
--prenom=Alice \
--structure="DREAL Réunion" \
--territoire=DEP-974 \
--role=editor
user:add-role
Ajoute un rôle sur un territoire à un utilisateur existant.
npm run user:add-role -- --email=<email> --territoire=<code> --role=<reader|editor>
Exemple :
npm run user:add-role -- \
--email=alice.dupont@example.com \
--territoire=DEP-971 \
--role=reader
user:remove-role
Retire un rôle sur un territoire d'un utilisateur.
npm run user:remove-role -- --email=<email> --territoire=<code> --role=<reader|editor>
Exemple :
npm run user:remove-role -- \
--email=alice.dupont@example.com \
--territoire=DEP-971 \
--role=reader
user:list
Liste tous les utilisateurs avec leurs rôles.
npm run user:list
Synchronisation des dossiers
sync-updated-dossiers
Synchronise uniquement les dossiers modifiés sur Démarches Simplifiées depuis la dernière synchronisation.
npm run sync-updated-dossiers
Usage recommandé : Mise à jour incrémentale après une première synchronisation complète, ou exécution manuelle entre les synchronisations horaires automatiques.
Note : Ce script est aussi exécuté automatiquement toutes les heures par le worker BullMQ (job sync-updated-dossiers).
Maintenance et retraitement
resync-all-dossiers
Récupère tous les dossiers depuis Démarches Simplifiées et les traite (première synchronisation ou resynchronisation complète).
npm run resync-all-dossiers
Actions effectuées :
- Récupération de tous les dossiers DS
- Validation des données
- Stockage des fichiers sur S3
- Enregistrement en base de données
- Traitement des pièces jointes
- Consolidation des dossiers
Utilisation :
- Première synchronisation après installation
- Resynchronisation complète après modification majeure de la logique de traitement
- Récupération après suppression des collections
⚠️ Attention : Cette opération peut être longue selon le nombre de dossiers.
reconsolidate-all-dossiers
Force la reconsolidation de tous les dossiers en les marquant comme non consolidés et en créant des jobs de consolidation.
npm run reconsolidate-all-dossiers
Utilisation : Après modification de la logique de consolidation ou correction de données de référence.
Effet :
- Retire le flag
consolidatedAtde tous les dossiers - Crée un job
consolidate-dossierpour chaque dossier - Les jobs sont traités par le worker BullMQ
reset-integrations
Réinitialise complètement toutes les intégrations journalières.
npm run reset-integrations --force
⚠️ Opération destructive : Nécessite le flag --force pour confirmer.
Actions effectuées :
- Vide complètement la collection
integrations_journalieres - Réinitialise le champ
computed.integratedDaysde toutes les séries (mis à[])
Utilisation :
- Après modification de la logique d'intégration
- Pour résoudre des problèmes d'intégrité des données d'intégration
- Pour repartir à zéro sur les intégrations
Étape suivante : Lancer npm run reconsolidate-all-dossiers pour reconsolider tous les dossiers et recalculer les intégrations.
reprocess-all-attachments
Force le retraitement de tous les attachments.
npm run reprocess-all-attachments
Utilisation : Après mise à jour des parsers de fichiers ou correction de bugs de traitement.
Effet :
- Récupère tous les attachments avec
processed: false - Réinitialise leur statut de traitement
- Crée un job
process-attachmentpour chaque attachment - Les jobs sont traités par le worker BullMQ
Validation de fichiers
validate-declaration-file
Valide un fichier de déclaration (camion citerne ou multi-paramètres) sans l'importer.
npm run validate-declaration-file <chemin-fichier> [type]
Paramètres :
<chemin-fichier>: Chemin vers le fichier à valider[type]: Type de fichier (optionnel)camion-citerne: Fichier camion citernemulti-params: Fichier multi-paramètres (défaut)
Exemples :
npm run validate-declaration-file ./test.csv
npm run validate-declaration-file ./camion.csv camion-citerne
Sortie : Affiche les erreurs et avertissements de validation détectés.
Gestion des jobs BullMQ
trigger-scheduled-job
Lance manuellement et immédiatement n'importe quel job schedulé (cron).
npm run trigger-scheduled-job <nom-du-job>
Jobs disponibles :
sync-updated-dossiers: Synchronisation des dossiers modifiés depuis DSprocess-attachments-maintenance: Retraitement des attachments en erreurconsolidate-dossiers-maintenance: Reconsolidation des dossiers non consolidés
Exemples :
# Lancer la synchronisation DS immédiatement
npm run trigger-scheduled-job sync-updated-dossiers
# Lancer la maintenance des attachments
npm run trigger-scheduled-job process-attachments-maintenance
# Lancer la maintenance de consolidation
npm run trigger-scheduled-job consolidate-dossiers-maintenance
Utilisation : Test, debug, ou exécution manuelle sans attendre le cron.
Monitoring : Le script affiche l'ID du job créé et le lien vers BullBoard pour suivre l'exécution.
Sans argument, le script affiche la liste des jobs schedulés disponibles :
npm run trigger-scheduled-job
run-job-with-logs
Exécute directement un job handler spécifique avec logs en temps réel, sans passer par BullMQ.
npm run run-job-with-logs <nom-job> <donnees-json>
Jobs disponibles :
consolidate-dossier: Consolidation d'un dossier spécifiqueprocess-attachment: Traitement d'une pièce jointe spécifique
Exemples :
# Consolider un dossier avec logs détaillés
npm run run-job-with-logs consolidate-dossier '{"dossierId":"6908db261a6a10831363dde3"}'
# Traiter une pièce jointe avec logs détaillés
npm run run-job-with-logs process-attachment '{"attachmentId":"6908db2679a0c1d0dd5b6fbe"}'
Utilisation : Debug, investigation de problèmes sur un dossier/attachment spécifique, ou test de modifications du code de consolidation.
Avantages :
- Exécution synchrone avec logs en temps réel dans le terminal
- Pas besoin de lancer le worker
- Pas de timeout
- Idéal pour le développement et le débogage
⚠️ Note : Ce script exécute directement le handler sans la queue BullMQ, il ne doit pas être utilisé en production pour les traitements de masse.
Workflows recommandés
Première installation
- Télécharger les CSV de référence
- Importer les données de référence
- Importer les données du territoire
- Synchroniser tous les dossiers DS
npm run download-csv
npm run import-reference-data ./data
npm run import-territoire-data DEP-974 ./data
npm run resync-all-dossiers
Après mise à jour du code de validation ou des parsers
- Retraiter tous les attachments
- (Optionnel) Reconsolider tous les dossiers si la logique de consolidation a changé
npm run reprocess-all-attachments
npm run reconsolidate-all-dossiers # Si nécessaire
Après modification de la logique d'intégration
- Réinitialiser toutes les intégrations
- Reconsolider tous les dossiers pour recalculer les intégrations
npm run reset-integrations -- --force
npm run reconsolidate-all-dossiers
Après modification majeure de la logique de traitement
Resynchroniser complètement depuis Démarches Simplifiées :
npm run resync-all-dossiers
Avantage : Récupère les dernières données DS et applique toute la logique de traitement.
Test d'un fichier avant import
npm run validate-declaration-file ./mon-fichier.csv
Notes techniques
- Tous les scripts nécessitent une connexion à MongoDB et Redis
- Les scripts de maintenance créent des jobs BullMQ qui sont traités par le worker
- Les connexions sont automatiquement fermées à la fin de l'exécution
- Les erreurs sont affichées dans la console avec des compteurs de succès/échec
- Voir lib/queues/README.md pour plus de détails sur l'architecture des jobs