139bercy / decp-rama

Outil pour agréger et convertir en un seul jeu de données toutes les données essentielles de la commande publique
https://139bercy.github.io/decp-docs/
MIT License
6 stars 3 forks source link
csv json marche-public ocds open-contracting open-data

DECPrama

Toutes les données essentielles de la commande publique agrégées et converties

DECP Marches Publics

Ce document décrit la manière dont les données essentielles de la commande publique sont consolidées techniquement. Vous trouverez davantage d'information sur les données essentielles de la commande publique sur https://139bercy.github.io/decp-docs/.

Version 1.15.1

Rappel de ce que sont les données essentielles de la commande publique (ou DECP) sur le blog de data.gouv.fr.

L'objectif de ce projet est d'identifier toutes les sources de DECP, et de créer des scripts permettant de produire des fichiers utilisables (jeu de données sur data.gouv.fr) au formats JSON et XML réglementaires.

La procédure standard est la suivante :

  1. Nous agrégeons toutes les données possibles dans leur format d'origine, XML ou JSON (les DECP n'existent pas dans d'autres formats)
  2. Nous les stockons dans /sources dans un répertoire spécifique à la source des données. En effet, selon la source, les données n'ont pas besoin des même traitements pour être utilisables (nettoyage, réparation de la structure, correction de l'encodage)
  3. Nous les convertissons au format JSON réglementaire si la source est en XML. Certaines données sources n'étant pas valides, nous corrigeons ce qui peut être corrigé (par exemple le format d'une date). Si certains champs manquent dans les données, nous avons pris le parti de les garder et de signaler ces anomalies.
  4. Nous convertissons l'agrégat au format JSON (format réglementaire + format OCDS) et au format XML réglementaire
  5. Nous publions les agrégats JSON, XML et OCDS sur un jeu de données sur data.gouv.fr
  6. Nous publions également chaque jour un fichier des nouveaux marchés sur le même jeu de données

Si vous avez connaissance de données essentielles de la commande publique facilement accessibles (téléchargement en masse possible) et qui ne sont pas encore identifiées ci-dessous, merci de nous en informer.

Pré-requis

Mode d'emploi

Vous trouverez les code possibles dans le tableau plus bas.

Traitement séquentiel d'une source ou de toutes les sources

Le script process.sh permet de lancer une étape de traitement ou toutes les étapes de traitement pour une source ou toutes les sources configurées.

Les sources configurées sont visibles dans sources/metadata.json.

Les étapes de traitement et leur code respectif sont les suivantes, dans l'ordre :

  1. get (téléchargement des données de la source)
  2. fix (correction des anomalies pour optimiser l'utilisabilité des données et tendre vers la conformité aux schémas, si besoin)
  3. convert (conversion des données XML en JSON, si besoin)
  4. package (création d'un seul fichier JSON pour la source et archivage sous forme de ZIP)

Le script process.sh prend trois paramètres, dans cette ordre :

  1. le code de la source à traiter, ou all pour traiter toutes les sources
  2. le code de l'étape de traitement à effectuer sur la ou les sources
  3. le mode de sélection de l'étape : only ou rien pour n'éxecuter que l'étape sélectionnée, ou sequence pour sélectionner toutes les étapes jusqu'à l'étape sélectionnée.

Si la source sélectionnée n'a pas de script pour une étape donnée, cette étape sera ignorée.

Exemples :

# Lancer toutes les étapes de traitement sur toutes les sources
./process.sh all package sequence

# Ne lancer que l'étape de conversion XML > JSON pour la source data.gouv.fr_pes
./process.sh data.gouv.fr_pes convert only

# Ne lancer que l'étape de téléchargement des données, pour toutes les sources configurées
./process.sh all get

# Lancer toutes les étapes jusqu'à convert (get, fix, convert) pour toutes les sources configurées
./process.sh all convert sequence

Publication du résultat

  1. Les fichiers JSON, XML et OCDS doivent avoir été produits préalablement, par exemple avec :
./process.sh all package sequence
  1. Déclarez une clé API permettant de modifier le jeu de données :
export API_KEY=eyJhbGciOkJIUzI1NiJ9.eyJfc2VyIjoiNTM0ZmZmM2xhO2E3MjkyYzY0YTc3NTI2IiwidGltZSI6...
  1. Exécutez le script publish-decp.sh permet de publier les fichiers produits sur le jeu de données.
./publish-decp.sh

Sources de données agrégées

Se reporter au fichier sources/metadata.json.

Contact

Licence

Le code source de ce projet est publié sous licence MIT.