Sprint 1 — LOG-01 v3 À FAIRE¶
Runbook technique (fichiers, SQL, commandes) :
demo-conductor/docs/sprints/sprint-1-log01.mdCette page = vue stratégique pour Marc + Cyrille.
Refonte du pipeline LOG-01 pour matcher pixel-perfect la version HTML paysage v2 livrée par Cyrille le 2026-04-14.
Spec = HTML Cyrille¶
Fichier source de vérité : Contexte_par_cyrille/LOG01_Palaiseau_paysage_v2.html
Le pipeline Python doit reverse-engineer ce template et l'alimenter avec des données réelles certifiées (pas d'extrapolation). Voir Cyrille = source de vérité.
Critiques Cyrille à traiter (Apr 18)¶
Cyrille a identifié 6 catégories de données à requalifier ou extraire proprement :
| Donnée | État v6 actuel | Action Sprint 1 |
|---|---|---|
| DPE ADEME (23,4% passoires) | Extrapolé, présenté comme "API réelle" | Extraire via GET data.ademe.fr/.../dpe-v2-logements-existants/lines?q=91477 |
| Loyers ANIL / OLAP | Valeurs vraisemblables mais non extraites | Ingérer CSV MEF-DHUP (uploadé 2026-04-24 dans raw/ANIL/) |
| BPE par équipement | 31 médecins, 52 équipements sportifs : estimés | Extraire fichier BPE 2024 commune (TYPEQU × DEPCOM) |
| IRIS (suroccupation, morpho) | Estimations LObsTer | Extraire RP2022 par IRIS depuis INSEE détaillés, ou supprimer |
| Loyer social 6,94 €/m² | À vérifier | Vérifier circulaire DHUP avec barèmes IRL |
| Mentions "estimation" | Dispersées | Badge visuel systématique pour toute valeur non extraite |
Dépendances¶
✅ Données ANIL uploadées 2026-04-24 — raw/ANIL/ (4 CSV pred-, 2 PDF méthodo)
⏳ *Mise en place ingest_anil.py** — à créer
⏳ Table anil_loyers — schéma à définir
✅ Template HTML Cyrille v2 — disponible dans Contexte_par_cyrille/
Plan d'exécution¶
flowchart TD
A[Déplacer raw/ANIL/ → raw/logement/anil/] --> B[Créer ingest_anil.py]
B --> C[Créer table anil_loyers + migration]
C --> D[Ingérer 4 CSV dans PostgreSQL]
D --> E[Enrichir log_01.py collector]
E --> F[Brancher API DPE ADEME]
F --> G[Extraire BPE par équipement]
G --> H[Tenter extraction IRIS]
H --> I[Vérifier loyer social DHUP]
I --> J[Écrire prompt log_01_v3]
J --> K[Générer HTML Palaiseau v3]
K --> L[Comparer pixel-à-pixel vs Cyrille v2]
L --> M[Revue par Cyrille]
classDef blocker fill:#c62828,stroke:#0d1f3c,color:#fff
classDef pipeline fill:#e87722,stroke:#0d1f3c,color:#fff
classDef validation fill:#2a7f7f,stroke:#0d1f3c,color:#fff
class A,B,C,D pipeline
class E,F,G,H,I pipeline
class J,K pipeline
class L,M validation
Livrables attendus¶
backend/ingest_anil.py+ tableanil_loyerspeupléebackend/app/report_pipeline/data_collectors/log_01.pyv3 (refactor majeur)backend/app/report_pipeline/prompts/log_01_html_report.pyv3backend/reports/91477_20260XXX_v3.htmlpixel-perfect- Section "Sources détaillées" du rapport : chaque chiffre a son URL/fichier source
Anti-critères
- Aucune valeur dans le rapport sans source certifiée ou badge "estimation"
- Aucun chiffre inventé par le LLM (temperature=0, validation Pydantic stricte)
- Aucune mention "~" ou "approximativement" — soit la donnée est là, soit elle est marquée N/A