Skip to content

Fix titulaires manquants pour données AWS et codes département#166

Open
imanuch wants to merge 2 commits intoColinMaudry:mainfrom
imanuch:feat/scraping
Open

Fix titulaires manquants pour données AWS et codes département#166
imanuch wants to merge 2 commits intoColinMaudry:mainfrom
imanuch:feat/scraping

Conversation

@imanuch
Copy link
Contributor

@imanuch imanuch commented Jan 16, 2026

Summary

  • Corrige les titulaires manquants lors du traitement des données scrappées de marches-publics.info (AWS)
  • Corrige les codes département mal formatés (ex: "006" → "06")

Détails

Problème 1 : Titulaires manquants (AWS)

Les données AWS utilisent un format hybride :

  • Enveloppe JSON format 2022 (marches.marche)
  • Titulaires format 2019 (pas de clé titulaire imbriquée)

Le code détectait le format 2022 et cherchait titulaires[].titulaire.id, mais les données avaient directement titulaires[].id.

Solution :

  • norm_titulaire() normalise maintenant vers le format cible (2019 ou 2022)
  • clean_titulaires() détecte dynamiquement le format des titulaires dans le schéma

Problème 2 : Codes département mal formatés

Certains codes département sont sur 3 chiffres avec un zéro devant (ex: "006" au lieu de "06").

Solution :

  • Ajout de clean_lieu_execution_code() qui supprime le zéro initial
  • Les codes DOM-TOM (971, 972, etc.) sont préservés

Test plan

  • Test unitaire de norm_titulaire() avec données AWS réelles
  • Test de clean_lieu_execution_code() avec différents cas (006, 972, 69M, 2A)

…rmatés

- Normalisation des titulaires vers le format cible (2019 ou 2022) lors du parsing
- Les données AWS utilisent une enveloppe format 2022 mais des titulaires format 2019
- Détection dynamique du format des titulaires dans clean_titulaires()
- Correction des codes département sur 3 chiffres (ex: "006" -> "06")
- Préservation des codes DOM-TOM légitimes (971, 972, etc.)
@ColinMaudry
Copy link
Owner

Pour les titulaires, travaille plutôt à partir de cette fonction : https://github.com/ColinMaudry/decp-processing/blob/main/src/tasks/clean.py#L201-L257

…clean_titulaires()

La détection dynamique du format dans clean_titulaires() suffit à gérer
le format hybride AWS, pas besoin de normaliser en amont dans get.py.
Copy link
Owner

@ColinMaudry ColinMaudry left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai laissé quelques commentaires. Je veux bien aussi que tu enrichisses test_clean_decp() dans tests/test_clean.py en rajoutant les champs de lieu d'exécution avec des valeurs à corriger, et les assert qui vérifient que tout s'est bien passé.

lf = lf.with_columns(
pl.when(
(pl.col("lieuExecution_typeCode") == "Code département")
& (pl.col("lieuExecution_code").str.len_chars() == 3)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cette condition est redondante avec la condition \d{3} plus bas.

# Traitement en parrallèle avec 8 threads
lfs = []
with concurrent.futures.ThreadPoolExecutor(max_workers=8) as executor:
with concurrent.futures.ThreadPoolExecutor(max_workers=15) as executor:
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hors sujet ?

@github-project-automation github-project-automation bot moved this from Backlog to In progress in decp-processing Feb 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

2 participants

Comments