Administration

← Retour

Log : 20260325_080000

=== CRAWL 20260325_080000 ===
Trigger: scheduled
Started: 2026-03-25T08:00:00.000329
============================================================

Récupération de la page 1/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=1
  → 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 2/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=2
  → 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 3/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=3
  → 35 annonces récupérées (total en mémoire: 105)
Export de 105 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 4/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=4
  → 35 annonces récupérées (total en mémoire: 140)
Export de 140 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 5/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=5
  → 35 annonces récupérées (total en mémoire: 175)
Export de 175 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 6/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=6
  → 35 annonces récupérées (total en mémoire: 210)
Export de 210 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 7/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=7
  → 35 annonces récupérées (total en mémoire: 245)
Export de 245 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 8/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=8
  → 35 annonces récupérées (total en mémoire: 280)
Export de 280 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 9/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=9
  → 35 annonces récupérées (total en mémoire: 315)
Export de 315 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 10/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=10
  → 35 annonces récupérées (total en mémoire: 350)
Export de 350 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 11/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=11
  → 35 annonces récupérées (total en mémoire: 385)
Export de 385 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 12/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=12
  → 35 annonces récupérées (total en mémoire: 420)
Export de 420 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 13/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=13
  → 35 annonces récupérées (total en mémoire: 455)
Export de 455 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 14/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=14
  → 35 annonces récupérées (total en mémoire: 490)
Export de 490 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 15/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=15
  → 35 annonces récupérées (total en mémoire: 525)
Export de 525 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 16/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=16
  → 35 annonces récupérées (total en mémoire: 560)
Export de 560 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 17/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=17
  → 35 annonces récupérées (total en mémoire: 595)
Export de 595 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 18/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=18
  → 35 annonces récupérées (total en mémoire: 630)
Export de 630 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 19/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=19
  → 35 annonces récupérées (total en mémoire: 665)
Export de 665 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 20/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=20
  → 35 annonces récupérées (total en mémoire: 700)
Export de 700 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 21/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=21
  → 35 annonces récupérées (total en mémoire: 735)
Export de 735 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 22/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=22
  → 35 annonces récupérées (total en mémoire: 770)
Export de 770 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 23/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=23
  → 35 annonces récupérées (total en mémoire: 805)
Export de 805 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 24/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=24
  → 35 annonces récupérées (total en mémoire: 840)
Export de 840 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 25/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=25
  → 35 annonces récupérées (total en mémoire: 875)
Export de 875 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 26/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=26
  → 35 annonces récupérées (total en mémoire: 910)
Export de 910 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 27/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=27
  → 35 annonces récupérées (total en mémoire: 945)
Export de 945 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 28/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=28
  → 35 annonces récupérées (total en mémoire: 980)
Export de 980 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 29/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=29
  → 35 annonces récupérées (total en mémoire: 1015)
Export de 1015 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 30/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=30
  → 35 annonces récupérées (total en mémoire: 1050)
Export de 1050 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 31/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=31
  → 35 annonces récupérées (total en mémoire: 1085)
Export de 1085 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 32/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=32
  → 35 annonces récupérées (total en mémoire: 1120)
Export de 1120 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 33/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=33
  → 35 annonces récupérées (total en mémoire: 1155)
Export de 1155 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 34/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=34
  → 35 annonces récupérées (total en mémoire: 1190)
Export de 1190 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 35/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=35
  → 35 annonces récupérées (total en mémoire: 1225)
Export de 1225 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 36/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=36
  → 35 annonces récupérées (total en mémoire: 1260)
Export de 1260 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 37/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=37
  → 35 annonces récupérées (total en mémoire: 1295)
Export de 1295 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 38/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=38
  → 35 annonces récupérées (total en mémoire: 1330)
Export de 1330 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 39/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=39
  → 35 annonces récupérées (total en mémoire: 1365)
Export de 1365 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 40/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=40
  → 35 annonces récupérées (total en mémoire: 1400)
Export de 1400 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.
Récupération de la page 41/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000&regdate=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=41
  → 35 annonces récupérées (total en mémoire: 1435)
Export de 1435 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv réussi.

Terminé : 1435 annonces au total dans /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv
INFO: Model override : clio_4
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
  📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════

📂 leboncoin_ads_clio_4_20260325_080001.csv
   ✅ 1435 lus, 1435 insérés, 0 ignorés, 0 erreurs

────────────────────────────────────────────────────────────
  📊 TOTAL : 1435 lus, 1435 insérés
  💾 Base : /home/ubuntu/app/db/lbc.sqlite
  📌 6893 annonces en base
════════════════════════════════════════════════════════════
INFO: 1425 list_id lus dans le CSV.
INFO: 1452 annonces actives en base pour renault clio_4.
INFO: 27 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
  CHECK DISPONIBILITÉ
  CSV   : leboncoin_ads_clio_4_20260325_080001.csv
  Brand : renault  |  Modèle : clio_4
════════════════════════════════════════════════════════════

  Annonces dans le CSV    : 1425
  Annonces actives en DB  : 1452
  Absentes du crawl       : 27
  Marquées indisponibles  : 27
════════════════════════════════════════════════════════════

  Vérification :
  SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
  🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
  💾 Base SQLite       : /home/ubuntu/app/db/lbc.sqlite
  📁 Dossier figures  : /home/ubuntu/app/stats/clio_4/figures
  🔍 Modèle filtré    : clio_4
  📊 Graphiques       : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
   ✅ 2825 annonces chargées (modèle 'clio_4')

======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================

📌 Nombre total d'annonces : 2825

📋 Premières lignes (colonnes parsées) :
      list_id                                                                          subject  price_eur  year_model  mileage_km     fuel    brand   model owner_type first_publication_date
0  3127969515                                                                   Renault clio 4       7000        2018       82900  essence  renault  clio_4        pro    2026-01-15 08:48:18
1  3118025641                               Renault clio 4 1.5 dci 2019 entretenu chez renault       7990        2019      113000   diesel  renault  clio_4    private    2025-12-27 01:30:58
2  3143719888             Renault clio 4 phase 2 0.9 tce 90cv energy limited entretien complet       7990        2018       95000  essence  renault  clio_4        pro    2026-02-12 11:14:08
3  3141083795  Renault Clio 4/IV Authentique / 1.2 16 V 75 ch / 88280 kms / Entretiens à jours       5990        2014       88280  essence  renault  clio_4        pro    2026-02-07 16:41:23
4  3147329929                                                                           Clio 4       4000        2014      100000  essence  renault  clio_4    private    2026-02-18 19:23:14

❓ Valeurs manquantes par colonne clé :
   list_id                        :    0 manquantes (0.0%)
   subject                        :    0 manquantes (0.0%)
   price_eur                      :    0 manquantes (0.0%)
   year_model                     :    0 manquantes (0.0%)
   mileage_km                     :    0 manquantes (0.0%)
   fuel                           :    0 manquantes (0.0%)
   brand                          :    0 manquantes (0.0%)
   model                          :    0 manquantes (0.0%)
   owner_type                     :    0 manquantes (0.0%)
   first_publication_date         :    0 manquantes (0.0%)

📅 Période couverte :
   Première publication : 2024-04-05 09:38:00
   Dernière publication : 2026-03-25 03:24:33
   Durée : 718 jours

👤 Répartition par type de vendeur :
   private         : 1863 (65.9%)
   pro             :  962 (34.1%)

⛽ Répartition par carburant :
   diesel               : 1553 (55.0%)
   essence              : 1268 (44.9%)
   autre                :    3 (0.1%)
   gpl                  :    1 (0.0%)

🏭 Top 10 marques :
   renault              : 2825 (100.0%)

🧮 Création des colonnes calculées...
   ✅ Colonnes ajoutées : age_years, km_per_year, price_per_km

🧹 Nettoyage des données...

   📊 Rapport de nettoyage :
      prix_aberrants            :    0 lignes supprimées
      km_aberrants              :    1 lignes supprimées
      annee_aberrante           :    0 lignes supprimées
      age_negatif               :    0 lignes supprimées
      ─────────────────────────────────────────────
      Total supprimé          :    1
      Restantes               : 2824 / 2825
      Pourcentage conservé    : 100.0%

🔍 Détection des outliers (méthode IQR)...
   price_eur            :   46 outliers (1.6%)
      Bornes IQR : [4,740 ; 10,740]
   mileage_km           :   45 outliers (1.6%)
      Bornes IQR : [18,246 ; 253,052]
   age_years            :    8 outliers (0.3%)
      Bornes IQR : [5 ; 13]

   📌 Total d'annonces outliers (au moins 1 variable) : 82 (2.9%)
   ⚠️  Les outliers sont identifiés mais NON supprimés.

======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
   Nombre d'annonces restantes : 2824
   Dont outliers identifiés    : 82
   Annonces non-outliers       : 2742

   Plages de valeurs :
      price_eur            : [     3,300 ;      9,000]  (moy:      7,604)
      mileage_km           : [       125 ;    380,000]  (moy:    137,867)
      year_model           : [     2,014 ;      2,024]  (moy:      2,017)
      age_years            : [         2 ;         12]  (moy:          9)
      km_per_year          : [        18 ;     54,286]  (moy:     16,161)

   💾 2824 annonces enrichies persistées dans SQLite

🔎 Détection des annonces suspectes...
   ⚠️  9 signaux de suspicion détectés
      km_trop_bas_diesel: 7
      km_trop_bas_essence: 2
   💾 9 signaux persistés dans SQLite

======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================

📊 Tableau récapitulatif (valeurs brutes) :
   Variable  Count          Mean        Median          Std         Min       Q1       Q3           Max     IQR
  price_eur   2824   7603.882082   7900.000000  1110.491062 3300.000000   6990.0   8490.0   9000.000000  1500.0
 mileage_km   2824 137867.302408 134308.500000 44882.495565  125.000000 106298.5 165000.0 380000.000000 58701.5
 year_model   2824   2017.292139   2017.000000     1.353808 2014.000000   2016.0   2018.0   2024.000000     2.0
  age_years   2824      8.707861      9.000000     1.353808    2.000000      8.0     10.0     12.000000     2.0
km_per_year   2824  16161.369149  15731.228571  5726.138083   17.857143  12200.0  19600.0  54285.714286  7400.0

📊 Tableau formaté :
   Variable Count     Mean   Median       Std   Min       Q1       Q3      Max     IQR
  price_eur 2,824    7,604    7,900  1,110.49 3,300    6,990    8,490    9,000   1,500
 mileage_km 2,824  137,867  134,308 44,882.50   125  106,298  165,000  380,000  58,702
 year_model 2,824    2,017    2,017      1.35 2,014    2,016    2,018    2,024       2
  age_years 2,824      8.7      9.0      1.35   2.0      8.0     10.0     12.0     2.0
km_per_year 2,824 16,161.4 15,731.2  5,726.14  17.9 12,200.0 19,600.0 54,285.7 7,400.0

📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------

   📌 price_eur :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 15%, σ = 1,110)
      → Étendue : [3,300 ; 9,000] (IQR = 1,500)

   📌 mileage_km :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Dispersion MODÉRÉE (CV = 33%, σ = 44,882)
      → Étendue : [125 ; 380,000] (IQR = 58,702)

   📌 year_model :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 0%, σ = 1)
      → Étendue : [2,014 ; 2,024] (IQR = 2)

   📌 age_years :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 16%, σ = 1)
      → Étendue : [2 ; 12] (IQR = 2)

   📌 km_per_year :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Dispersion MODÉRÉE (CV = 35%, σ = 5,726)
      → Étendue : [18 ; 54,286] (IQR = 7,400)

======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
2026-03-25 08:02:24,127 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-25 08:02:24,127 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
======================================================================

📊 Prix moyen par année modèle...

   📋 Table : Prix par année modèle
   ---------------------------------------------------------------------------
    Année    Nb   Prix moy   Prix méd   Décote %
   ---------------------------------------------------------------------------
     2014    53      6,972      7,200        N/A
     2015    55      7,319      7,600      -5.0%
     2016   805      7,296      7,500      +0.3%
     2017   756      7,588      7,800      -4.0%
     2018   611      7,728      7,990      -1.8%
     2019   389      7,939      8,000      -2.7%
     2020   122      8,232      8,500      -3.7%
     2021    25      8,340      8,490      -1.3%
     2022     6      8,838      8,930      -6.0%
     2024     2      8,000      8,000      +9.5%

   📌 Décote annuelle moyenne : -1.6%

📊 Prix moyen par tranche de kilométrage...

   📋 Table : Prix par tranche de km
   ----------------------------------------------------------------------
        Tranche    Nb   Prix moy   Prix méd      Var %
   ----------------------------------------------------------------------
          0-20k    10      7,363      6,970        N/A
         20-50k    18      8,089      8,500      +9.9%
         50-80k   181      8,211      8,490      +1.5%
        80-120k   867      8,001      8,000      -2.6%
       120-160k   913      7,898      7,990      -1.3%
       160-200k   570      7,129      7,000      -9.7%
          200k+   265      5,875      5,800     -17.6%

📊 Prix moyen par âge...

   📋 Table : Prix par âge
   -----------------------------------------------------------------
     Âge    Nb   Prix moy   Décote %
   -----------------------------------------------------------------
       2     2      8,000        N/A
       4     6      8,838     +10.5%
       5    25      8,340      -5.6%
       6   122      8,232      -1.3%
       7   389      7,939      -3.6%
       8   611      7,728      -2.7%
       9   756      7,588      -1.8%
      10   805      7,296      -3.9%
      11    55      7,319      +0.3%
      12    53      6,972      -4.7%

   📌 La décote ralentit significativement à 6 ans

📊 Prix par type de carburant...

   📋 Table : Prix par carburant
   ----------------------------------------------------------------------
         Carburant    Nb   Prix moy   Prix méd
   ----------------------------------------------------------------------
             autre     3      7,630      6,990
            diesel  1553      7,460      7,700
           essence  1267      7,779      7,990

   📌 Carburant avec prix médian le plus élevé : essence (7,990€)
   📌 Carburant avec prix médian le plus bas : autre (6,990€)

📊 Prix par type de vendeur...

   📋 Table : Prix par type de vendeur
   ------------------------------------------------------------
         Type    Nb   Prix moy   Prix méd
   ------------------------------------------------------------
      private  1862      7,444      7,600
          pro   962      7,914      7,990

   📌 Test Mann-Whitney (médiane) : p = 0.0000
   ✅ Différence SIGNIFICATIVE (p < 0.05)
   📌 Écart médian Pro - Particulier : +390€

📊 Prix par modèle de véhicule...
   ℹ️ Un seul modèle détecté (clio_4) — comparaison non applicable

   ✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/clio_4/figures

======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================

📊 Analyse des seuils de kilométrage...

   📋 Taux de décote par tranche de 10k km :
   --------------------------------------------------
        10k : décote   -0.5% (n=  2)
        20k : décote  -16.5% (n=  5)
        30k : décote    1.4% (n=  6)
        40k : décote   13.3% (n=  7) ⚡
        50k : décote  -10.4% (n= 34)
        60k : décote   -2.8% (n= 58)
        70k : décote    2.6% (n= 89)
        80k : décote   -0.6% (n=131)
        90k : décote    0.6% (n=217)
       100k : décote    2.8% (n=223)
       110k : décote    0.5% (n=296)
       120k : décote   -2.3% (n=218)
       130k : décote    1.3% (n=235)
       140k : décote    0.8% (n=236)
       150k : décote    2.5% (n=224)
       160k : décote    3.9% (n=184)
       170k : décote    1.8% (n=159)
       180k : décote    4.1% (n=119)
       190k : décote    4.3% (n=108)
       200k : décote    6.0% (n=100)
       210k : décote    2.8% (n= 52)
       220k : décote   -2.3% (n= 24)
       230k : décote   12.3% (n= 36) ⚡
       240k : décote    4.7% (n=  9)
       250k : décote    0.8% (n= 17)
       260k : décote    1.3% (n=  5)
       270k : décote    9.9% (n=  4)
       280k : décote  -14.2% (n=  6)
       290k : décote   16.5% (n=  6) ⚡
      300k+ : décote  -16.8% (n=  6)

   📌 Seuils où la décote s'accélère (> 8%) :
      → 40k km : 13.3%
      → 230k km : 12.3%
      → 270k km : 9.9%
      → 290k km : 16.5%
   ✅ Sauvegardé : /home/ubuntu/app/stats/clio_4/figures/seuils_km.png

📊 Analyse des seuils d'âge...

   📋 Taux de décote par année d'âge :
   ---------------------------------------------
     4 ans : décote  -10.5% (n=  6) 🐢 LENTE
     5 ans : décote    5.6% (n= 25)
     6 ans : décote    1.3% (n=122) 🐢 LENTE
     7 ans : décote    3.6% (n=389)
     8 ans : décote    2.7% (n=611) 🐢 LENTE
     9 ans : décote    1.8% (n=756) 🐢 LENTE
    10 ans : décote    3.9% (n=805)
    11 ans : décote   -0.3% (n= 55) 🐢 LENTE
    12 ans : décote    4.7% (n= 53)

   📌 Décote lente (< 5% par an) :
      → 4 ans : -10.5%
      → 6 ans : 1.3%
      → 7 ans : 3.6%
      → 8 ans : 2.7%
      → 9 ans : 1.8%
      → 10 ans : 3.9%
      → 11 ans : -0.3%
      → 12 ans : 4.7%
   ✅ Sauvegardé : /home/ubuntu/app/stats/clio_4/figures/seuils_age.png

======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================

📊 Construction du modèle de prix attendu...
   📌 Modèle : prix = -165.88 × âge + -0.0132 × km + 10,873
   📌 R² = 0.346
📊 Calcul des écarts de prix...

   📋 Classification des annonces :
      🌟 Excellente affaire        :  169 (  6.0%)
      👍 Bonne affaire             :  366 ( 13.0%)
      📊 Prix marché               : 1751 ( 62.0%)
      💰 Cher                      :  455 ( 16.1%)
      🔴 Très cher                 :   83 (  2.9%)
📊 Graphique : Distribution des écarts de prix...
   ✅ Sauvegardé : /home/ubuntu/app/stats/clio_4/figures/ecarts_prix.png

   🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
   ====================================================================================================
    1. [3139618502] Renault Clio 4 estate accidenté
       Prix:    3,300€ | Attendu:    7,810€ | Écart:  -57.7% | Année: 2018 | Km: 131,159
    2. [3147790884] Clio 4 phase 2
       Prix:    3,500€ | Attendu:    7,825€ | Écart:  -55.3% | Année: 2018 | Km: 130,000
    3. [3165548491] Renault clio 4
       Prix:    3,500€ | Attendu:    7,461€ | Écart:  -53.1% | Année: 2017 | Km: 145,000
    4. [3150016687] Clio 4
       Prix:    4,000€ | Attendu:    7,785€ | Écart:  -48.6% | Année: 2016 | Km: 108,000
    5. [3162715888] Clio 4 2018
       Prix:    4,700€ | Attendu:    9,016€ | Écart:  -47.9% | Année: 2018 | Km: 40,000
    6. [3154311236] Renault Clio 4 1.5 dCi 2016 – Diesel – Société – 1
       Prix:    3,800€ | Attendu:    7,189€ | Écart:  -47.1% | Année: 2016 | Km: 153,000
    7. [3147329929] Clio 4
       Prix:    4,000€ | Attendu:    7,559€ | Écart:  -47.1% | Année: 2014 | Km: 100,000
    8. [3144664626] Clio 4 retour de vol
       Prix:    4,800€ | Attendu:    8,984€ | Écart:  -46.6% | Année: 2019 | Km: 55,000
    9. [3161045630] Clio 4 75ch
       Prix:    4,000€ | Attendu:    6,978€ | Écart:  -42.7% | Année: 2016 | Km: 169,000
2026-03-25 08:03:04,057 [INFO] httpx — HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
2026-03-25 08:03:04,066 [INFO] services.llm_service — Batch 0-16: 16 résultats extraits (modèle=gpt-5-nano)
2026-03-25 08:03:04,687 [INFO] stats.exporters.to_db —   stats_descriptives : 5 lignes insérées
2026-03-25 08:03:04,691 [INFO] stats.exporters.to_db —   modele_regression : 2 lignes insérées
2026-03-25 08:03:04,800 [INFO] stats.exporters.to_db —   referentiel_prix : 49 segments insérés
2026-03-25 08:03:04,986 [INFO] stats.exporters.to_db —   ads.deal_columns : 2824 annonces mises à jour
   10. [3138542846] Clio 4 essence retour vol
       Prix:    4,500€ | Attendu:    7,725€ | Écart:  -41.7% | Année: 2015 | Km: 100,000

   🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
   ====================================================================================================
    1. [3147178650] 🚗 Renault Clio 4 en très bon état
       Prix:    7,000€ | Attendu:    4,683€ | Écart:  +49.5% | Année: 2019 | Km: 380,000
    2. [3163754314] Clio 4 initiale paris
       Prix:    8,900€ | Attendu:    6,567€ | Écart:  +35.5% | Année: 2016 | Km: 200,000
    3. [3161126708] RENAULT CLIO IV dCi 110 Initiale Paris | FULL OPTI
       Prix:    8,990€ | Attendu:    6,641€ | Écart:  +35.4% | Année: 2017 | Km: 207,000
    4. [3144046817] Clio 5
       Prix:    9,000€ | Attendu:    6,999€ | Écart:  +28.6% | Année: 2019 | Km: 205,000
    5. [3165923653] RENAULT CLIO IV BUSINESS dCi 90 Energy eco2 82g Bu
       Prix:    8,990€ | Attendu:    7,004€ | Écart:  +28.4% | Année: 2016 | Km: 166,990
    6. [3136191420] Clio IV
       Prix:    7,490€ | Attendu:    5,840€ | Écart:  +28.2% | Année: 2018 | Km: 280,000
    7. [3151967791] Clio 4 initiale Paris
       Prix:    8,900€ | Attendu:    6,945€ | Écart:  +28.2% | Année: 2017 | Km: 184,000
    8. [3155921737] Renault CLIO IV 1.5 DCI 90CH ENERGY BUSINESS 82G 5
       Prix:    8,490€ | Attendu:    6,639€ | Écart:  +27.9% | Année: 2016 | Km: 194,600
    9. [3155418369] Renault CLIO IV 1.5 DCI 90CH ENERGY BUSINESS 82G 5
       Prix:    8,490€ | Attendu:    6,639€ | Écart:  +27.9% | Année: 2016 | Km: 194,600
   10. [3151279318] Clio 4 ÉDITION ONE
       Prix:    8,899€ | Attendu:    7,001€ | Écart:  +27.1% | Année: 2016 | Km: 167,264

🔎 Détection des prix suspects (seuil: -40%)...
   ⚠️  12 annonces avec prix suspect
   💾 12 signaux prix persistés dans SQLite

======================================================================
  M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
  Annonces sans évaluation LLM : 16
  Résultats extraits : 16
  Évaluations insérées : 16

======================================================================
📊 TABLEAU DE BORD RÉCAPITULATIF
======================================================================

   ┌──────────────────────────────────────────────────┐
   │ Nombre total d'annonces      │              2,824 │
   │ Prix moyen                   │            7,604 € │
   │ Prix médian                  │            7,900 € │
   │ Km moyen                     │         137,867 km │
   │ Km médian                    │         134,308 km │
   │ Âge moyen                    │            8.7 ans │
   │ Âge médian                   │            9.0 ans │
   │ Km/an moyen                  │       16,161 km/an │
   └──────────────────────────────────────────────────┘

   ✅ Sauvegardé : /home/ubuntu/app/stats/clio_4/figures/dashboard_kpis.png

======================================================================
💡 INSIGHTS PRINCIPAUX
======================================================================

   🎯 Âge optimal d'achat : ~12 ans (meilleur rapport prix/ancienneté)
   ⚡ Seuil km critique : la décote s'accélère le plus autour de (300000, 999999]
   ⛽ Carburant tenant le mieux sa valeur : essence (prix/âge le plus élevé)
   👔 Les pros vendent 5.1% plus cher que les particuliers (médiane)
   🔄 Km/an médian : 15,731 km → Profil dominant : 15-25k (Intensif)
   🏭 Top 3 marques = 100% du marché : renault (2824)

======================================================================
💡 RECOMMANDATIONS
======================================================================

   🛒 POUR UN ACHETEUR :
   --------------------------------------------------
   • Sweet spot : véhicules de 5-8 ans, 60-120k km
     Prix moyen dans cette fourchette : 8,186€
     (469 annonces disponibles)
   • Prix médian du marché : 7,900€ → cible < 7,110€ pour une bonne affaire
   • Privilégier les annonces de particuliers si budget serré
   • Vérifier le km/an : < 15 000 km/an = usage normal

   💰 POUR UN VENDEUR :
   --------------------------------------------------
   • Prix médian du marché : 7,900€
   • Positionner légèrement sous le marché pour vendre vite (-5% à -10%)
   • Les véhicules < 134,308 km se vendent mieux
   • Mettre en avant un faible km/an si applicable

   🎯 SEGMENTS DE MARCHÉ :
   --------------------------------------------------
   • Budget (775 annonces) :
     Prix : 3,300€ - 6,990€
     Âge moyen : 9.1 ans | Km moyen : 171,597
   • Milieu de gamme (1344 annonces) :
     Prix : 6,999€ - 8,490€
     Âge moyen : 8.7 ans | Km moyen : 131,172
   • Premium (705 annonces) :
     Prix : 8,499€ - 9,000€
     Âge moyen : 8.2 ans | Km moyen : 113,553

======================================================================
💾 EXPORT DES RÉSULTATS EN BASE SQLite
======================================================================
   📌 Run #149 créé
   🔍 Modèle : clio_4
   📎 2824 annonces liées au run
   ✅ Stats descriptives : 5 variables
   ✅ Modèle régression : 2 coefficients (R²=0.346)
   ✅ Référentiel prix : 49 segments
   ✅ Classifications deal : 2824 annonces

   💾 Tout exporté dans /home/ubuntu/app/db/lbc.sqlite

══════════════════════════════════════════════════════════════════════
  ✅ ANALYSE TERMINÉE en 44.4 secondes
  📊 2824 annonces analysées  (run #149)
  🔍 Modèle           : clio_4
  💾 Base SQLite      : /home/ubuntu/app/db/lbc.sqlite
  📁 Figures          : /home/ubuntu/app/stats/clio_4/figures
══════════════════════════════════════════════════════════════════════
Récupération de la page 1/2 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=toyota+yaris&price=3000-9000&regdate=2016-max&gearbox=1&seats=5%2C4&u_car_brand=TOYOTA&order=asc&page=1
  → 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_yaris_20260325_080305.csv réussi.
Récupération de la page 2/2 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=toyota+yaris&price=3000-9000&regdate=2016-max&gearbox=1&seats=5%2C4&u_car_brand=TOYOTA&order=asc&page=2
  → 15 annonces récupérées (total en mémoire: 50)
Export de 50 annonces vers /home/ubuntu/app/leboncoin_ads_yaris_20260325_080305.csv réussi.

Terminé : 50 annonces au total dans /home/ubuntu/app/leboncoin_ads_yaris_20260325_080305.csv
INFO: Model override : yaris
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
  📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════

📂 leboncoin_ads_yaris_20260325_080305.csv
   ✅ 50 lus, 50 insérés, 0 ignorés, 0 erreurs

────────────────────────────────────────────────────────────
  📊 TOTAL : 50 lus, 50 insérés
  💾 Base : /home/ubuntu/app/db/lbc.sqlite
  📌 6893 annonces en base
════════════════════════════════════════════════════════════
INFO: 50 list_id lus dans le CSV.
INFO: 53 annonces actives en base pour toyota yaris.
INFO: 3 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
  CHECK DISPONIBILITÉ
  CSV   : leboncoin_ads_yaris_20260325_080305.csv
  Brand : toyota  |  Modèle : yaris
════════════════════════════════════════════════════════════

  Annonces dans le CSV    : 50
  Annonces actives en DB  : 53
  Absentes du crawl       : 3
  Marquées indisponibles  : 3
════════════════════════════════════════════════════════════

  Vérification :
  SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
  🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
  💾 Base SQLite       : /home/ubuntu/app/db/lbc.sqlite
  📁 Dossier figures  : /home/ubuntu/app/stats/yaris/figures
  🔍 Modèle filtré    : yaris
  📊 Graphiques       : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
   ✅ 118 annonces chargées (modèle 'yaris')

======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================

📌 Nombre total d'annonces : 118

📋 Premières lignes (colonnes parsées) :
      list_id                                subject  price_eur  year_model  mileage_km     fuel   brand  model owner_type first_publication_date
0  3149141739           TOYOTA YARIS 69 VVT-i Active       7490        2015      132826  essence  toyota  yaris        pro    2026-02-22 05:48:49
1  3045595309       Toyota Yaris 69 VVT-I DYNAMIC 5P       8200        2015      110000  essence  toyota  yaris        pro    2025-08-25 15:40:00
2  3122430376  TOYOTA YARIS 1.3 VVT-i 69 CH TENDANCE       6990        2015      134360  essence  toyota  yaris        pro    2026-01-04 17:35:29
3  3151345668                           Toyota Yaris       2500        2016      150000   diesel  toyota  yaris    private    2026-02-25 20:06:54
4  3152706239                           Toyota yaris       7700        2017      119800   diesel  toyota  yaris    private    2026-02-28 12:41:35

❓ Valeurs manquantes par colonne clé :
   list_id                        :    0 manquantes (0.0%)
   subject                        :    0 manquantes (0.0%)
   price_eur                      :    0 manquantes (0.0%)
   year_model                     :    0 manquantes (0.0%)
   mileage_km                     :    0 manquantes (0.0%)
   fuel                           :    0 manquantes (0.0%)
   brand                          :    0 manquantes (0.0%)
   model                          :    0 manquantes (0.0%)
   owner_type                     :    0 manquantes (0.0%)
   first_publication_date         :    0 manquantes (0.0%)

📅 Période couverte :
   Première publication : 2025-06-13 15:11:00
   Dernière publication : 2026-03-24 16:54:56
   Durée : 284 jours

👤 Répartition par type de vendeur :
   pro             :   61 (51.7%)
   private         :   57 (48.3%)

⛽ Répartition par carburant :
   essence              :  101 (85.6%)
   diesel               :   17 (14.4%)

🏭 Top 10 marques :
   toyota               :  118 (100.0%)

🧮 Création des colonnes calculées...
   ✅ Colonnes ajoutées : age_years, km_per_year, price_per_km

🧹 Nettoyage des données...

   📊 Rapport de nettoyage :
      prix_aberrants            :    0 lignes supprimées
      km_aberrants              :    0 lignes supprimées
      annee_aberrante           :    0 lignes supprimées
      age_negatif               :    0 lignes supprimées
      ─────────────────────────────────────────────
      Total supprimé          :    0
      Restantes               :  118 / 118
      Pourcentage conservé    : 100.0%

🔍 Détection des outliers (méthode IQR)...
   price_eur            :    2 outliers (1.7%)
      Bornes IQR : [4,650 ; 11,450]
   mileage_km           :    3 outliers (2.5%)
      Bornes IQR : [22,357 ; 218,502]
   age_years            :    2 outliers (1.7%)
      Bornes IQR : [5 ; 13]

   📌 Total d'annonces outliers (au moins 1 variable) : 6 (5.1%)
   ⚠️  Les outliers sont identifiés mais NON supprimés.

======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
   Nombre d'annonces restantes : 118
   Dont outliers identifiés    : 6
   Annonces non-outliers       : 112

   Plages de valeurs :
      price_eur            : [     2,500 ;      9,000]  (moy:      7,868)
      mileage_km           : [       150 ;    200,000]  (moy:    118,017)
      year_model           : [     2,015 ;      2,025]  (moy:      2,017)
      age_years            : [         1 ;         11]  (moy:          9)
      km_per_year          : [        15 ;    143,200]  (moy:     13,965)

   💾 118 annonces enrichies persistées dans SQLite

🔎 Détection des annonces suspectes...
   ⚠️  2 signaux de suspicion détectés
      km_trop_bas_essence: 2
   💾 2 signaux persistés dans SQLite

======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================

📊 Tableau récapitulatif (valeurs brutes) :
   Variable  Count          Mean        Median          Std    Min       Q1        Q3      Max      IQR
  price_eur    118   7867.652542   8100.000000  1221.865733 2500.0  7200.00   8900.00   9000.0  1700.00
 mileage_km    118 118016.864407 120400.000000 38227.212667  150.0 95911.25 144947.50 200000.0 49036.25
 year_model    118   2016.838983   2016.000000     1.585028 2015.0  2016.00   2018.00   2025.0     2.00
  age_years    118      9.161017     10.000000     1.585028    1.0     8.00     10.00     11.0     2.00
km_per_year    118  13965.308967  12904.545455 12737.830919   15.0  9951.75  14976.75 143200.0  5025.00

📊 Tableau formaté :
   Variable Count     Mean   Median       Std   Min      Q1       Q3       Max     IQR
  price_eur   118    7,868    8,100  1,221.87 2,500   7,200    8,900     9,000   1,700
 mileage_km   118  118,017  120,400 38,227.21   150  95,911  144,948   200,000  49,036
 year_model   118    2,017    2,016      1.59 2,015   2,016    2,018     2,025       2
  age_years   118      9.2     10.0      1.59   1.0     8.0     10.0      11.0     2.0
km_per_year   118 13,965.3 12,904.5 12,737.83  15.0 9,951.8 14,976.8 143,200.0 5,025.0

📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------

   📌 price_eur :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 16%, σ = 1,222)
      → Étendue : [2,500 ; 9,000] (IQR = 1,700)

   📌 mileage_km :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Dispersion MODÉRÉE (CV = 32%, σ = 38,227)
      → Étendue : [150 ; 200,000] (IQR = 49,036)

   📌 year_model :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 0%, σ = 2)
      → Étendue : [2,015 ; 2,025] (IQR = 2)

   📌 age_years :
      → Distribution asymétrique GAUCHE (moyenne 9 < médiane 10)
        Quelques valeurs basses tirent la moyenne vers le bas.
      → Faible dispersion (CV = 17%, σ = 2)
      → Étendue : [1 ; 11] (IQR = 2)

   📌 km_per_year :
      → Distribution asymétrique DROITE (moyenne 13,965 > médiane 12,905)
        Quelques valeurs élevées tirent la moyenne vers le haut.
      → FORTE dispersion (CV = 91%, σ = 12,738)
      → Étendue : [15 ; 143,200] (IQR = 5,025)

======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================

📊 Prix moyen par année modèle...

   📋 Table : Prix par année modèle
   ---------------------------------------------------------------------------
    Année    Nb   Prix moy   Prix méd   Décote %
2026-03-25 08:03:36,721 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-25 08:03:36,722 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
   ---------------------------------------------------------------------------
     2015    16      7,880      7,980        N/A
     2016    48      7,566      7,994      +4.0%
     2017    22      8,250      8,495      -9.1%
     2018    15      7,950      8,500      +3.6%
     2019    13      8,485      8,890      -6.7%
     2020     2      8,840      8,840      -4.2%

   📌 Décote annuelle moyenne : -2.5%

📊 Prix moyen par tranche de kilométrage...

   📋 Table : Prix par tranche de km
   ----------------------------------------------------------------------
        Tranche    Nb   Prix moy   Prix méd      Var %
   ----------------------------------------------------------------------
          0-20k     3      6,950      7,000        N/A
         20-50k     2      8,840      8,840     +27.2%
         50-80k    13      8,724      8,990      -1.3%
        80-120k    41      8,156      8,490      -6.5%
       120-160k    43      7,779      7,999      -4.6%
       160-200k    15      6,734      6,600     -13.4%
          200k+     1      6,500      6,500      -3.5%

📊 Prix moyen par âge...

   📋 Table : Prix par âge
   -----------------------------------------------------------------
     Âge    Nb   Prix moy   Décote %
   -----------------------------------------------------------------
       6     2      8,840        N/A
       7    13      8,485      -4.0%
       8    15      7,950      -6.3%
       9    22      8,250      +3.8%
      10    48      7,566      -8.3%
      11    16      7,880      +4.2%

📊 Prix par type de carburant...

   📋 Table : Prix par carburant
   ----------------------------------------------------------------------
         Carburant    Nb   Prix moy   Prix méd
   ----------------------------------------------------------------------
            diesel    17      7,644      8,000
           essence   101      7,905      8,200

   📌 Carburant avec prix médian le plus élevé : essence (8,200€)
   📌 Carburant avec prix médian le plus bas : diesel (8,000€)

📊 Prix par type de vendeur...

   📋 Table : Prix par type de vendeur
   ------------------------------------------------------------
         Type    Nb   Prix moy   Prix méd
   ------------------------------------------------------------
      private    57      7,485      7,900
          pro    61      8,225      8,490

   📌 Test Mann-Whitney (médiane) : p = 0.0063
   ✅ Différence SIGNIFICATIVE (p < 0.05)
   📌 Écart médian Pro - Particulier : +590€

📊 Prix par modèle de véhicule...
   ℹ️ Un seul modèle détecté (yaris) — comparaison non applicable

   ✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/yaris/figures

======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================

📊 Analyse des seuils de kilométrage...

   📋 Taux de décote par tranche de 10k km :
   --------------------------------------------------
        50k : décote  -26.3% (n=  2)
        60k : décote    0.0% (n=  8)
        70k : décote    1.0% (n=  3)
        80k : décote    3.6% (n=  4)
        90k : décote   -1.8% (n= 12)
       100k : décote    6.6% (n= 13)
       110k : décote   -0.6% (n= 12)
       120k : décote   -4.1% (n=  9)
       130k : décote    3.4% (n= 10)
       140k : décote    5.4% (n= 17)
       150k : décote    5.7% (n=  7)
       160k : décote   -2.8% (n=  4)
       170k : décote   11.0% (n=  9) ⚡
       180k : décote    5.2% (n=  2)

   📌 Seuils où la décote s'accélère (> 8%) :
      → 170k km : 11.0%
   ✅ Sauvegardé : /home/ubuntu/app/stats/yaris/figures/seuils_km.png

📊 Analyse des seuils d'âge...

   📋 Taux de décote par année d'âge :
   ---------------------------------------------
     7 ans : décote    4.0% (n= 13)
     8 ans : décote    6.3% (n= 15)
     9 ans : décote   -3.8% (n= 22) 🐢 LENTE
    10 ans : décote    8.3% (n= 48)
    11 ans : décote   -4.2% (n= 16) 🐢 LENTE

   📌 Décote lente (< 5% par an) :
      → 7 ans : 4.0%
      → 9 ans : -3.8%
      → 11 ans : -4.2%
   ✅ Sauvegardé : /home/ubuntu/app/stats/yaris/figures/seuils_age.png

======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================

📊 Construction du modèle de prix attendu...
   📌 Modèle : prix = 60.80 × âge + -0.0118 × km + 8,701
   📌 R² = 0.130
📊 Calcul des écarts de prix...

   📋 Classification des annonces :
      🌟 Excellente affaire        :   10 (  8.5%)
      👍 Bonne affaire             :    8 (  6.8%)
      📊 Prix marché               :   74 ( 62.7%)
      💰 Cher                      :   21 ( 17.8%)
      🔴 Très cher                 :    5 (  4.2%)
📊 Graphique : Distribution des écarts de prix...
   ✅ Sauvegardé : /home/ubuntu/app/stats/yaris/figures/ecarts_prix.png

   🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
   ====================================================================================================
    1. [3151345668] Toyota Yaris
       Prix:    2,500€ | Attendu:    7,542€ | Écart:  -66.9% | Année: 2016 | Km: 150,000
    2. [3166982116] Toyota yaris
       Prix:    3,500€ | Attendu:    7,306€ | Écart:  -52.1% | Année: 2016 | Km: 170,000
    3. [3152322073] Toyota Yaris 1.0 VVTI PRO EXPORT (0101261)
       Prix:    5,250€ | Attendu:    8,702€ | Écart:  -39.7% | Année: 2023 | Km: 15,333
    4. [3157660912] Toyota Yaris
       Prix:    5,500€ | Attendu:    7,903€ | Écart:  -30.4% | Année: 2018 | Km: 109,000
    5. [3165225181] Toyota yaris
       Prix:    5,300€ | Attendu:    7,306€ | Écart:  -27.5% | Année: 2016 | Km: 170,000
    6. [3166534631] Toyota yaris
       Prix:    5,300€ | Attendu:    7,306€ | Écart:  -27.5% | Année: 2016 | Km: 170,000
    7. [3157975215] Toyota yaris 2011
       Prix:    5,150€ | Attendu:    7,075€ | Écart:  -27.2% | Année: 2025 | Km: 143,200
    8. [3161632025] Toyota Yaris III - 5P - 2016
       Prix:    5,500€ | Attendu:    7,424€ | Écart:  -25.9% | Année: 2016 | Km: 160,000
    9. [3165747251] Toyota Yaris
       Prix:    7,000€ | Attendu:    9,307€ | Écart:  -24.8% | Année: 2016 | Km: 150
   10. [3167175989] Toyota Aygo 1.0 VTI x-play
       Prix:    5,999€ | Attendu:    7,974€ | Écart:  -24.8% | Année: 2018 | Km: 103,000

   🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
   ====================================================================================================
    1. [3157352360] Toyota Yaris III 1.5 VVT-i 110 ch – Design Y20-201
       Prix:    8,900€ | Attendu:    7,065€ | Écart:  +26.0% | Année: 2019 | Km: 175,000
    2. [3151218398] TOYOTA Yaris 3 Phase 2 / 1.3 VVTi 16V 100 cv *Fini
       Prix:    8,990€ | Attendu:    7,236€ | Écart:  +24.2% | Année: 2016 | Km: 176,000
    3. [3163742160] Toyota Yaris 90 D-4D Design 5p style
       Prix:    8,990€ | Attendu:    7,375€ | Écart:  +21.9% | Année: 2016 | Km: 164,156
    4. [3153117476] Toyota Yaris 70 VVT-i France 5p MY19
       Prix:    8,990€ | Attendu:    7,381€ | Écart:  +21.8% | Année: 2018 | Km: 153,356
    5. [3167503729] Toyota Yaris III 110cv VVT-i Design MY19
       Prix:    8,990€ | Attendu:    7,421€ | Écart:  +21.1% | Année: 2019 | Km: 144,790
    6. [3135900987] TOYOTA YARIS RC18 110 VVT-i COLLECTION
       Prix:    8,990€ | Attendu:    7,597€ | Écart:  +18.3% | Année: 2018 | Km: 135,000
    7. [3151923222] Toyota Yaris 110 VVT-i Design Y20 5p RC19
       Prix:    8,990€ | Attendu:    7,633€ | Écart:  +17.8% | Année: 2019 | Km: 126,787
    8. [3006906577] Toyota Yaris III 69 VVT-i France
       Prix:    8,990€ | Attendu:    7,651€ | Écart:  +17.5% | Année: 2016 | Km: 140,770
    9. [3150673579] Toyota yaris 100 vvt-i dynamic 5p 2016
       Prix:    8,990€ | Attendu:    7,683€ | Écart:  +17.0% | Année: 2016 | Km: 138,000
2026-03-25 08:03:37,776 [INFO] stats.exporters.to_db —   stats_descriptives : 5 lignes insérées
2026-03-25 08:03:37,779 [INFO] stats.exporters.to_db —   modele_regression : 2 lignes insérées
2026-03-25 08:03:37,832 [INFO] stats.exporters.to_db —   referentiel_prix : 23 segments insérés
2026-03-25 08:03:37,844 [INFO] stats.exporters.to_db —   ads.deal_columns : 118 annonces mises à jour
   10. [3146935741] Toyota Yaris 1.4 D-4D 90 Business
       Prix:    8,990€ | Attendu:    7,726€ | Écart:  +16.4% | Année: 2017 | Km: 129,178

🔎 Détection des prix suspects (seuil: -40%)...
   ⚠️  2 annonces avec prix suspect
   💾 2 signaux prix persistés dans SQLite

======================================================================
  M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
  Annonces sans évaluation LLM : 0
  Toutes les annonces ont déjà été analysées.

======================================================================
📊 TABLEAU DE BORD RÉCAPITULATIF
======================================================================

   ┌──────────────────────────────────────────────────┐
   │ Nombre total d'annonces      │                118 │
   │ Prix moyen                   │            7,868 € │
   │ Prix médian                  │            8,100 € │
   │ Km moyen                     │         118,017 km │
   │ Km médian                    │         120,400 km │
   │ Âge moyen                    │            9.2 ans │
   │ Âge médian                   │           10.0 ans │
   │ Km/an moyen                  │       13,965 km/an │
   └──────────────────────────────────────────────────┘

   ✅ Sauvegardé : /home/ubuntu/app/stats/yaris/figures/dashboard_kpis.png

======================================================================
💡 INSIGHTS PRINCIPAUX
======================================================================

   🎯 Âge optimal d'achat : ~11 ans (meilleur rapport prix/ancienneté)
   ⚡ Seuil km critique : la décote s'accélère le plus autour de (20000, 40000]
   ⛽ Carburant tenant le mieux sa valeur : essence (prix/âge le plus élevé)
   👔 Les pros vendent 7.5% plus cher que les particuliers (médiane)
   🔄 Km/an médian : 12,905 km → Profil dominant : 10-15k (Normal)
   🏭 Top 3 marques = 100% du marché : toyota (118)

======================================================================
💡 RECOMMANDATIONS
======================================================================

   🛒 POUR UN ACHETEUR :
   --------------------------------------------------
   • Sweet spot : véhicules de 5-8 ans, 60-120k km
     Prix moyen dans cette fourchette : 8,264€
     (16 annonces disponibles)
   • Prix médian du marché : 8,100€ → cible < 7,290€ pour une bonne affaire
   • Privilégier les annonces de particuliers si budget serré
   • Vérifier le km/an : < 15 000 km/an = usage normal

   💰 POUR UN VENDEUR :
   --------------------------------------------------
   • Prix médian du marché : 8,100€
   • Positionner légèrement sous le marché pour vendre vite (-5% à -10%)
   • Les véhicules < 120,400 km se vendent mieux
   • Mettre en avant un faible km/an si applicable

   🎯 SEGMENTS DE MARCHÉ :
   --------------------------------------------------
   • Budget (31 annonces) :
     Prix : 2,500€ - 7,200€
     Âge moyen : 9.0 ans | Km moyen : 135,807
   • Milieu de gamme (58 annonces) :
     Prix : 7,299€ - 8,900€
     Âge moyen : 9.4 ans | Km moyen : 114,913
   • Premium (29 annonces) :
     Prix : 8,950€ - 9,000€
     Âge moyen : 8.9 ans | Km moyen : 105,208

======================================================================
💾 EXPORT DES RÉSULTATS EN BASE SQLite
======================================================================
   📌 Run #150 créé
   🔍 Modèle : yaris
   📎 118 annonces liées au run
   ✅ Stats descriptives : 5 variables
   ✅ Modèle régression : 2 coefficients (R²=0.130)
   ✅ Référentiel prix : 23 segments
   ✅ Classifications deal : 118 annonces

   💾 Tout exporté dans /home/ubuntu/app/db/lbc.sqlite

══════════════════════════════════════════════════════════════════════
  ✅ ANALYSE TERMINÉE en 3.8 secondes
  📊 118 annonces analysées  (run #150)
  🔍 Modèle           : yaris
  💾 Base SQLite      : /home/ubuntu/app/db/lbc.sqlite
  📁 Figures          : /home/ubuntu/app/stats/yaris/figures
══════════════════════════════════════════════════════════════════════
Récupération de la page 1/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=i20&price=3000-9000&regdate=2016-max&gearbox=1&seats=5%2C4&u_car_brand=HYUNDAI&u_car_model=HYUNDAI_i20&order=asc&page=1
  → 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_i20_20260325_080338.csv réussi.
Récupération de la page 2/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=i20&price=3000-9000&regdate=2016-max&gearbox=1&seats=5%2C4&u_car_brand=HYUNDAI&u_car_model=HYUNDAI_i20&order=asc&page=2
  → 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_i20_20260325_080338.csv réussi.
Récupération de la page 3/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=i20&price=3000-9000&regdate=2016-max&gearbox=1&seats=5%2C4&u_car_brand=HYUNDAI&u_car_model=HYUNDAI_i20&order=asc&page=3
  → 35 annonces récupérées (total en mémoire: 105)
Export de 105 annonces vers /home/ubuntu/app/leboncoin_ads_i20_20260325_080338.csv réussi.
Récupération de la page 4/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=i20&price=3000-9000&regdate=2016-max&gearbox=1&seats=5%2C4&u_car_brand=HYUNDAI&u_car_model=HYUNDAI_i20&order=asc&page=4
  → 16 annonces récupérées (total en mémoire: 121)
Export de 121 annonces vers /home/ubuntu/app/leboncoin_ads_i20_20260325_080338.csv réussi.

Terminé : 121 annonces au total dans /home/ubuntu/app/leboncoin_ads_i20_20260325_080338.csv
INFO: Model override : i20
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
  📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════

📂 leboncoin_ads_i20_20260325_080338.csv
   ✅ 121 lus, 121 insérés, 0 ignorés, 0 erreurs

────────────────────────────────────────────────────────────
  📊 TOTAL : 121 lus, 121 insérés
  💾 Base : /home/ubuntu/app/db/lbc.sqlite
  📌 6895 annonces en base
════════════════════════════════════════════════════════════
INFO: 121 list_id lus dans le CSV.
INFO: 122 annonces actives en base pour hyundai i20.
INFO: 1 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
  CHECK DISPONIBILITÉ
  CSV   : leboncoin_ads_i20_20260325_080338.csv
  Brand : hyundai  |  Modèle : i20
════════════════════════════════════════════════════════════

  Annonces dans le CSV    : 121
  Annonces actives en DB  : 122
  Absentes du crawl       : 1
  Marquées indisponibles  : 1
════════════════════════════════════════════════════════════

  Vérification :
  SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
  🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
  💾 Base SQLite       : /home/ubuntu/app/db/lbc.sqlite
  📁 Dossier figures  : /home/ubuntu/app/stats/i20/figures
  🔍 Modèle filtré    : i20
  📊 Graphiques       : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
   ✅ 241 annonces chargées (modèle 'i20')

======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================

📌 Nombre total d'annonces : 241

📋 Premières lignes (colonnes parsées) :
      list_id                                     subject  price_eur  year_model  mileage_km     fuel    brand model owner_type first_publication_date
0  3068840554                      HYUNDAI i20 1.2 Initia       8990        2020       91000  essence  hyundai   i20        pro    2025-10-04 11:09:00
1  3150341430                   Hyundai i20 1.2 75 Initia       8990        2019       93859  essence  hyundai   i20        pro    2026-02-24 00:06:00
2  3142118035            Hyundai i20 1.6 CRDI - 16V TURBO       7990        2016      129000   diesel  hyundai   i20        pro    2026-02-09 11:27:08
3  3144114421       Hyundai I20 1.0 T-GDI 100CH INTUITIVE       8490        2019      138310  essence  hyundai   i20        pro    2026-02-13 02:48:08
4  3143181277  GARANTIE 12 MOIS / Crit'air 1 / HYUNAI I20       8990        2015       59700  essence  hyundai   i20        pro    2026-02-11 10:52:53

❓ Valeurs manquantes par colonne clé :
   list_id                        :    0 manquantes (0.0%)
   subject                        :    0 manquantes (0.0%)
   price_eur                      :    0 manquantes (0.0%)
   year_model                     :    0 manquantes (0.0%)
   mileage_km                     :    0 manquantes (0.0%)
   fuel                           :    0 manquantes (0.0%)
   brand                          :    0 manquantes (0.0%)
   model                          :    0 manquantes (0.0%)
   owner_type                     :    0 manquantes (0.0%)
   first_publication_date         :    0 manquantes (0.0%)

📅 Période couverte :
   Première publication : 2025-04-14 15:12:00
   Dernière publication : 2026-03-24 22:01:49
   Durée : 344 jours

👤 Répartition par type de vendeur :
   private         :  137 (56.8%)
   pro             :  104 (43.2%)

⛽ Répartition par carburant :
   essence              :  195 (80.9%)
   diesel               :   45 (18.7%)
   autre                :    1 (0.4%)

🏭 Top 10 marques :
   hyundai              :  241 (100.0%)

🧮 Création des colonnes calculées...
   ✅ Colonnes ajoutées : age_years, km_per_year, price_per_km

🧹 Nettoyage des données...

   📊 Rapport de nettoyage :
      prix_aberrants            :    0 lignes supprimées
      km_aberrants              :    0 lignes supprimées
      annee_aberrante           :    0 lignes supprimées
      age_negatif               :    0 lignes supprimées
      ─────────────────────────────────────────────
      Total supprimé          :    0
      Restantes               :  241 / 241
      Pourcentage conservé    : 100.0%

🔍 Détection des outliers (méthode IQR)...
   price_eur            :    6 outliers (2.5%)
      Bornes IQR : [5,250 ; 10,450]
   mileage_km           :    7 outliers (2.9%)
      Bornes IQR : [28,120 ; 216,728]
   age_years            :    2 outliers (0.8%)
      Bornes IQR : [5 ; 13]

   📌 Total d'annonces outliers (au moins 1 variable) : 13 (5.4%)
   ⚠️  Les outliers sont identifiés mais NON supprimés.

======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
   Nombre d'annonces restantes : 241
   Dont outliers identifiés    : 13
   Annonces non-outliers       : 228

   Plages de valeurs :
      price_eur            : [     3,800 ;      9,000]  (moy:      7,772)
      mileage_km           : [        95 ;    230,567]  (moy:    121,752)
      year_model           : [     2,015 ;      2,025]  (moy:      2,017)
      age_years            : [         1 ;         11]  (moy:          9)
      km_per_year          : [        12 ;     24,308]  (moy:     13,408)

   💾 241 annonces enrichies persistées dans SQLite

🔎 Détection des annonces suspectes...
   ⚠️  3 signaux de suspicion détectés
      km_trop_bas_diesel: 2
      km_trop_bas_essence: 1
   💾 3 signaux persistés dans SQLite

======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================

📊 Tableau récapitulatif (valeurs brutes) :
   Variable  Count          Mean        Median          Std      Min      Q1       Q3           Max     IQR
  price_eur    241   7772.008299   7990.000000  1062.448320 3800.000  7200.0   8500.0   9000.000000  1300.0
 mileage_km    241 121752.360996 125740.000000 37932.513696   95.000 98848.0 146000.0 230567.000000 47152.0
 year_model    241   2016.817427   2017.000000     1.335363 2015.000  2016.0   2018.0   2025.000000     2.0
  age_years    241      9.182573      9.000000     1.335363    1.000     8.0     10.0     11.000000     2.0
km_per_year    241  13408.407698  13333.333333  4290.977223   11.875 10505.9  16350.0  24308.166667  5844.1

📊 Tableau formaté :
   Variable Count     Mean   Median       Std   Min       Q1       Q3      Max     IQR
  price_eur   241    7,772    7,990  1,062.45 3,800    7,200    8,500    9,000   1,300
 mileage_km   241  121,752  125,740 37,932.51    95   98,848  146,000  230,567  47,152
 year_model   241    2,017    2,017      1.34 2,015    2,016    2,018    2,025       2
  age_years   241      9.2      9.0      1.34   1.0      8.0     10.0     11.0     2.0
km_per_year   241 13,408.4 13,333.3  4,290.98  11.9 10,505.9 16,350.0 24,308.2 5,844.1

📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------

   📌 price_eur :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 14%, σ = 1,062)
      → Étendue : [3,800 ; 9,000] (IQR = 1,300)

   📌 mileage_km :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Dispersion MODÉRÉE (CV = 31%, σ = 37,933)
      → Étendue : [95 ; 230,567] (IQR = 47,152)

   📌 year_model :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 0%, σ = 1)
      → Étendue : [2,015 ; 2,025] (IQR = 2)

   📌 age_years :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 15%, σ = 1)
      → Étendue : [1 ; 11] (IQR = 2)

   📌 km_per_year :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Dispersion MODÉRÉE (CV = 32%, σ = 4,291)
      → Étendue : [12 ; 24,308] (IQR = 5,844)

======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================

📊 Prix moyen par année modèle...

   📋 Table : Prix par année modèle
   ---------------------------------------------------------------------------
    Année    Nb   Prix moy   Prix méd   Décote %
2026-03-25 08:03:53,442 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-25 08:03:53,442 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
   ---------------------------------------------------------------------------
     2015    25      7,574      7,800        N/A
     2016    92      7,619      7,900      -0.6%
     2017    63      7,663      7,900      -0.6%
     2018    39      8,073      8,480      -5.3%
     2019    15      8,361      8,490      -3.6%
     2020     5      8,584      8,480      -2.7%

   📌 Décote annuelle moyenne : -2.6%

📊 Prix moyen par tranche de kilométrage...

   📋 Table : Prix par tranche de km
   ----------------------------------------------------------------------
        Tranche    Nb   Prix moy   Prix méd      Var %
   ----------------------------------------------------------------------
          0-20k     3      7,800      8,900        N/A
         20-50k     7      8,167      7,990      +4.7%
         50-80k    24      8,539      8,725      +4.6%
        80-120k    74      8,160      8,490      -4.4%
       120-160k    94      7,772      7,900      -4.8%
       160-200k    35      6,530      6,200     -16.0%
          200k+     4      6,148      6,050      -5.9%

📊 Prix moyen par âge...

   📋 Table : Prix par âge
   -----------------------------------------------------------------
     Âge    Nb   Prix moy   Décote %
   -----------------------------------------------------------------
       6     5      8,584        N/A
       7    15      8,361      -2.6%
       8    39      8,073      -3.4%
       9    63      7,663      -5.1%
      10    92      7,619      -0.6%
      11    25      7,574      -0.6%

   📌 La décote ralentit significativement à 10 ans

📊 Prix par type de carburant...

   📋 Table : Prix par carburant
   ----------------------------------------------------------------------
         Carburant    Nb   Prix moy   Prix méd
   ----------------------------------------------------------------------
            diesel    45      7,204      7,290
           essence   195      7,901      7,990

   📌 Carburant avec prix médian le plus élevé : essence (7,990€)
   📌 Carburant avec prix médian le plus bas : diesel (7,290€)

📊 Prix par type de vendeur...

   📋 Table : Prix par type de vendeur
   ------------------------------------------------------------
         Type    Nb   Prix moy   Prix méd
   ------------------------------------------------------------
      private   137      7,658      7,900
          pro   104      7,922      7,990

   📌 Test Mann-Whitney (médiane) : p = 0.1093
   ❌ Différence NON significative (p >= 0.05)
   📌 Écart médian Pro - Particulier : +90€

📊 Prix par modèle de véhicule...
   ℹ️ Un seul modèle détecté (i20) — comparaison non applicable

   ✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/i20/figures

======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================

📊 Analyse des seuils de kilométrage...

   📋 Taux de décote par tranche de 10k km :
   --------------------------------------------------
        20k : décote   -1.3% (n=  2)
        40k : décote   -4.7% (n=  5)
        50k : décote   -5.6% (n=  2)
        60k : décote    4.2% (n= 10)
        70k : décote   -3.3% (n= 12)
        80k : décote    2.9% (n=  7)
        90k : décote    0.6% (n= 22)
       100k : décote    2.9% (n= 28)
       110k : décote    2.1% (n= 17)
       120k : décote    3.2% (n= 30)
       130k : décote   -1.0% (n= 28)
       140k : décote   -1.1% (n= 23)
       150k : décote   -1.4% (n= 13)
       160k : décote    6.3% (n= 15)
       170k : décote   23.8% (n= 13) ⚡
       180k : décote   -9.3% (n=  6)
       200k : décote    2.4% (n=  2)

   📌 Seuils où la décote s'accélère (> 8%) :
      → 170k km : 23.8%
   ✅ Sauvegardé : /home/ubuntu/app/stats/i20/figures/seuils_km.png

📊 Analyse des seuils d'âge...

   📋 Taux de décote par année d'âge :
   ---------------------------------------------
     7 ans : décote    2.6% (n= 15) 🐢 LENTE
     8 ans : décote    3.4% (n= 39)
     9 ans : décote    5.1% (n= 63)
    10 ans : décote    0.6% (n= 92) 🐢 LENTE
    11 ans : décote    0.6% (n= 25) 🐢 LENTE

   📌 Décote lente (< 5% par an) :
      → 7 ans : 2.6%
      → 8 ans : 3.4%
      → 10 ans : 0.6%
      → 11 ans : 0.6%
   ✅ Sauvegardé : /home/ubuntu/app/stats/i20/figures/seuils_age.png

======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================

📊 Construction du modèle de prix attendu...
   📌 Modèle : prix = -107.87 × âge + -0.0128 × km + 10,323
   📌 R² = 0.251
📊 Calcul des écarts de prix...

   📋 Classification des annonces :
      🌟 Excellente affaire        :   15 (  6.2%)
      👍 Bonne affaire             :   34 ( 14.1%)
      📊 Prix marché               :  144 ( 59.8%)
      💰 Cher                      :   44 ( 18.3%)
      🔴 Très cher                 :    4 (  1.7%)
📊 Graphique : Distribution des écarts de prix...
   ✅ Sauvegardé : /home/ubuntu/app/stats/i20/figures/ecarts_prix.png

   🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
   ====================================================================================================
    1. [3150513139] Hyundai i20 essence
       Prix:    3,800€ | Attendu:    7,778€ | Écart:  -51.1% | Année: 2015 | Km: 106,000
    2. [3160167161] Hyundai i20 2017
       Prix:    4,000€ | Attendu:    7,801€ | Écart:  -48.7% | Année: 2017 | Km: 121,054
    3. [3132112485] Vend ou échange
       Prix:    5,500€ | Attendu:    9,133€ | Écart:  -39.8% | Année: 2015 | Km: 296
    4. [3146778483] HYUNDAI i20 II 5 Portes Phase 2 1.2 i 16V 84 cv
       Prix:    4,990€ | Attendu:    7,281€ | Écart:  -31.5% | Année: 2018 | Km: 170,000
    5. [3139554030] Hyundai i20 coupe 1.2 84 cv intuitive 3 portes
       Prix:    4,990€ | Attendu:    7,191€ | Écart:  -30.6% | Année: 2018 | Km: 177,000
    6. [3144748405] Hyundai i20 1.2 Go Klima RadioCD
       Prix:    4,985€ | Attendu:    7,098€ | Écart:  -29.8% | Année: 2017 | Km: 175,866
    7. [3141044598] Hyundai i20
       Prix:    5,600€ | Attendu:    7,942€ | Écart:  -29.5% | Année: 2016 | Km: 101,653
    8. [3154012812] Hyundai
       Prix:    5,100€ | Attendu:    7,065€ | Écart:  -27.8% | Année: 2016 | Km: 170,000
    9. [3159144757] Hyundai i20 1.2 essence 2016 – CT OK – pneus neufs
       Prix:    5,400€ | Attendu:    7,211€ | Écart:  -25.1% | Année: 2016 | Km: 158,600
   10. [3157664571] Hyundai i20 1.1 CRDI
       Prix:    5,300€ | Attendu:    6,886€ | Écart:  -23.0% | Année: 2016 | Km: 184,000

   🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
   ====================================================================================================
    1. [3105795045] HYUNDAI I20 Coupé 1.0 TGDi 120 CV 03/2016 1 ERE MA
       Prix:    8,990€ | Attendu:    7,129€ | Écart:  +26.1% | Année: 2016 | Km: 165,000
    2. [3164886925] Hyundai i20 Coupé
       Prix:    9,000€ | Attendu:    7,365€ | Écart:  +22.2% | Année: 2017 | Km: 155,000
    3. [3158481657] Hyundai i20
       Prix:    8,900€ | Attendu:    7,391€ | Écart:  +20.4% | Année: 2016 | Km: 144,600
    4. [3109227704] Hyundai i20 crdi 75ch edition navy
       Prix:    8,900€ | Attendu:    7,402€ | Écart:  +20.2% | Année: 2017 | Km: 152,154
    5. [3152500439] Hyundai i20 1.0 T-GDi 100 UEFA EURO 2016
       Prix:    8,489€ | Attendu:    7,240€ | Écart:  +17.3% | Année: 2016 | Km: 156,400
    6. [3151384014] Hyundai i20
       Prix:    8,500€ | Attendu:    7,304€ | Écart:  +16.4% | Année: 2015 | Km: 143,000
    7. [3155001248] Vente voiture hyundai i20
       Prix:    8,500€ | Attendu:    7,307€ | Écart:  +16.3% | Année: 2018 | Km: 168,000
    8. [2972084163] HYUNDAI I20 1.2i - 84 BERLINE Initia
2026-03-25 08:04:02,570 [INFO] httpx — HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
2026-03-25 08:04:02,578 [INFO] services.llm_service — Batch 0-2: 2 résultats extraits (modèle=gpt-5-nano)
2026-03-25 08:04:02,867 [INFO] stats.exporters.to_db —   stats_descriptives : 5 lignes insérées
2026-03-25 08:04:02,871 [INFO] stats.exporters.to_db —   modele_regression : 2 lignes insérées
2026-03-25 08:04:02,936 [INFO] stats.exporters.to_db —   referentiel_prix : 29 segments insérés
2026-03-25 08:04:02,956 [INFO] stats.exporters.to_db —   ads.deal_columns : 241 annonces mises à jour
       Prix:    8,990€ | Attendu:    7,739€ | Écart:  +16.2% | Année: 2015 | Km: 109,000
    9. [3140396976] HYUNDAI i20 1.1 CRDi 75 Intuitive
       Prix:    8,900€ | Attendu:    7,693€ | Écart:  +15.7% | Année: 2016 | Km: 121,000
   10. [3164815335] Hyundai I20 1.2 84 GO NAVI
       Prix:    8,990€ | Attendu:    7,835€ | Écart:  +14.7% | Année: 2016 | Km: 109,939

🔎 Détection des prix suspects (seuil: -40%)...
   ⚠️  2 annonces avec prix suspect
   💾 2 signaux prix persistés dans SQLite

======================================================================
  M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
  Annonces sans évaluation LLM : 2
  Résultats extraits : 2
  Évaluations insérées : 2

======================================================================
📊 TABLEAU DE BORD RÉCAPITULATIF
======================================================================

   ┌──────────────────────────────────────────────────┐
   │ Nombre total d'annonces      │                241 │
   │ Prix moyen                   │            7,772 € │
   │ Prix médian                  │            7,990 € │
   │ Km moyen                     │         121,752 km │
   │ Km médian                    │         125,740 km │
   │ Âge moyen                    │            9.2 ans │
   │ Âge médian                   │            9.0 ans │
   │ Km/an moyen                  │       13,408 km/an │
   └──────────────────────────────────────────────────┘

   ✅ Sauvegardé : /home/ubuntu/app/stats/i20/figures/dashboard_kpis.png

======================================================================
💡 INSIGHTS PRINCIPAUX
======================================================================

   🎯 Âge optimal d'achat : ~11 ans (meilleur rapport prix/ancienneté)
   ⚡ Seuil km critique : la décote s'accélère le plus autour de (160000, 180000]
   ⛽ Carburant tenant le mieux sa valeur : essence (prix/âge le plus élevé)
   👔 Les pros vendent 1.1% plus cher que les particuliers (médiane)
   🔄 Km/an médian : 13,333 km → Profil dominant : 10-15k (Normal)
   🏭 Top 3 marques = 100% du marché : hyundai (241)

======================================================================
💡 RECOMMANDATIONS
======================================================================

   🛒 POUR UN ACHETEUR :
   --------------------------------------------------
   • Sweet spot : véhicules de 5-8 ans, 60-120k km
     Prix moyen dans cette fourchette : 8,491€
     (28 annonces disponibles)
   • Prix médian du marché : 7,990€ → cible < 7,191€ pour une bonne affaire
   • Privilégier les annonces de particuliers si budget serré
   • Vérifier le km/an : < 15 000 km/an = usage normal

   💰 POUR UN VENDEUR :
   --------------------------------------------------
   • Prix médian du marché : 7,990€
   • Positionner légèrement sous le marché pour vendre vite (-5% à -10%)
   • Les véhicules < 125,740 km se vendent mieux
   • Mettre en avant un faible km/an si applicable

   🎯 SEGMENTS DE MARCHÉ :
   --------------------------------------------------
   • Budget (64 annonces) :
     Prix : 3,800€ - 7,200€
     Âge moyen : 9.5 ans | Km moyen : 145,923
   • Milieu de gamme (121 annonces) :
     Prix : 7,290€ - 8,500€
     Âge moyen : 9.2 ans | Km moyen : 121,453
   • Premium (56 annonces) :
     Prix : 8,600€ - 9,000€
     Âge moyen : 8.7 ans | Km moyen : 94,774

======================================================================
💾 EXPORT DES RÉSULTATS EN BASE SQLite
======================================================================
   📌 Run #151 créé
   🔍 Modèle : i20
   📎 241 annonces liées au run
   ✅ Stats descriptives : 5 variables
   ✅ Modèle régression : 2 coefficients (R²=0.251)
   ✅ Référentiel prix : 29 segments
   ✅ Classifications deal : 241 annonces

   💾 Tout exporté dans /home/ubuntu/app/db/lbc.sqlite

══════════════════════════════════════════════════════════════════════
  ✅ ANALYSE TERMINÉE en 12.2 secondes
  📊 241 annonces analysées  (run #151)
  🔍 Modèle           : i20
  💾 Base SQLite      : /home/ubuntu/app/db/lbc.sqlite
  📁 Figures          : /home/ubuntu/app/stats/i20/figures
══════════════════════════════════════════════════════════════════════
Récupération de la page 1/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=1
  → 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260325_080403.csv réussi.
Récupération de la page 2/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=2
  → 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260325_080403.csv réussi.
Récupération de la page 3/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=3
  → 35 annonces récupérées (total en mémoire: 105)
Export de 105 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260325_080403.csv réussi.
Récupération de la page 4/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=4
  → 35 annonces récupérées (total en mémoire: 140)
Export de 140 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260325_080403.csv réussi.
Récupération de la page 5/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=5
  → 35 annonces récupérées (total en mémoire: 175)
Export de 175 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260325_080403.csv réussi.
Récupération de la page 6/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=6
  → 35 annonces récupérées (total en mémoire: 210)
Export de 210 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260325_080403.csv réussi.
Récupération de la page 7/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=7
  → 35 annonces récupérées (total en mémoire: 245)
Export de 245 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260325_080403.csv réussi.
Récupération de la page 8/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=8
  → 35 annonces récupérées (total en mémoire: 280)
Export de 280 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260325_080403.csv réussi.
Récupération de la page 9/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=9
  → 35 annonces récupérées (total en mémoire: 315)
Export de 315 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260325_080403.csv réussi.
Récupération de la page 10/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=10
  → 31 annonces récupérées (total en mémoire: 346)
Export de 346 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260325_080403.csv réussi.

Terminé : 346 annonces au total dans /home/ubuntu/app/leboncoin_ads_berlingo_20260325_080403.csv
INFO: Model override : berlingo
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
  📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════

📂 leboncoin_ads_berlingo_20260325_080403.csv
   ✅ 346 lus, 346 insérés, 0 ignorés, 0 erreurs

────────────────────────────────────────────────────────────
  📊 TOTAL : 346 lus, 346 insérés
  💾 Base : /home/ubuntu/app/db/lbc.sqlite
  📌 6899 annonces en base
════════════════════════════════════════════════════════════
INFO: 345 list_id lus dans le CSV.
INFO: 347 annonces actives en base pour citroen berlingo.
INFO: 2 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
  CHECK DISPONIBILITÉ
  CSV   : leboncoin_ads_berlingo_20260325_080403.csv
  Brand : citroen  |  Modèle : berlingo
════════════════════════════════════════════════════════════

  Annonces dans le CSV    : 345
  Annonces actives en DB  : 347
  Absentes du crawl       : 2
  Marquées indisponibles  : 2
════════════════════════════════════════════════════════════

  Vérification :
  SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
  🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
  💾 Base SQLite       : /home/ubuntu/app/db/lbc.sqlite
  📁 Dossier figures  : /home/ubuntu/app/stats/berlingo/figures
  🔍 Modèle filtré    : berlingo
  📊 Graphiques       : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
   ✅ 557 annonces chargées (modèle 'berlingo')

======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================

📌 Nombre total d'annonces : 557

📋 Premières lignes (colonnes parsées) :
      list_id                                                                                     subject  price_eur  year_model  mileage_km    fuel    brand     model owner_type first_publication_date
0  3137494988                                           Citroen berlingo xl 3 places 130 ch eat8 19990 ht      23988        2025          50  diesel  citroen  berlingo        pro    2026-02-01 11:46:21
1  3127792883  CITROEN BERLINGO XL 950kg 1.5 BlueHDi 100ch Control BVM5 S&S 2pl - GARANTIE 6 MOIS MINIMUM      14990        2020       25000  diesel  citroen  berlingo        pro    2026-01-14 15:23:00
2  3140287724                                                                            Berlingo XL 2019      12500        2019       70000  diesel  citroen  berlingo    private    2026-02-06 10:22:45
3  3088625727                                                       Citroën Berlingo BHDI 100 CLUB XL BVM      13990        2020      105583  diesel  citroen  berlingo        pro    2025-11-07 09:24:00
4  3136059936                                                                                 Berlingo xl      17000        2021       65000  diesel  citroen  berlingo    private    2026-01-29 18:26:54

❓ Valeurs manquantes par colonne clé :
   list_id                        :    0 manquantes (0.0%)
   subject                        :    0 manquantes (0.0%)
   price_eur                      :    0 manquantes (0.0%)
   year_model                     :    0 manquantes (0.0%)
   mileage_km                     :    0 manquantes (0.0%)
   fuel                           :    0 manquantes (0.0%)
   brand                          :    0 manquantes (0.0%)
   model                          :    0 manquantes (0.0%)
   owner_type                     :    0 manquantes (0.0%)
   first_publication_date         :    0 manquantes (0.0%)

📅 Période couverte :
   Première publication : 2025-02-11 15:13:00
   Dernière publication : 2026-03-25 07:49:20
   Durée : 406 jours

👤 Répartition par type de vendeur :
   pro             :  452 (81.1%)
   private         :  105 (18.9%)

⛽ Répartition par carburant :
   diesel               :  542 (97.3%)
   électrique           :   10 (1.8%)
   essence              :    5 (0.9%)

🏭 Top 10 marques :
   citroen              :  557 (100.0%)

🧮 Création des colonnes calculées...
   ✅ Colonnes ajoutées : age_years, km_per_year, price_per_km

🧹 Nettoyage des données...

   📊 Rapport de nettoyage :
      prix_aberrants            :    0 lignes supprimées
      km_aberrants              :    2 lignes supprimées
      annee_aberrante           :    0 lignes supprimées
      age_negatif               :   15 lignes supprimées
      ─────────────────────────────────────────────
      Total supprimé          :   17
      Restantes               :  540 / 557
      Pourcentage conservé    : 96.9%

🔍 Détection des outliers (méthode IQR)...
   price_eur            :    7 outliers (1.3%)
      Bornes IQR : [-191 ; 28,899]
   mileage_km           :    4 outliers (0.7%)
      Bornes IQR : [-81,738 ; 241,406]
   age_years            :    4 outliers (0.7%)
      Bornes IQR : [-3 ; 13]

   📌 Total d'annonces outliers (au moins 1 variable) : 12 (2.2%)
   ⚠️  Les outliers sont identifiés mais NON supprimés.

======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
   Nombre d'annonces restantes : 540
   Dont outliers identifiés    : 12
   Annonces non-outliers       : 528

   Plages de valeurs :
      price_eur            : [     2,800 ;     38,190]  (moy:     14,778)
      mileage_km           : [         1 ;    309,000]  (moy:     84,013)
      year_model           : [     2,009 ;      2,025]  (moy:      2,021)
      age_years            : [         1 ;         17]  (moy:          5)
      km_per_year          : [         1 ;     56,667]  (moy:     14,099)

   💾 540 annonces enrichies persistées dans SQLite

🔎 Détection des annonces suspectes...
   ⚠️  5 signaux de suspicion détectés
      km_trop_bas_diesel: 5
   💾 5 signaux persistés dans SQLite

======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================

📊 Tableau récapitulatif (valeurs brutes) :
   Variable  Count         Mean       Median          Std    Min           Q1       Q3           Max          IQR
  price_eur    540 14778.424074 13695.000000  5796.210353 2800.0 10717.500000  17990.0  38190.000000  7272.500000
 mileage_km    540 84013.407407 86394.500000 57297.855677    1.0 39441.000000 120227.0 309000.000000 80786.000000
 year_model    540  2020.644444  2020.000000     2.742415 2009.0  2019.000000   2023.0   2025.000000     4.000000
  age_years    540     5.355556     6.000000     2.742415    1.0     3.000000      7.0     17.000000     4.000000
km_per_year    540 14098.945945 14412.833333  9125.160382    1.0  8858.424107  19402.5  56666.666667 10544.075893

📊 Tableau formaté :
   Variable Count     Mean   Median       Std   Min      Q1       Q3      Max      IQR
  price_eur   540   14,778   13,695  5,796.21 2,800  10,718   17,990   38,190    7,272
 mileage_km   540   84,013   86,394 57,297.86     1  39,441  120,227  309,000   80,786
 year_model   540    2,021    2,020      2.74 2,009   2,019    2,023    2,025        4
  age_years   540      5.4      6.0      2.74   1.0     3.0      7.0     17.0      4.0
km_per_year   540 14,098.9 14,412.8  9,125.16   1.0 8,858.4 19,402.5 56,666.7 10,544.1

📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------

   📌 price_eur :
      → Distribution asymétrique DROITE (moyenne 14,778 > médiane 13,695)
        Quelques valeurs élevées tirent la moyenne vers le haut.
      → Dispersion MODÉRÉE (CV = 39%, σ = 5,796)
      → Étendue : [2,800 ; 38,190] (IQR = 7,272)

   📌 mileage_km :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → FORTE dispersion (CV = 68%, σ = 57,298)
      → Étendue : [1 ; 309,000] (IQR = 80,786)

   📌 year_model :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 0%, σ = 3)
      → Étendue : [2,009 ; 2,025] (IQR = 4)

   📌 age_years :
      → Distribution asymétrique GAUCHE (moyenne 5 < médiane 6)
        Quelques valeurs basses tirent la moyenne vers le bas.
      → FORTE dispersion (CV = 51%, σ = 3)
      → Étendue : [1 ; 17] (IQR = 4)

   📌 km_per_year :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → FORTE dispersion (CV = 65%, σ = 9,125)
      → Étendue : [1 ; 56,667] (IQR = 10,544)
2026-03-25 08:04:42,270 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-25 08:04:42,270 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.

======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================

📊 Prix moyen par année modèle...

   📋 Table : Prix par année modèle
   ---------------------------------------------------------------------------
    Année    Nb   Prix moy   Prix méd   Décote %
   ---------------------------------------------------------------------------
     2009     2      4,800      4,800        N/A
     2013     2      6,850      6,850     -42.7%
     2014     2      9,345      9,345     -36.4%
     2016    12      8,057      8,200     +13.8%
     2017    34      8,821      8,445      -9.5%
     2018    67     10,047      9,490     -13.9%
     2019    61     12,117     11,990     -20.6%
     2020    98     13,115     12,695      -8.2%
     2021    71     14,237     13,980      -8.6%
     2022    52     14,769     14,645      -3.7%
     2023    40     18,150     17,900     -22.9%
     2024    21     21,164     20,480     -16.6%
     2025    76     24,784     24,480     -17.1%

   📌 Décote annuelle moyenne : -15.5%

📊 Prix moyen par tranche de kilométrage...

   📋 Table : Prix par tranche de km
   ----------------------------------------------------------------------
        Tranche    Nb   Prix moy   Prix méd      Var %
   ----------------------------------------------------------------------
          0-20k   100     23,844     23,545        N/A
         20-50k    55     17,363     17,760     -27.2%
         50-80k    90     15,242     15,540     -12.2%
        80-120k   151     12,481     12,500     -18.1%
       120-160k    94     10,481     10,395     -16.0%
       160-200k    37      8,556      8,500     -18.4%
          200k+    13      6,358      6,000     -25.7%

📊 Prix moyen par âge...

   📋 Table : Prix par âge
   -----------------------------------------------------------------
     Âge    Nb   Prix moy   Décote %
   -----------------------------------------------------------------
       1    76     24,784        N/A
       2    21     21,164     -14.6%
       3    40     18,150     -14.2%
       4    52     14,769     -18.6%
       5    71     14,237      -3.6%
       6    98     13,115      -7.9%
       7    61     12,117      -7.6%
       8    67     10,047     -17.1%
       9    34      8,821     -12.2%
      10    12      8,057      -8.7%
      12     2      9,345     +16.0%
      13     2      6,850     -26.7%
      17     2      4,800     -29.9%

   📌 La décote ralentit significativement à 5 ans

📊 Prix par type de carburant...

   📋 Table : Prix par carburant
   ----------------------------------------------------------------------
         Carburant    Nb   Prix moy   Prix méd
   ----------------------------------------------------------------------
            diesel   526     14,779     13,695
           essence     5     11,744      9,990
        électrique     9     16,439     15,990

   📌 Carburant avec prix médian le plus élevé : électrique (15,990€)
   📌 Carburant avec prix médian le plus bas : essence (9,990€)

📊 Prix par type de vendeur...

   📋 Table : Prix par type de vendeur
   ------------------------------------------------------------
         Type    Nb   Prix moy   Prix méd
   ------------------------------------------------------------
      private   104     12,194     11,650
          pro   436     15,395     13,990

   📌 Test Mann-Whitney (médiane) : p = 0.0000
   ✅ Différence SIGNIFICATIVE (p < 0.05)
   📌 Écart médian Pro - Particulier : +2,340€

📊 Prix par modèle de véhicule...
   ℹ️ Un seul modèle détecté (berlingo) — comparaison non applicable

   ✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/berlingo/figures

======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================

📊 Analyse des seuils de kilométrage...

   📋 Taux de décote par tranche de 10k km :
   --------------------------------------------------
        10k : décote   20.7% (n= 10) ⚡
        20k : décote    8.7% (n= 14)
        30k : décote    0.3% (n= 23)
        40k : décote    3.8% (n= 18)
        50k : décote    7.9% (n= 30)
        60k : décote    0.6% (n= 31)
        70k : décote    5.1% (n= 29)
        80k : décote    5.0% (n= 37)
        90k : décote    6.9% (n= 41)
       100k : décote    8.0% (n= 38)
       110k : décote    8.5% (n= 35)
       120k : décote    1.2% (n= 31)
       130k : décote    2.6% (n= 26)
       140k : décote    1.5% (n= 14)
       150k : décote    2.9% (n= 23)
       160k : décote   12.9% (n= 19) ⚡
       170k : décote   -1.7% (n= 11)
       180k : décote   16.9% (n=  7) ⚡
       200k : décote    7.5% (n=  5)
       210k : décote   -4.0% (n=  3)
      300k+ : décote   32.7% (n=  2) ⚡

   📌 Seuils où la décote s'accélère (> 8%) :
      → 10k km : 20.7%
      → 20k km : 8.7%
      → 100k km : 8.0%
      → 110k km : 8.5%
      → 160k km : 12.9%
      → 180k km : 16.9%
      → 300k+ km : 32.7%
   ✅ Sauvegardé : /home/ubuntu/app/stats/berlingo/figures/seuils_km.png

📊 Analyse des seuils d'âge...

   📋 Taux de décote par année d'âge :
   ---------------------------------------------
     2 ans : décote   14.6% (n= 21)
     3 ans : décote   14.2% (n= 40)
     4 ans : décote   18.6% (n= 52) ⚡ FORTE
     5 ans : décote    3.6% (n= 71)
     6 ans : décote    7.9% (n= 98)
     7 ans : décote    7.6% (n= 61)
     8 ans : décote   17.1% (n= 67) ⚡ FORTE
     9 ans : décote   12.2% (n= 34)
    10 ans : décote    8.7% (n= 12)
    12 ans : décote  -16.0% (n=  2) 🐢 LENTE
    13 ans : décote   26.7% (n=  2) ⚡ FORTE
    17 ans : décote   29.9% (n=  2) ⚡ FORTE

   📌 Décote rapide (> 10% par an) :
      → 2 ans : 14.6%
      → 3 ans : 14.2%
      → 4 ans : 18.6%
      → 8 ans : 17.1%
      → 9 ans : 12.2%
      → 13 ans : 26.7%
      → 17 ans : 29.9%

   📌 Décote lente (< 5% par an) :
      → 5 ans : 3.6%
      → 12 ans : -16.0%
   ✅ Sauvegardé : /home/ubuntu/app/stats/berlingo/figures/seuils_age.png

======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================

📊 Construction du modèle de prix attendu...
   📌 Modèle : prix = -912.61 × âge + -0.0511 × km + 23,957
   📌 R² = 0.773
📊 Calcul des écarts de prix...

   📋 Classification des annonces :
      🌟 Excellente affaire        :   50 (  9.3%)
      👍 Bonne affaire             :   96 ( 17.9%)
      📊 Prix marché               :  277 ( 51.7%)
      💰 Cher                      :   54 ( 10.1%)
      🔴 Très cher                 :   59 ( 11.0%)
📊 Graphique : Distribution des écarts de prix...
   ✅ Sauvegardé : /home/ubuntu/app/stats/berlingo/figures/ecarts_prix.png

   🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
   ====================================================================================================
    1. [3156231773] Citroën Berlingo XL BLUEHDI 100 S&S ETG6 CLUB
       Prix:    3,000€ | Attendu:    9,942€ | Écart:  -69.8% | Année: 2018 | Km: 131,461
    2. [3166746198] Citroën Berlingo FOURGON XL BLUEHDI 100 S&S ETG6 C
       Prix:    3,000€ | Attendu:    8,133€ | Écart:  -63.1% | Année: 2018 | Km: 166,868
    3. [3156023107] Citroën Berlingo 1.5 BLUEHDI 100 STE XL DRIVER
       Prix:    8,000€ | Attendu:   16,399€ | Écart:  -51.2% | Année: 2021 | Km: 58,647
    4. [3144063650] Citroën Berlingo 1.5 BLUEDHI 100 STE XL DRIVER
       Prix:    8,000€ | Attendu:   15,856€ | Écart:  -49.5% | Année: 2022 | Km: 87,146
    5. [3156192309] Citroën Berlingo FOURGON XL BLUEHDI 100 S&S ETG6 C
       Prix:    2,800€ | Attendu:    5,324€ | Écart:  -47.4% | Année: 2017 | Km: 203,997
    6. [3156023444] Citroën Berlingo 1.5 BLUEHDI 100 STE XL DRIVER
2026-03-25 08:05:10,006 [INFO] httpx — HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
2026-03-25 08:05:10,013 [INFO] services.llm_service — Batch 0-4: 4 résultats extraits (modèle=gpt-5-nano)
2026-03-25 08:05:10,307 [INFO] stats.exporters.to_db —   stats_descriptives : 5 lignes insérées
2026-03-25 08:05:10,311 [INFO] stats.exporters.to_db —   modele_regression : 2 lignes insérées
2026-03-25 08:05:10,427 [INFO] stats.exporters.to_db —   referentiel_prix : 57 segments insérés
2026-03-25 08:05:10,467 [INFO] stats.exporters.to_db —   ads.deal_columns : 540 annonces mises à jour
       Prix:    8,000€ | Attendu:   15,140€ | Écart:  -47.2% | Année: 2021 | Km: 83,293
    7. [3157282073] Citroen berlingo xl 1.6 bluehdi 100 cv club
       Prix:    5,980€ | Attendu:   11,120€ | Écart:  -46.2% | Année: 2018 | Km: 108,380
    8. [3163320492] Citroën Berlingo VAN XL 950 PURETECH 130 S&S EAT8 
       Prix:    8,250€ | Attendu:   14,978€ | Écart:  -44.9% | Année: 2020 | Km: 68,597
    9. [2984931973] Citroën Berlingo Electrique Taille XL Club
       Prix:    8,590€ | Attendu:   15,346€ | Écart:  -44.0% | Année: 2018 | Km: 25,657
   10. [3156133024] Citroën berlingo xl électrique confort isotherme T
       Prix:    7,990€ | Attendu:   13,745€ | Écart:  -41.9% | Année: 2018 | Km: 57,000

   🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
   ====================================================================================================
    1. [3153561957] Citroën Berlingo XL 1.6 BlueHDI 100 Cabine Approfo
       Prix:    6,000€ | Attendu:    1,340€ | Écart: +347.9% | Année: 2017 | Km: 282,000
    2. [3155307735] Citroën berlingo
       Prix:    7,000€ | Attendu:    1,852€ | Écart: +278.0% | Année: 2013 | Km: 200,500
    3. [3115315205] Citroën Jumpy CAB APPROFONDIE XL BLUEHDI 180 S&S E
       Prix:   38,190€ | Attendu:   23,043€ | Écart:  +65.7% | Année: 2025 | Km: 40
    4. [3140204221] Citroen Berlingo Van XL BlueHDi 100 S&S Cabine App
       Prix:    9,490€ | Attendu:    5,781€ | Écart:  +64.2% | Année: 2018 | Km: 212,912
    5. [3130621009] Citroen BERLINGO XL 1.6 HDI 90 ch CABINE APPROFOND
       Prix:   11,490€ | Attendu:    7,081€ | Écart:  +62.3% | Année: 2014 | Km: 116,000
    6. [3148392923] CITROEN BERLINGO 1.5 BlueHDi S&S - 130 XL Feel 7 P
       Prix:   19,990€ | Attendu:   12,366€ | Écart:  +61.7% | Année: 2018 | Km: 84,000
    7. [3097892706] Citroën Berlingo CABINE APPROFONDIE CA TAILLE XL B
       Prix:   37,140€ | Attendu:   23,045€ | Écart:  +61.2% | Année: 2025 | Km: 1
    8. [3158708742] Berlingo XL 1.6L bluehdi aménagé
       Prix:   15,000€ | Attendu:   10,016€ | Écart:  +49.8% | Année: 2018 | Km: 130,000
    9. [3156325212] À vendre - Citroën Berlingo rallongée - Boîte auto
       Prix:    9,500€ | Attendu:    6,352€ | Écart:  +49.6% | Année: 2016 | Km: 166,000
   10. [3109384717] Citroen Berlingo Van XL BlueHDi 100ch S&S Cabine A
       Prix:   34,212€ | Attendu:   23,044€ | Écart:  +48.5% | Année: 2025 | Km: 10

🔎 Détection des prix suspects (seuil: -40%)...
   ⚠️  12 annonces avec prix suspect
   💾 12 signaux prix persistés dans SQLite

======================================================================
  M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
  Annonces sans évaluation LLM : 4
  Résultats extraits : 4
  Évaluations insérées : 4

======================================================================
📊 TABLEAU DE BORD RÉCAPITULATIF
======================================================================

   ┌──────────────────────────────────────────────────┐
   │ Nombre total d'annonces      │                540 │
   │ Prix moyen                   │           14,778 € │
   │ Prix médian                  │           13,695 € │
   │ Km moyen                     │          84,013 km │
   │ Km médian                    │          86,394 km │
   │ Âge moyen                    │            5.4 ans │
   │ Âge médian                   │            6.0 ans │
   │ Km/an moyen                  │       14,099 km/an │
   └──────────────────────────────────────────────────┘

   ✅ Sauvegardé : /home/ubuntu/app/stats/berlingo/figures/dashboard_kpis.png

======================================================================
💡 INSIGHTS PRINCIPAUX
======================================================================

   🎯 Âge optimal d'achat : ~10 ans (meilleur rapport prix/ancienneté)
   ⚡ Seuil km critique : la décote s'accélère le plus autour de (20000, 40000]
   ⛽ Carburant tenant le mieux sa valeur : électrique (prix/âge le plus élevé)
   👔 Les pros vendent 20.1% plus cher que les particuliers (médiane)
   🔄 Km/an médian : 14,413 km → Profil dominant : 15-25k (Intensif)
   🏭 Top 3 marques = 100% du marché : citroen (540)

======================================================================
💡 RECOMMANDATIONS
======================================================================

   🛒 POUR UN ACHETEUR :
   --------------------------------------------------
   • Sweet spot : véhicules de 5-8 ans, 60-120k km
     Prix moyen dans cette fourchette : 12,948€
     (165 annonces disponibles)
   • Prix médian du marché : 13,695€ → cible < 12,326€ pour une bonne affaire
   • Privilégier les annonces de particuliers si budget serré
   • Vérifier le km/an : < 15 000 km/an = usage normal

   💰 POUR UN VENDEUR :
   --------------------------------------------------
   • Prix médian du marché : 13,695€
   • Positionner légèrement sous le marché pour vendre vite (-5% à -10%)
   • Les véhicules < 86,394 km se vendent mieux
   • Mettre en avant un faible km/an si applicable

   🎯 SEGMENTS DE MARCHÉ :
   --------------------------------------------------
   • Budget (135 annonces) :
     Prix : 2,800€ - 10,500€
     Âge moyen : 8.0 ans | Km moyen : 141,424
   • Milieu de gamme (272 annonces) :
     Prix : 10,790€ - 17,990€
     Âge moyen : 5.7 ans | Km moyen : 89,276
   • Premium (133 annonces) :
     Prix : 18,000€ - 38,190€
     Âge moyen : 2.0 ans | Km moyen : 14,976

======================================================================
💾 EXPORT DES RÉSULTATS EN BASE SQLite
======================================================================
   📌 Run #152 créé
   🔍 Modèle : berlingo
   📎 540 annonces liées au run
   ✅ Stats descriptives : 5 variables
   ✅ Modèle régression : 2 coefficients (R²=0.773)
   ✅ Référentiel prix : 57 segments
   ✅ Classifications deal : 540 annonces

   💾 Tout exporté dans /home/ubuntu/app/db/lbc.sqlite

══════════════════════════════════════════════════════════════════════
  ✅ ANALYSE TERMINÉE en 31.0 secondes
  📊 540 annonces analysées  (run #152)
  🔍 Modèle           : berlingo
  💾 Base SQLite      : /home/ubuntu/app/db/lbc.sqlite
  📁 Figures          : /home/ubuntu/app/stats/berlingo/figures
══════════════════════════════════════════════════════════════════════
Récupération de la page 1/5 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=c4&price=min-11000&regdate=2015-max&mileage=min-150000&u_car_brand=CITROEN&seats=999999&u_car_model=CITROEN_C4%2CCITROEN_C4+Aircross%2CCITROEN_C4+Cactus%2CCITROEN_C4+Picasso%2CCITROEN_C4+SpaceTourer%2CCITROEN_C4+X&page=1
  → 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_c4_20260325_080511.csv réussi.
Récupération de la page 2/5 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=c4&price=min-11000&regdate=2015-max&mileage=min-150000&u_car_brand=CITROEN&seats=999999&u_car_model=CITROEN_C4%2CCITROEN_C4+Aircross%2CCITROEN_C4+Cactus%2CCITROEN_C4+Picasso%2CCITROEN_C4+SpaceTourer%2CCITROEN_C4+X&page=2
  → 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_c4_20260325_080511.csv réussi.
Récupération de la page 3/5 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=c4&price=min-11000&regdate=2015-max&mileage=min-150000&u_car_brand=CITROEN&seats=999999&u_car_model=CITROEN_C4%2CCITROEN_C4+Aircross%2CCITROEN_C4+Cactus%2CCITROEN_C4+Picasso%2CCITROEN_C4+SpaceTourer%2CCITROEN_C4+X&page=3
  → 35 annonces récupérées (total en mémoire: 105)
Export de 105 annonces vers /home/ubuntu/app/leboncoin_ads_c4_20260325_080511.csv réussi.
Récupération de la page 4/5 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=c4&price=min-11000&regdate=2015-max&mileage=min-150000&u_car_brand=CITROEN&seats=999999&u_car_model=CITROEN_C4%2CCITROEN_C4+Aircross%2CCITROEN_C4+Cactus%2CCITROEN_C4+Picasso%2CCITROEN_C4+SpaceTourer%2CCITROEN_C4+X&page=4
  → 35 annonces récupérées (total en mémoire: 140)
Export de 140 annonces vers /home/ubuntu/app/leboncoin_ads_c4_20260325_080511.csv réussi.
Récupération de la page 5/5 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=c4&price=min-11000&regdate=2015-max&mileage=min-150000&u_car_brand=CITROEN&seats=999999&u_car_model=CITROEN_C4%2CCITROEN_C4+Aircross%2CCITROEN_C4+Cactus%2CCITROEN_C4+Picasso%2CCITROEN_C4+SpaceTourer%2CCITROEN_C4+X&page=5
  → 34 annonces récupérées (total en mémoire: 174)
Export de 174 annonces vers /home/ubuntu/app/leboncoin_ads_c4_20260325_080511.csv réussi.

Terminé : 174 annonces au total dans /home/ubuntu/app/leboncoin_ads_c4_20260325_080511.csv
INFO: Model override : c4
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
  📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════

📂 leboncoin_ads_c4_20260325_080511.csv
   ✅ 174 lus, 174 insérés, 0 ignorés, 0 erreurs

────────────────────────────────────────────────────────────
  📊 TOTAL : 174 lus, 174 insérés
  💾 Base : /home/ubuntu/app/db/lbc.sqlite
  📌 6900 annonces en base
════════════════════════════════════════════════════════════
INFO: 174 list_id lus dans le CSV.
INFO: 175 annonces actives en base pour citroen c4.
INFO: 1 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
  CHECK DISPONIBILITÉ
  CSV   : leboncoin_ads_c4_20260325_080511.csv
  Brand : citroen  |  Modèle : c4
════════════════════════════════════════════════════════════

  Annonces dans le CSV    : 174
  Annonces actives en DB  : 175
  Absentes du crawl       : 1
  Marquées indisponibles  : 1
════════════════════════════════════════════════════════════

  Vérification :
  SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
  🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
  💾 Base SQLite       : /home/ubuntu/app/db/lbc.sqlite
  📁 Dossier figures  : /home/ubuntu/app/stats/c4/figures
  🔍 Modèle filtré    : c4
  📊 Graphiques       : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
   ✅ 289 annonces chargées (modèle 'c4')

======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================

📌 Nombre total d'annonces : 289

📋 Premières lignes (colonnes parsées) :
      list_id                                                                     subject  price_eur  year_model  mileage_km     fuel    brand model owner_type first_publication_date
0  3114906971                                   Citroen c4 spacetourer 1.2 130cv business       9500        2019      114200  essence  citroen    c4        pro    2026-02-17 16:35:09
1  3120070348                   Citroen GRAND C4 PICASSO BLUEHDI 120CH BUSINESS + S&S 98G       9990        2015      149515   diesel  citroen    c4        pro    2025-12-30 11:37:00
2  3150919595             Citroen GRAND C4 SPACETOURER PURETECH 130CH S&S BUSINESS + E6.D      10990        2019      109477  essence  citroen    c4        pro    2026-02-25 04:59:50
3  3067498742  CITROEN C4 SPACETOURER 1.2 130 Business EAT8 7 Places / DISTRIBUTION NEUVE      10990        2019       68000  essence  citroen    c4        pro    2025-10-01 09:38:00
4  3034772801            Citroen C4 Grand Picasso 1.6 BLUEHDI 120 FEEL EAT BVA START-STOP      10490        2017      143000   diesel  citroen    c4        pro    2025-08-04 09:52:00

❓ Valeurs manquantes par colonne clé :
   list_id                        :    0 manquantes (0.0%)
   subject                        :    0 manquantes (0.0%)
   price_eur                      :    0 manquantes (0.0%)
   year_model                     :    0 manquantes (0.0%)
   mileage_km                     :    0 manquantes (0.0%)
   fuel                           :    0 manquantes (0.0%)
   brand                          :    0 manquantes (0.0%)
   model                          :    0 manquantes (0.0%)
   owner_type                     :    0 manquantes (0.0%)
   first_publication_date         :    0 manquantes (0.0%)

📅 Période couverte :
   Première publication : 2023-11-09 04:54:09
   Dernière publication : 2026-03-25 07:52:51
   Durée : 867 jours

👤 Répartition par type de vendeur :
   pro             :  152 (52.6%)
   private         :  137 (47.4%)

⛽ Répartition par carburant :
   diesel               :  160 (55.4%)
   essence              :  128 (44.3%)
   autre                :    1 (0.3%)

🏭 Top 10 marques :
   citroen              :  289 (100.0%)

🧮 Création des colonnes calculées...
   ✅ Colonnes ajoutées : age_years, km_per_year, price_per_km

🧹 Nettoyage des données...

   📊 Rapport de nettoyage :
      prix_aberrants            :    1 lignes supprimées
      km_aberrants              :    0 lignes supprimées
      annee_aberrante           :    0 lignes supprimées
      age_negatif               :    0 lignes supprimées
      ─────────────────────────────────────────────
      Total supprimé          :    1
      Restantes               :  288 / 289
      Pourcentage conservé    : 99.7%

🔍 Détection des outliers (méthode IQR)...
   price_eur            :   12 outliers (4.2%)
      Bornes IQR : [6,138 ; 13,438]
   mileage_km           :   12 outliers (4.2%)
      Bornes IQR : [63,500 ; 187,500]
   age_years            :    0 outliers (0.0%)
      Bornes IQR : [2 ; 14]

   📌 Total d'annonces outliers (au moins 1 variable) : 24 (8.3%)
   ⚠️  Les outliers sont identifiés mais NON supprimés.

======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
   Nombre d'annonces restantes : 288
   Dont outliers identifiés    : 24
   Annonces non-outliers       : 264

   Plages de valeurs :
      price_eur            : [     3,990 ;     11,000]  (moy:      9,533)
      mileage_km           : [       186 ;    150,000]  (moy:    120,663)
      year_model           : [     2,015 ;      2,022]  (moy:      2,017)
      age_years            : [         4 ;         11]  (moy:          9)
      km_per_year          : [        17 ;     37,387]  (moy:     14,657)

   💾 288 annonces enrichies persistées dans SQLite

🔎 Détection des annonces suspectes...
   ⚠️  8 signaux de suspicion détectés
      km_trop_bas_diesel: 7
      km_trop_bas_essence: 1
   💾 8 signaux persistés dans SQLite

======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================

📊 Tableau récapitulatif (valeurs brutes) :
   Variable  Count          Mean    Median          Std         Min       Q1            Q3       Max          IQR
  price_eur    288   9533.128472   9990.00  1473.335915 3990.000000   8875.0  10700.000000  11000.00  1825.000000
 mileage_km    288 120663.319444 129026.50 29462.231580  186.000000 110000.0 141000.000000 150000.00 31000.000000
 year_model    288   2017.329861   2017.00     1.780325 2015.000000   2016.0   2019.000000   2022.00     3.000000
  age_years    288      8.670139      9.00     1.780325    4.000000      7.0     10.000000     11.00     3.000000
km_per_year    288  14656.840847  14098.75  5088.347579   16.909091  11987.5  16666.666667  37386.75  4679.166667

📊 Tableau formaté :
   Variable Count     Mean   Median       Std   Min       Q1       Q3      Max     IQR
  price_eur   288    9,533    9,990  1,473.34 3,990    8,875   10,700   11,000   1,825
 mileage_km   288  120,663  129,026 29,462.23   186  110,000  141,000  150,000  31,000
 year_model   288    2,017    2,017      1.78 2,015    2,016    2,019    2,022       3
  age_years   288      8.7      9.0      1.78   4.0      7.0     10.0     11.0     3.0
km_per_year   288 14,656.8 14,098.8  5,088.35  16.9 11,987.5 16,666.7 37,386.8 4,679.2

📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------

   📌 price_eur :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 15%, σ = 1,473)
      → Étendue : [3,990 ; 11,000] (IQR = 1,825)

   📌 mileage_km :
      → Distribution asymétrique GAUCHE (moyenne 120,663 < médiane 129,026)
        Quelques valeurs basses tirent la moyenne vers le bas.
      → Faible dispersion (CV = 24%, σ = 29,462)
      → Étendue : [186 ; 150,000] (IQR = 31,000)

   📌 year_model :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 0%, σ = 2)
      → Étendue : [2,015 ; 2,022] (IQR = 3)

   📌 age_years :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 21%, σ = 2)
      → Étendue : [4 ; 11] (IQR = 3)

   📌 km_per_year :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Dispersion MODÉRÉE (CV = 35%, σ = 5,088)
      → Étendue : [17 ; 37,387] (IQR = 4,679)

======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
2026-03-25 08:05:30,738 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-25 08:05:30,739 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
======================================================================

📊 Prix moyen par année modèle...

   📋 Table : Prix par année modèle
   ---------------------------------------------------------------------------
    Année    Nb   Prix moy   Prix méd   Décote %
   ---------------------------------------------------------------------------
     2015    52      8,889      9,000        N/A
     2016    58      9,027      9,495      -1.5%
     2017    55      9,717     10,000      -7.6%
     2018    44      9,727      9,994      -0.1%
     2019    42     10,028     10,000      -3.1%
     2020    21      9,876     10,490      +1.5%
     2021    14     10,554     10,745      -6.9%
     2022     2     10,495     10,495      +0.6%

   📌 Décote annuelle moyenne : -2.5%

📊 Prix moyen par tranche de kilométrage...

   📋 Table : Prix par tranche de km
   ----------------------------------------------------------------------
        Tranche    Nb   Prix moy   Prix méd      Var %
   ----------------------------------------------------------------------
          0-20k     7      8,527      8,500        N/A
         20-50k     1     10,980     10,980     +28.8%
         50-80k    16     10,216     10,474      -7.0%
        80-120k    79      9,542      9,990      -6.6%
       120-160k   185      9,501      9,990      -0.4%

📊 Prix moyen par âge...

   📋 Table : Prix par âge
   -----------------------------------------------------------------
     Âge    Nb   Prix moy   Décote %
   -----------------------------------------------------------------
       4     2     10,495        N/A
       5    14     10,554      +0.6%
       6    21      9,876      -6.4%
       7    42     10,028      +1.5%
       8    44      9,727      -3.0%
       9    55      9,717      -0.1%
      10    58      9,027      -7.1%
      11    52      8,889      -1.5%

   📌 La décote ralentit significativement à 7 ans

📊 Prix par type de carburant...

   📋 Table : Prix par carburant
   ----------------------------------------------------------------------
         Carburant    Nb   Prix moy   Prix méd
   ----------------------------------------------------------------------
            diesel   159      9,942     10,000
           essence   128      9,021      9,495

   📌 Carburant avec prix médian le plus élevé : diesel (10,000€)
   📌 Carburant avec prix médian le plus bas : essence (9,495€)

📊 Prix par type de vendeur...

   📋 Table : Prix par type de vendeur
   ------------------------------------------------------------
         Type    Nb   Prix moy   Prix méd
   ------------------------------------------------------------
      private   136      9,183      9,500
          pro   152      9,846      9,990

   📌 Test Mann-Whitney (médiane) : p = 0.0026
   ✅ Différence SIGNIFICATIVE (p < 0.05)
   📌 Écart médian Pro - Particulier : +490€

📊 Prix par modèle de véhicule...
   ℹ️ Un seul modèle détecté (c4) — comparaison non applicable

   ✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/c4/figures

======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================

📊 Analyse des seuils de kilométrage...

   📋 Taux de décote par tranche de 10k km :
   --------------------------------------------------
        60k : décote  -24.6% (n=  7)
        70k : décote    6.6% (n=  8)
        80k : décote   -1.7% (n= 11)
        90k : décote    8.3% (n= 20)
       100k : décote   -8.6% (n= 15)
       110k : décote    7.2% (n= 33)
       120k : décote   -4.1% (n= 43)
       130k : décote    0.9% (n= 61)
       140k : décote    3.2% (n= 73)
       150k : décote   -1.5% (n=  8)

   📌 Seuils où la décote s'accélère (> 8%) :
      → 90k km : 8.3%
   ✅ Sauvegardé : /home/ubuntu/app/stats/c4/figures/seuils_km.png

📊 Analyse des seuils d'âge...

   📋 Taux de décote par année d'âge :
   ---------------------------------------------
     5 ans : décote   -0.6% (n= 14) 🐢 LENTE
     6 ans : décote    6.4% (n= 21)
     7 ans : décote   -1.5% (n= 42) 🐢 LENTE
     8 ans : décote    3.0% (n= 44)
     9 ans : décote    0.1% (n= 55) 🐢 LENTE
    10 ans : décote    7.1% (n= 58)
    11 ans : décote    1.5% (n= 52) 🐢 LENTE

   📌 Décote lente (< 5% par an) :
      → 5 ans : -0.6%
      → 7 ans : -1.5%
      → 8 ans : 3.0%
      → 9 ans : 0.1%
      → 11 ans : 1.5%
   ✅ Sauvegardé : /home/ubuntu/app/stats/c4/figures/seuils_age.png

======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================

📊 Construction du modèle de prix attendu...
   📌 Modèle : prix = -258.50 × âge + -0.0012 × km + 11,916
   📌 R² = 0.098
📊 Calcul des écarts de prix...

   📋 Classification des annonces :
      🌟 Excellente affaire        :   34 ( 11.8%)
      👍 Bonne affaire             :   28 (  9.7%)
      📊 Prix marché               :  150 ( 52.1%)
      💰 Cher                      :   66 ( 22.9%)
      🔴 Très cher                 :   10 (  3.5%)
📊 Graphique : Distribution des écarts de prix...
   ✅ Sauvegardé : /home/ubuntu/app/stats/c4/figures/ecarts_prix.png

   🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
   ====================================================================================================
    1. [3159491862] CITROEN GRANDE C4 PICASSO 1.2 130Ch Exclusive
       Prix:    3,990€ | Attendu:    9,202€ | Écart:  -56.6% | Année: 2016 | Km: 110,000
    2. [3144627553] Grand C4 Picasso
       Prix:    4,500€ | Attendu:    8,908€ | Écart:  -49.5% | Année: 2015 | Km: 140,000
    3. [3148620999] C4 Picasso
       Prix:    4,600€ | Attendu:    8,906€ | Écart:  -48.3% | Année: 2015 | Km: 142,000
    4. [3155010351] C4 Picasso
       Prix:    4,600€ | Attendu:    8,906€ | Écart:  -48.3% | Année: 2015 | Km: 142,000
    5. [3159599228] Vends C4 Grand Picasso II 7 places
       Prix:    6,000€ | Attendu:    9,690€ | Écart:  -38.1% | Année: 2018 | Km: 135,000
    6. [3148926526] C4 grand Picasso 2l hdi 150cv exclusive
       Prix:    5,800€ | Attendu:    9,184€ | Écart:  -36.8% | Année: 2016 | Km: 125,000
    7. [3158296763] C4 grand Picasso 2l hdi 150 cv pack exclusive
       Prix:    5,800€ | Attendu:    9,184€ | Écart:  -36.8% | Année: 2016 | Km: 125,000
    8. [3167394375] Citroën C4 Picasso 1.2 130
       Prix:    5,900€ | Attendu:    9,222€ | Écart:  -36.0% | Année: 2016 | Km: 93,250
    9. [3159003549] Vends CITROEN GRAND C4 PICASSO Intensive
       Prix:    5,900€ | Attendu:    9,169€ | Écart:  -35.7% | Année: 2016 | Km: 138,000
   10. [3162574098] Citroën c4 Picasso 7 places
       Prix:    6,000€ | Attendu:    9,192€ | Écart:  -34.7% | Année: 2016 | Km: 118,000

   🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
   ====================================================================================================
    1. [3017985052] CITROEN C4 PICASSO Grand 1.6 HDi - 120 Intensive 7
       Prix:   10,990€ | Attendu:    8,897€ | Écart:  +23.5% | Année: 2015 | Km: 149,900
    2. [3146221969] Citroen C4 Grand Picasso 7 Places - 2.0 BlueHDi 15
       Prix:   10,990€ | Attendu:    8,906€ | Écart:  +23.4% | Année: 2015 | Km: 142,000
    3. [2934302132] Citroen Grand C4 Picasso PureTech 130ch Confort S&
       Prix:   10,990€ | Attendu:    8,927€ | Écart:  +23.1% | Année: 2015 | Km: 123,901
    4. [3136798926] Grand C4 Picasso 120 HDI
       Prix:   11,000€ | Attendu:    8,936€ | Écart:  +23.1% | Année: 2015 | Km: 116,000
    5. [3155706473] Citroën Grand C4 Picasso 1.6 BlueHdi 115 Intensive
       Prix:   10,995€ | Attendu:    8,939€ | Écart:  +23.0% | Année: 2015 | Km: 113,981
    6. [3138161286] Citroën C4 PICASSO II Exclusive 2.0 BLUEHDI 150CV 
2026-03-25 08:05:41,666 [INFO] httpx — HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
2026-03-25 08:05:41,673 [INFO] services.llm_service — Batch 0-1: 1 résultats extraits (modèle=gpt-5-nano)
2026-03-25 08:05:41,963 [INFO] stats.exporters.to_db —   stats_descriptives : 5 lignes insérées
2026-03-25 08:05:41,967 [INFO] stats.exporters.to_db —   modele_regression : 2 lignes insérées
2026-03-25 08:05:42,024 [INFO] stats.exporters.to_db —   referentiel_prix : 25 segments insérés
2026-03-25 08:05:42,047 [INFO] stats.exporters.to_db —   ads.deal_columns : 288 annonces mises à jour
       Prix:   10,990€ | Attendu:    8,947€ | Écart:  +22.8% | Année: 2015 | Km: 107,256
    7. [3161244489] Citroën Grand C4 Picasso e-HDi 115 Exclusive ETG6
       Prix:   10,980€ | Attendu:    9,016€ | Écart:  +21.8% | Année: 2015 | Km: 47,966
    8. [3160469081] Grand C4 Picasso 7 places
       Prix:   10,800€ | Attendu:    8,981€ | Écart:  +20.3% | Année: 2015 | Km: 78,300
    9. [3149154360] Grand c4
       Prix:   11,000€ | Attendu:    9,159€ | Écart:  +20.1% | Année: 2016 | Km: 146,230
   10. [3071933719] Citroën C4 grand Picasso
       Prix:   11,000€ | Attendu:    9,161€ | Écart:  +20.1% | Année: 2016 | Km: 145,000

🔎 Détection des prix suspects (seuil: -40%)...
   ⚠️  4 annonces avec prix suspect
   💾 4 signaux prix persistés dans SQLite

======================================================================
  M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
  Annonces sans évaluation LLM : 1
  Résultats extraits : 1
  Évaluations insérées : 1

======================================================================
📊 TABLEAU DE BORD RÉCAPITULATIF
======================================================================

   ┌──────────────────────────────────────────────────┐
   │ Nombre total d'annonces      │                288 │
   │ Prix moyen                   │            9,533 € │
   │ Prix médian                  │            9,990 € │
   │ Km moyen                     │         120,663 km │
   │ Km médian                    │         129,026 km │
   │ Âge moyen                    │            8.7 ans │
   │ Âge médian                   │            9.0 ans │
   │ Km/an moyen                  │       14,657 km/an │
   └──────────────────────────────────────────────────┘

   ✅ Sauvegardé : /home/ubuntu/app/stats/c4/figures/dashboard_kpis.png

======================================================================
💡 INSIGHTS PRINCIPAUX
======================================================================

   🎯 Âge optimal d'achat : ~11 ans (meilleur rapport prix/ancienneté)
   ⚡ Seuil km critique : la décote s'accélère le plus autour de (40000, 60000]
   ⛽ Carburant tenant le mieux sa valeur : diesel (prix/âge le plus élevé)
   👔 Les pros vendent 5.2% plus cher que les particuliers (médiane)
   🔄 Km/an médian : 14,099 km → Profil dominant : 10-15k (Normal)
   🏭 Top 3 marques = 100% du marché : citroen (288)

======================================================================
💡 RECOMMANDATIONS
======================================================================

   🛒 POUR UN ACHETEUR :
   --------------------------------------------------
   • Sweet spot : véhicules de 5-8 ans, 60-120k km
     Prix moyen dans cette fourchette : 9,948€
     (48 annonces disponibles)
   • Prix médian du marché : 9,990€ → cible < 8,991€ pour une bonne affaire
   • Privilégier les annonces de particuliers si budget serré
   • Vérifier le km/an : < 15 000 km/an = usage normal

   💰 POUR UN VENDEUR :
   --------------------------------------------------
   • Prix médian du marché : 9,990€
   • Positionner légèrement sous le marché pour vendre vite (-5% à -10%)
   • Les véhicules < 129,026 km se vendent mieux
   • Mettre en avant un faible km/an si applicable

   🎯 SEGMENTS DE MARCHÉ :
   --------------------------------------------------
   • Budget (72 annonces) :
     Prix : 3,990€ - 8,800€
     Âge moyen : 9.5 ans | Km moyen : 118,996
   • Milieu de gamme (147 annonces) :
     Prix : 8,900€ - 10,700€
     Âge moyen : 8.5 ans | Km moyen : 122,973
   • Premium (69 annonces) :
     Prix : 10,790€ - 11,000€
     Âge moyen : 8.2 ans | Km moyen : 117,482

======================================================================
💾 EXPORT DES RÉSULTATS EN BASE SQLite
======================================================================
   📌 Run #153 créé
   🔍 Modèle : c4
   📎 288 annonces liées au run
   ✅ Stats descriptives : 5 variables
   ✅ Modèle régression : 2 coefficients (R²=0.098)
   ✅ Référentiel prix : 25 segments
   ✅ Classifications deal : 288 annonces

   💾 Tout exporté dans /home/ubuntu/app/db/lbc.sqlite

══════════════════════════════════════════════════════════════════════
  ✅ ANALYSE TERMINÉE en 14.0 secondes
  📊 288 annonces analysées  (run #153)
  🔍 Modèle           : c4
  💾 Base SQLite      : /home/ubuntu/app/db/lbc.sqlite
  📁 Figures          : /home/ubuntu/app/stats/c4/figures
══════════════════════════════════════════════════════════════════════
Récupération de la page 1/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=scenic&price=min-11000&regdate=2015-max&mileage=min-150000&seats=999999&u_car_brand=RENAULT&page=1
  → 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_scenic_20260325_080542.csv réussi.
Récupération de la page 2/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=scenic&price=min-11000&regdate=2015-max&mileage=min-150000&seats=999999&u_car_brand=RENAULT&page=2
  → 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_scenic_20260325_080542.csv réussi.
Récupération de la page 3/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=scenic&price=min-11000&regdate=2015-max&mileage=min-150000&seats=999999&u_car_brand=RENAULT&page=3
  → 31 annonces récupérées (total en mémoire: 101)
Export de 101 annonces vers /home/ubuntu/app/leboncoin_ads_scenic_20260325_080542.csv réussi.
Récupération de la page 4/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=scenic&price=min-11000&regdate=2015-max&mileage=min-150000&seats=999999&u_car_brand=RENAULT&page=4
Erreur lors de l'appel à l'API: 404 Client Error: Not Found for url: https://piloterr.com/api/v2/leboncoin/search?query=https%3A%2F%2Fwww.leboncoin.fr%2Frecherche%3Fcategory%3D2%26text%3Dscenic%26price%3Dmin-11000%26regdate%3D2015-max%26mileage%3Dmin-150000%26seats%3D999999%26u_car_brand%3DRENAULT%26page%3D4
Récupération de la page 1/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=1
  → 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 2/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=2
  → 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 3/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=3
  → 35 annonces récupérées (total en mémoire: 105)
Export de 105 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 4/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=4
  → 35 annonces récupérées (total en mémoire: 140)
Export de 140 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 5/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=5
  → 35 annonces récupérées (total en mémoire: 175)
Export de 175 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 6/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=6
  → 35 annonces récupérées (total en mémoire: 210)
Export de 210 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 7/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=7
  → 35 annonces récupérées (total en mémoire: 245)
Export de 245 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 8/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=8
  → 35 annonces récupérées (total en mémoire: 280)
Export de 280 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 9/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=9
  → 35 annonces récupérées (total en mémoire: 315)
Export de 315 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 10/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=10
  → 35 annonces récupérées (total en mémoire: 350)
Export de 350 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 11/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=11
  → 35 annonces récupérées (total en mémoire: 385)
Export de 385 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 12/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=12
  → 35 annonces récupérées (total en mémoire: 420)
Export de 420 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 13/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=13
  → 35 annonces récupérées (total en mémoire: 455)
Export de 455 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 14/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=14
  → 35 annonces récupérées (total en mémoire: 490)
Export de 490 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 15/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=15
  → 35 annonces récupérées (total en mémoire: 525)
Export de 525 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 16/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=16
  → 35 annonces récupérées (total en mémoire: 560)
Export de 560 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 17/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=17
  → 35 annonces récupérées (total en mémoire: 595)
Export de 595 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 18/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=18
  → 35 annonces récupérées (total en mémoire: 630)
Export de 630 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 19/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=19
  → 35 annonces récupérées (total en mémoire: 665)
Export de 665 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 20/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=20
  → 35 annonces récupérées (total en mémoire: 700)
Export de 700 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 21/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=21
  → 35 annonces récupérées (total en mémoire: 735)
Export de 735 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 22/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=22
  → 35 annonces récupérées (total en mémoire: 770)
Export de 770 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 23/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=23
  → 35 annonces récupérées (total en mémoire: 805)
Export de 805 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 24/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=24
  → 35 annonces récupérées (total en mémoire: 840)
Export de 840 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 25/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=25
  → 35 annonces récupérées (total en mémoire: 875)
Export de 875 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 26/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=26
  → 35 annonces récupérées (total en mémoire: 910)
Export de 910 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 27/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=27
  → 35 annonces récupérées (total en mémoire: 945)
Export de 945 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 28/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=28
  → 35 annonces récupérées (total en mémoire: 980)
Export de 980 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 29/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=29
  → 35 annonces récupérées (total en mémoire: 1015)
Export de 1015 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 30/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=30
  → 35 annonces récupérées (total en mémoire: 1050)
Export de 1050 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.
Récupération de la page 31/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=31
  → 13 annonces récupérées (total en mémoire: 1063)
Export de 1063 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv réussi.

Terminé : 1063 annonces au total dans /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv
INFO: Model override : 5008
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
  📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════

📂 leboncoin_ads_5008_20260325_080554.csv
   ✅ 1063 lus, 1063 insérés, 0 ignorés, 0 erreurs

────────────────────────────────────────────────────────────
  📊 TOTAL : 1063 lus, 1063 insérés
  💾 Base : /home/ubuntu/app/db/lbc.sqlite
  📌 6908 annonces en base
════════════════════════════════════════════════════════════
INFO: 1049 list_id lus dans le CSV.
INFO: 1072 annonces actives en base pour peugeot 5008.
INFO: 23 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
  CHECK DISPONIBILITÉ
  CSV   : leboncoin_ads_5008_20260325_080554.csv
  Brand : peugeot  |  Modèle : 5008
════════════════════════════════════════════════════════════

  Annonces dans le CSV    : 1049
  Annonces actives en DB  : 1072
  Absentes du crawl       : 23
  Marquées indisponibles  : 23
════════════════════════════════════════════════════════════

  Vérification :
  SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
  🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
  💾 Base SQLite       : /home/ubuntu/app/db/lbc.sqlite
  📁 Dossier figures  : /home/ubuntu/app/stats/5008/figures
  🔍 Modèle filtré    : 5008
  📊 Graphiques       : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
   ✅ 1728 annonces chargées (modèle '5008')

======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================

📌 Nombre total d'annonces : 1728

📋 Premières lignes (colonnes parsées) :
      list_id                                                        subject  price_eur  year_model  mileage_km     fuel    brand model owner_type first_publication_date
0  3105496930                            Peugeot 5008 1.6 HDI 115 ALLURE 7PL       9990        2016      145460   diesel  peugeot  5008        pro    2025-12-03 14:49:00
1  3150966962                  PEUGEOT 5008 1.6 BlueHDi 120ch SS BVM6 Allure      10990        2015      131475   diesel  peugeot  5008        pro    2026-02-25 09:13:36
2  3076705800          PEUGEOT 5008 1.6 HDi 120ch BVM6 Style - SUIVI COMPLET       8990        2015      142500   diesel  peugeot  5008        pro    2025-10-18 09:09:00
3  3035013147                 Peugeot 5008 1.6 HDI 115CH FAP ALLURE 7 PLACES       8990        2015      144500   diesel  peugeot  5008        pro    2025-08-04 18:43:00
4  3138259074  Peugeot 5008 GENERATION-II 1.2 PURETECH 130 ALLURE START-STOP       5990        2016      105000  essence  peugeot  5008        pro    2026-02-02 14:34:28

❓ Valeurs manquantes par colonne clé :
   list_id                        :    0 manquantes (0.0%)
   subject                        :    0 manquantes (0.0%)
   price_eur                      :    0 manquantes (0.0%)
   year_model                     :    0 manquantes (0.0%)
   mileage_km                     :    0 manquantes (0.0%)
   fuel                           :    0 manquantes (0.0%)
   brand                          :    0 manquantes (0.0%)
   model                          :    0 manquantes (0.0%)
   owner_type                     :    0 manquantes (0.0%)
   first_publication_date         :    0 manquantes (0.0%)

📅 Période couverte :
   Première publication : 2024-06-06 10:10:00
   Dernière publication : 2026-03-25 08:00:51
   Durée : 656 jours

👤 Répartition par type de vendeur :
   private         : 1125 (65.1%)
   pro             :  603 (34.9%)

⛽ Répartition par carburant :
   diesel               : 1587 (91.8%)
   essence              :  140 (8.1%)
   hybride              :    1 (0.1%)

🏭 Top 10 marques :
   peugeot              : 1728 (100.0%)

🧮 Création des colonnes calculées...
   ✅ Colonnes ajoutées : age_years, km_per_year, price_per_km

🧹 Nettoyage des données...

   📊 Rapport de nettoyage :
      prix_aberrants            :    2 lignes supprimées
      km_aberrants              :    0 lignes supprimées
      annee_aberrante           :    0 lignes supprimées
      age_negatif               :    0 lignes supprimées
      ─────────────────────────────────────────────
      Total supprimé          :    2
      Restantes               : 1726 / 1728
      Pourcentage conservé    : 99.9%

🔍 Détection des outliers (méthode IQR)...
   price_eur            :    0 outliers (0.0%)
      Bornes IQR : [-506 ; 12,844]
   mileage_km           :   35 outliers (2.0%)
      Bornes IQR : [60,446 ; 350,256]
   age_years            :    1 outliers (0.1%)
      Bornes IQR : [5 ; 21]

   📌 Total d'annonces outliers (au moins 1 variable) : 36 (2.1%)
   ⚠️  Les outliers sont identifiés mais NON supprimés.

======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
   Nombre d'annonces restantes : 1726
   Dont outliers identifiés    : 36
   Annonces non-outliers       : 1690

   Plages de valeurs :
      price_eur            : [       700 ;     11,000]  (moy:      6,261)
      mileage_km           : [         1 ;    410,000]  (moy:    206,559)
      year_model           : [     2,009 ;      2,022]  (moy:      2,013)
      age_years            : [         4 ;         17]  (moy:         13)
      km_per_year          : [         0 ;     53,776]  (moy:     16,261)

   💾 1726 annonces enrichies persistées dans SQLite

🔎 Détection des annonces suspectes...
   ⚠️  19 signaux de suspicion détectés
      km_trop_bas_essence: 1
      km_trop_bas_diesel: 18
   💾 19 signaux persistés dans SQLite

======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================

📊 Tableau récapitulatif (valeurs brutes) :
   Variable  Count          Mean        Median          Std         Min            Q1            Q3           Max         IQR
  price_eur   1726   6260.955968   5990.000000  2322.587208  700.000000   4500.000000   7837.500000  11000.000000  3337.50000
 mileage_km   1726 206559.294322 207500.000000 56868.245623    1.000000 169125.000000 241577.500000 410000.000000 72452.50000
 year_model   1726   2012.971611   2012.000000     2.486789 2009.000000   2011.000000   2015.000000   2022.000000     4.00000
  age_years   1726     13.028389     14.000000     2.486789    4.000000     11.000000     15.000000     17.000000     4.00000
km_per_year   1726  16260.907406  15777.472527  5007.331916    0.111111  13333.333333  18522.058824  53776.166667  5188.72549

📊 Tableau formaté :
   Variable Count     Mean   Median       Std   Min       Q1       Q3      Max     IQR
  price_eur 1,726    6,261    5,990  2,322.59   700    4,500    7,838   11,000   3,338
 mileage_km 1,726  206,559  207,500 56,868.25     1  169,125  241,578  410,000  72,452
 year_model 1,726    2,013    2,012      2.49 2,009    2,011    2,015    2,022       4
  age_years 1,726     13.0     14.0      2.49   4.0     11.0     15.0     17.0     4.0
km_per_year 1,726 16,260.9 15,777.5  5,007.33   0.1 13,333.3 18,522.1 53,776.2 5,188.7

📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------

   📌 price_eur :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Dispersion MODÉRÉE (CV = 37%, σ = 2,323)
      → Étendue : [700 ; 11,000] (IQR = 3,338)

   📌 mileage_km :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Dispersion MODÉRÉE (CV = 28%, σ = 56,868)
      → Étendue : [1 ; 410,000] (IQR = 72,452)

   📌 year_model :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 0%, σ = 2)
      → Étendue : [2,009 ; 2,022] (IQR = 4)

   📌 age_years :
      → Distribution asymétrique GAUCHE (moyenne 13 < médiane 14)
        Quelques valeurs basses tirent la moyenne vers le bas.
      → Faible dispersion (CV = 19%, σ = 2)
      → Étendue : [4 ; 17] (IQR = 4)

   📌 km_per_year :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Dispersion MODÉRÉE (CV = 31%, σ = 5,007)
      → Étendue : [0 ; 53,776] (IQR = 5,189)

======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
2026-03-25 08:07:45,023 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-25 08:07:45,024 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
======================================================================

📊 Prix moyen par année modèle...

   📋 Table : Prix par année modèle
   ---------------------------------------------------------------------------
    Année    Nb   Prix moy   Prix méd   Décote %
   ---------------------------------------------------------------------------
     2009    31      4,509      4,300        N/A
     2010   263      4,502      4,490      +0.2%
     2011   299      4,882      4,990      -8.4%
     2012   284      5,468      5,494     -12.0%
     2013   212      5,882      5,500      -7.6%
     2014   165      6,986      6,990     -18.8%
     2015   144      7,922      7,990     -13.4%
     2016   171      8,057      7,990      -1.7%
     2017    66      9,674     10,000     -20.1%
     2018    48      9,903     10,490      -2.4%
     2019    28     10,465     10,495      -5.7%
     2020    13      9,558      9,990      +8.7%

   📌 Décote annuelle moyenne : -7.4%

📊 Prix moyen par tranche de kilométrage...

   📋 Table : Prix par tranche de km
   ----------------------------------------------------------------------
        Tranche    Nb   Prix moy   Prix méd      Var %
   ----------------------------------------------------------------------
          0-20k    12      5,712      4,775        N/A
         20-50k     7      6,867      5,800     +20.2%
         50-80k     7      9,153      9,450     +33.3%
        80-120k    53      8,663      9,400      -5.4%
       120-160k   253      8,537      8,990      -1.5%
       160-200k   431      7,088      6,990     -17.0%
          200k+   963      5,142      4,990     -27.5%

📊 Prix moyen par âge...

   📋 Table : Prix par âge
   -----------------------------------------------------------------
     Âge    Nb   Prix moy   Décote %
   -----------------------------------------------------------------
       6    13      9,558        N/A
       7    28     10,465      +9.5%
       8    48      9,903      -5.4%
       9    66      9,674      -2.3%
      10   171      8,057     -16.7%
      11   144      7,922      -1.7%
      12   165      6,986     -11.8%
      13   212      5,882     -15.8%
      14   284      5,468      -7.0%
      15   299      4,882     -10.7%
      16   263      4,502      -7.8%
      17    31      4,509      +0.2%

   📌 La décote ralentit significativement à 9 ans

📊 Prix par type de carburant...

   📋 Table : Prix par carburant
   ----------------------------------------------------------------------
         Carburant    Nb   Prix moy   Prix méd
   ----------------------------------------------------------------------
            diesel  1586      6,121      5,900
           essence   139      7,831      8,800

   📌 Carburant avec prix médian le plus élevé : essence (8,800€)
   📌 Carburant avec prix médian le plus bas : diesel (5,900€)

📊 Prix par type de vendeur...

   📋 Table : Prix par type de vendeur
   ------------------------------------------------------------
         Type    Nb   Prix moy   Prix méd
   ------------------------------------------------------------
      private  1124      5,838      5,500
          pro   602      7,050      6,490

   📌 Test Mann-Whitney (médiane) : p = 0.0000
   ✅ Différence SIGNIFICATIVE (p < 0.05)
   📌 Écart médian Pro - Particulier : +990€

📊 Prix par modèle de véhicule...
   ℹ️ Un seul modèle détecté (5008) — comparaison non applicable

   ✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/5008/figures

======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================

📊 Analyse des seuils de kilométrage...

   📋 Taux de décote par tranche de 10k km :
   --------------------------------------------------
        20k : décote  -18.4% (n=  3)
        30k : décote   15.1% (n=  3) ⚡
        50k : décote  -62.9% (n=  2)
        60k : décote  -13.1% (n=  2)
        70k : décote   26.8% (n=  3) ⚡
        80k : décote  -12.1% (n=  4)
        90k : décote   -0.7% (n= 11)
       100k : décote    0.5% (n= 15)
       110k : décote    4.7% (n= 23)
       120k : décote  -10.9% (n= 41)
       130k : décote   -0.7% (n= 52)
       140k : décote   12.6% (n= 75) ⚡
       150k : décote    3.8% (n= 85)
       160k : décote    0.9% (n=104)
       170k : décote    5.2% (n=113)
       180k : décote   10.6% (n=108) ⚡
       190k : décote    2.5% (n=106)
       200k : décote    4.1% (n=123)
       210k : décote    2.7% (n=127)
       220k : décote    6.1% (n=133)
       230k : décote    6.4% (n=113)
       240k : décote   -1.3% (n=119)
       250k : décote    8.2% (n= 70)
       260k : décote   10.0% (n= 69) ⚡
       270k : décote    9.0% (n= 52)
       280k : décote  -18.4% (n= 34)
       290k : décote   27.2% (n= 30) ⚡
      300k+ : décote    6.6% (n= 93)

   📌 Seuils où la décote s'accélère (> 8%) :
      → 30k km : 15.1%
      → 70k km : 26.8%
      → 140k km : 12.6%
      → 180k km : 10.6%
      → 250k km : 8.2%
      → 260k km : 10.0%
      → 270k km : 9.0%
      → 290k km : 27.2%
   ✅ Sauvegardé : /home/ubuntu/app/stats/5008/figures/seuils_km.png

📊 Analyse des seuils d'âge...

   📋 Taux de décote par année d'âge :
   ---------------------------------------------
     7 ans : décote   -9.5% (n= 28) 🐢 LENTE
     8 ans : décote    5.4% (n= 48)
     9 ans : décote    2.3% (n= 66) 🐢 LENTE
    10 ans : décote   16.7% (n=171) ⚡ FORTE
    11 ans : décote    1.7% (n=144) 🐢 LENTE
    12 ans : décote   11.8% (n=165)
    13 ans : décote   15.8% (n=212) ⚡ FORTE
    14 ans : décote    7.0% (n=284)
    15 ans : décote   10.7% (n=299)
    16 ans : décote    7.8% (n=263)
    17 ans : décote   -0.2% (n= 31) 🐢 LENTE

   📌 Décote rapide (> 10% par an) :
      → 10 ans : 16.7%
      → 12 ans : 11.8%
      → 13 ans : 15.8%
      → 15 ans : 10.7%

   📌 Décote lente (< 5% par an) :
      → 7 ans : -9.5%
      → 9 ans : 2.3%
      → 11 ans : 1.7%
      → 17 ans : -0.2%
   ✅ Sauvegardé : /home/ubuntu/app/stats/5008/figures/seuils_age.png

======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================

📊 Construction du modèle de prix attendu...
   📌 Modèle : prix = -524.25 × âge + -0.0172 × km + 16,649
   📌 R² = 0.654
📊 Calcul des écarts de prix...

   📋 Classification des annonces :
      🌟 Excellente affaire        :  265 ( 15.4%)
      👍 Bonne affaire             :  246 ( 14.3%)
      📊 Prix marché               :  675 ( 39.1%)
      💰 Cher                      :  230 ( 13.3%)
      🔴 Très cher                 :  310 ( 18.0%)
📊 Graphique : Distribution des écarts de prix...
   ✅ Sauvegardé : /home/ubuntu/app/stats/5008/figures/ecarts_prix.png

   🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
   ====================================================================================================
    1. [3163345953] Peugeot 5008 1.6, 120cv B.hdi
       Prix:    1,000€ | Attendu:    5,707€ | Écart:  -82.5% | Année: 2014 | Km: 270,000
    2. [3166827215] Voiture entiere avec moteur qui claque
       Prix:      900€ | Attendu:    4,437€ | Écart:  -79.7% | Année: 2010 | Km: 222,000
    3. [3098662962] Peugeot 5008 hdi
       Prix:    1,900€ | Attendu:    8,721€ | Écart:  -78.2% | Année: 2016 | Km: 155,900
    4. [3163979849] Opel Corsa 2009 232000km
       Prix:    1,900€ | Attendu:    8,459€ | Écart:  -77.5% | Année: 2018 | Km: 232,000
    5. [3161987772] 5008 7 places
       Prix:    1,000€ | Attendu:    4,135€ | Écart:  -75.8% | Année: 2011 | Km: 270,000
    6. [3154103448] Vend Peugeot 5008 dans l etat
       Prix:    1,000€ | Attendu:    4,041€ | Écart:  -75.3% | Année: 2010 | Km: 245,000
    7. [3145452074] Peugeot 5008
2026-03-25 08:08:06,161 [INFO] httpx — HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
2026-03-25 08:08:06,168 [INFO] services.llm_service — Batch 0-8: 8 résultats extraits (modèle=gpt-5-nano)
2026-03-25 08:08:06,496 [INFO] stats.exporters.to_db —   stats_descriptives : 5 lignes insérées
2026-03-25 08:08:06,500 [INFO] stats.exporters.to_db —   modele_regression : 2 lignes insérées
2026-03-25 08:08:06,639 [INFO] stats.exporters.to_db —   referentiel_prix : 67 segments insérés
2026-03-25 08:08:06,750 [INFO] stats.exporters.to_db —   ads.deal_columns : 1726 annonces mises à jour
       Prix:    1,000€ | Attendu:    3,677€ | Écart:  -72.8% | Année: 2012 | Km: 327,000
    8. [3151017355] Vends Peugeot 5008 a spécialiste
       Prix:    1,500€ | Attendu:    5,348€ | Écart:  -72.0% | Année: 2012 | Km: 230,000
    9. [3154289763] 5008 essence sur l'état
       Prix:    1,700€ | Attendu:    6,035€ | Écart:  -71.8% | Année: 2011 | Km: 159,660
   10. [3162529124] Peugeot 5008
       Prix:    1,500€ | Attendu:    5,114€ | Écart:  -70.7% | Année: 2013 | Km: 274,000

   🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
   ====================================================================================================
    1. [3146000438] 5008 hdi
       Prix:    7,500€ | Attendu:    3,706€ | Écart: +102.4% | Année: 2009 | Km: 234,000
    2. [3152738100] Peugeot 5008 2l hdi 150cv
       Prix:    8,000€ | Attendu:    4,341€ | Écart:  +84.3% | Année: 2010 | Km: 227,600
    3. [3126969597] Peugeot 5008
       Prix:    4,200€ | Attendu:    2,311€ | Écart:  +81.7% | Année: 2009 | Km: 315,000
    4. [3157618424] Peugeot 5008
       Prix:    3,500€ | Attendu:    1,974€ | Écart:  +77.3% | Année: 2010 | Km: 365,000
    5. [3165438627] Vend peugeot 5008 1l6 hdi année 2009 
Caroserie 31
       Prix:    4,000€ | Attendu:    2,259€ | Écart:  +77.0% | Année: 2009 | Km: 318,000
    6. [3126598226] Peugeot 5008 1.6 hdi fap confort pack 7pl
       Prix:    7,990€ | Attendu:    4,532€ | Écart:  +76.3% | Année: 2010 | Km: 216,500
    7. [3155918327] Peugeot 5008
       Prix:    6,500€ | Attendu:    3,706€ | Écart:  +75.4% | Année: 2009 | Km: 234,000
    8. [3147840406] Peugeot 5008 1.6 HDi Premium 7Places
       Prix:    6,990€ | Attendu:    4,024€ | Écart:  +73.7% | Année: 2010 | Km: 246,000
    9. [3159646980] PEUGEOT 5008 2.0 HDI 163cv
       Prix:    7,500€ | Attendu:    4,400€ | Écart:  +70.4% | Année: 2012 | Km: 285,000
   10. [3129737643] 🚗 Peugeot 5008 1.6 HDi 110 Premium – 7 places
       Prix:   10,000€ | Attendu:    5,884€ | Écart:  +70.0% | Année: 2010 | Km: 138,000

🔎 Détection des prix suspects (seuil: -40%)...
   ⚠️  84 annonces avec prix suspect
   💾 84 signaux prix persistés dans SQLite

======================================================================
  M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
  Annonces sans évaluation LLM : 8
  Résultats extraits : 8
  Évaluations insérées : 8

======================================================================
📊 TABLEAU DE BORD RÉCAPITULATIF
======================================================================

   ┌──────────────────────────────────────────────────┐
   │ Nombre total d'annonces      │              1,726 │
   │ Prix moyen                   │            6,261 € │
   │ Prix médian                  │            5,990 € │
   │ Km moyen                     │         206,559 km │
   │ Km médian                    │         207,500 km │
   │ Âge moyen                    │           13.0 ans │
   │ Âge médian                   │           14.0 ans │
   │ Km/an moyen                  │       16,261 km/an │
   └──────────────────────────────────────────────────┘

   ✅ Sauvegardé : /home/ubuntu/app/stats/5008/figures/dashboard_kpis.png

======================================================================
💡 INSIGHTS PRINCIPAUX
======================================================================

   🎯 Âge optimal d'achat : ~17 ans (meilleur rapport prix/ancienneté)
   ⚡ Seuil km critique : la décote s'accélère le plus autour de (40000, 60000]
   ⛽ Carburant tenant le mieux sa valeur : essence (prix/âge le plus élevé)
   👔 Les pros vendent 18.0% plus cher que les particuliers (médiane)
   🔄 Km/an médian : 15,777 km → Profil dominant : 15-25k (Intensif)
   🏭 Top 3 marques = 100% du marché : peugeot (1726)

======================================================================
💡 RECOMMANDATIONS
======================================================================

   🛒 POUR UN ACHETEUR :
   --------------------------------------------------
   • Sweet spot : véhicules de 5-8 ans, 60-120k km
     Prix moyen dans cette fourchette : 9,858€
     (8 annonces disponibles)
   • Prix médian du marché : 5,990€ → cible < 5,391€ pour une bonne affaire
   • Privilégier les annonces de particuliers si budget serré
   • Vérifier le km/an : < 15 000 km/an = usage normal

   💰 POUR UN VENDEUR :
   --------------------------------------------------
   • Prix médian du marché : 5,990€
   • Positionner légèrement sous le marché pour vendre vite (-5% à -10%)
   • Les véhicules < 207,500 km se vendent mieux
   • Mettre en avant un faible km/an si applicable

   🎯 SEGMENTS DE MARCHÉ :
   --------------------------------------------------
   • Budget (440 annonces) :
     Prix : 700€ - 4,500€
     Âge moyen : 14.8 ans | Km moyen : 255,597
   • Milieu de gamme (854 annonces) :
     Prix : 4,590€ - 7,800€
     Âge moyen : 13.4 ans | Km moyen : 204,533
   • Premium (432 annonces) :
     Prix : 7,850€ - 11,000€
     Âge moyen : 10.4 ans | Km moyen : 160,620

======================================================================
💾 EXPORT DES RÉSULTATS EN BASE SQLite
======================================================================
   📌 Run #154 créé
   🔍 Modèle : 5008
   📎 1726 annonces liées au run
   ✅ Stats descriptives : 5 variables
   ✅ Modèle régression : 2 coefficients (R²=0.654)
   ✅ Référentiel prix : 67 segments
   ✅ Classifications deal : 1726 annonces

   💾 Tout exporté dans /home/ubuntu/app/db/lbc.sqlite

══════════════════════════════════════════════════════════════════════
  ✅ ANALYSE TERMINÉE en 24.6 secondes
  📊 1726 annonces analysées  (run #154)
  🔍 Modèle           : 5008
  💾 Base SQLite      : /home/ubuntu/app/db/lbc.sqlite
  📁 Figures          : /home/ubuntu/app/stats/5008/figures
══════════════════════════════════════════════════════════════════════
Récupération de la page 1/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=1
  → 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 2/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=2
  → 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 3/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=3
  → 35 annonces récupérées (total en mémoire: 105)
Export de 105 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 4/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=4
  → 35 annonces récupérées (total en mémoire: 140)
Export de 140 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 5/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=5
  → 35 annonces récupérées (total en mémoire: 175)
Export de 175 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 6/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=6
  → 35 annonces récupérées (total en mémoire: 210)
Export de 210 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 7/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=7
  → 35 annonces récupérées (total en mémoire: 245)
Export de 245 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 8/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=8
  → 35 annonces récupérées (total en mémoire: 280)
Export de 280 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 9/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=9
  → 35 annonces récupérées (total en mémoire: 315)
Export de 315 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 10/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=10
  → 35 annonces récupérées (total en mémoire: 350)
Export de 350 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 11/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=11
  → 35 annonces récupérées (total en mémoire: 385)
Export de 385 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 12/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=12
  → 35 annonces récupérées (total en mémoire: 420)
Export de 420 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 13/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=13
  → 35 annonces récupérées (total en mémoire: 455)
Export de 455 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 14/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=14
  → 35 annonces récupérées (total en mémoire: 490)
Export de 490 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 15/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=15
  → 35 annonces récupérées (total en mémoire: 525)
Export de 525 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 16/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=16
  → 35 annonces récupérées (total en mémoire: 560)
Export de 560 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 17/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=17
  → 35 annonces récupérées (total en mémoire: 595)
Export de 595 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 18/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=18
  → 35 annonces récupérées (total en mémoire: 630)
Export de 630 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 19/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=19
  → 35 annonces récupérées (total en mémoire: 665)
Export de 665 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 20/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=20
  → 35 annonces récupérées (total en mémoire: 700)
Export de 700 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 21/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=21
  → 35 annonces récupérées (total en mémoire: 735)
Export de 735 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 22/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=22
  → 35 annonces récupérées (total en mémoire: 770)
Export de 770 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 23/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=23
  → 35 annonces récupérées (total en mémoire: 805)
Export de 805 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 24/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=24
  → 35 annonces récupérées (total en mémoire: 840)
Export de 840 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 25/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=25
  → 35 annonces récupérées (total en mémoire: 875)
Export de 875 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 26/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=26
  → 35 annonces récupérées (total en mémoire: 910)
Export de 910 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 27/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=27
  → 35 annonces récupérées (total en mémoire: 945)
Export de 945 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 28/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=28
  → 35 annonces récupérées (total en mémoire: 980)
Export de 980 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 29/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=29
  → 35 annonces récupérées (total en mémoire: 1015)
Export de 1015 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 30/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=30
  → 35 annonces récupérées (total en mémoire: 1050)
Export de 1050 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 31/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=31
  → 35 annonces récupérées (total en mémoire: 1085)
Export de 1085 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 32/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=32
  → 35 annonces récupérées (total en mémoire: 1120)
Export de 1120 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 33/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=33
  → 35 annonces récupérées (total en mémoire: 1155)
Export de 1155 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 34/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=34
  → 35 annonces récupérées (total en mémoire: 1190)
Export de 1190 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 35/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=35
  → 35 annonces récupérées (total en mémoire: 1225)
Export de 1225 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 36/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=36
  → 35 annonces récupérées (total en mémoire: 1260)
Export de 1260 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 37/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=37
  → 35 annonces récupérées (total en mémoire: 1295)
Export de 1295 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 38/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=38
  → 35 annonces récupérées (total en mémoire: 1330)
Export de 1330 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 39/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=39
  → 35 annonces récupérées (total en mémoire: 1365)
Export de 1365 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 40/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=40
  → 35 annonces récupérées (total en mémoire: 1400)
Export de 1400 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 41/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=41
  → 35 annonces récupérées (total en mémoire: 1435)
Export de 1435 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 42/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=42
  → 35 annonces récupérées (total en mémoire: 1470)
Export de 1470 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 43/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=43
  → 20 annonces récupérées (total en mémoire: 1490)
Export de 1490 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260325_080807.csv réussi.
Récupération de la page 44/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000&regdate=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=44
Erreur lors de l'appel à l'API: 404 Client Error: Not Found for url: https://piloterr.com/api/v2/leboncoin/search?query=https%3A%2F%2Fwww.leboncoin.fr%2Frecherche%3Fcategory%3D2%26text%3Dford%2Bfiesta%26price%3D3000-10000%26regdate%3D2014-max%26u_car_brand%3DFORD%26fuel%3D1%252C2%26u_car_model%3DFORD_Fiesta%26page%3D44
Récupération de la page 1/3 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=nv200&u_utility_brand=NISSAN&u_utility_model=NISSAN_NV200&fuel=2&page=1
  → 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_nv200_20260325_081032.csv réussi.
Récupération de la page 2/3 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=nv200&u_utility_brand=NISSAN&u_utility_model=NISSAN_NV200&fuel=2&page=2
  → 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_nv200_20260325_081032.csv réussi.
Récupération de la page 3/3 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=nv200&u_utility_brand=NISSAN&u_utility_model=NISSAN_NV200&fuel=2&page=3
  → 30 annonces récupérées (total en mémoire: 100)
Export de 100 annonces vers /home/ubuntu/app/leboncoin_ads_nv200_20260325_081032.csv réussi.

Terminé : 100 annonces au total dans /home/ubuntu/app/leboncoin_ads_nv200_20260325_081032.csv
INFO: Model override : nv200
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
  📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════

📂 leboncoin_ads_nv200_20260325_081032.csv
   ✅ 100 lus, 100 insérés, 0 ignorés, 0 erreurs

────────────────────────────────────────────────────────────
  📊 TOTAL : 100 lus, 100 insérés
  💾 Base : /home/ubuntu/app/db/lbc.sqlite
  📌 6908 annonces en base
════════════════════════════════════════════════════════════
INFO: 100 list_id lus dans le CSV.
INFO: 101 annonces actives en base pour nissan nv200.
INFO: 1 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
  CHECK DISPONIBILITÉ
  CSV   : leboncoin_ads_nv200_20260325_081032.csv
  Brand : nissan  |  Modèle : nv200
════════════════════════════════════════════════════════════

  Annonces dans le CSV    : 100
  Annonces actives en DB  : 101
  Absentes du crawl       : 1
  Marquées indisponibles  : 1
════════════════════════════════════════════════════════════

  Vérification :
  SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
  🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
  💾 Base SQLite       : /home/ubuntu/app/db/lbc.sqlite
  📁 Dossier figures  : /home/ubuntu/app/stats/nv200/figures
  🔍 Modèle filtré    : nv200
  📊 Graphiques       : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
   ✅ 191 annonces chargées (modèle 'nv200')

======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================

📌 Nombre total d'annonces : 191

📋 Premières lignes (colonnes parsées) :
      list_id                                                  subject  price_eur  year_model  mileage_km    fuel   brand  model owner_type first_publication_date
0  2859214095                            Nissan NV200 N CONNNECTA 90CV      12990        2017       94500  diesel  nissan  nv200        pro    2024-10-05 17:02:00
1  3139983877                        Nissan NV200 1,5L dCi 90ch Acenta      11990        2013      106800  diesel  nissan  nv200        pro    2026-02-05 16:52:21
2  3083668151                    Nissan NV200 1.5 DCI 90CH VAN AMENAGE      14999        2014      121041  diesel  nissan  nv200        pro    2025-10-29 21:10:00
3  3131716141                      Nissan NV200 1.5 DCI 110 N-CONNECTA       9890        2016      194000  diesel  nissan  nv200        pro    2026-01-21 20:45:17
4  3131492774  Nissan NV200 Fourgon 1.5 dCi 110cv 1ère Main N-Connecta       8990        2017      187000  diesel  nissan  nv200        pro    2026-01-21 14:43:24

❓ Valeurs manquantes par colonne clé :
   list_id                        :    0 manquantes (0.0%)
   subject                        :    0 manquantes (0.0%)
   price_eur                      :    0 manquantes (0.0%)
   year_model                     :    0 manquantes (0.0%)
   mileage_km                     :    0 manquantes (0.0%)
   fuel                           :    0 manquantes (0.0%)
   brand                          :    0 manquantes (0.0%)
   model                          :    0 manquantes (0.0%)
   owner_type                     :    0 manquantes (0.0%)
   first_publication_date         :    0 manquantes (0.0%)

📅 Période couverte :
   Première publication : 2024-09-27 22:07:00
   Dernière publication : 2026-03-24 19:52:20
   Durée : 542 jours

👤 Répartition par type de vendeur :
   private         :  133 (69.6%)
   pro             :   58 (30.4%)

⛽ Répartition par carburant :
   diesel               :  191 (100.0%)

🏭 Top 10 marques :
   nissan               :  191 (100.0%)

🧮 Création des colonnes calculées...
   ✅ Colonnes ajoutées : age_years, km_per_year, price_per_km

🧹 Nettoyage des données...

   📊 Rapport de nettoyage :
      prix_aberrants            :    0 lignes supprimées
      km_aberrants              :    0 lignes supprimées
      annee_aberrante           :    0 lignes supprimées
      age_negatif               :    0 lignes supprimées
      ─────────────────────────────────────────────
      Total supprimé          :    0
      Restantes               :  191 / 191
      Pourcentage conservé    : 100.0%

🔍 Détection des outliers (méthode IQR)...
   price_eur            :    1 outliers (0.5%)
      Bornes IQR : [-2,735 ; 19,225]
   mileage_km           :    1 outliers (0.5%)
      Bornes IQR : [-39,123 ; 365,521]
   age_years            :    0 outliers (0.0%)
      Bornes IQR : [3 ; 19]

   📌 Total d'annonces outliers (au moins 1 variable) : 2 (1.0%)
   ⚠️  Les outliers sont identifiés mais NON supprimés.

======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
   Nombre d'annonces restantes : 191
   Dont outliers identifiés    : 2
   Annonces non-outliers       : 189

   Plages de valeurs :
      price_eur            : [     2,000 ;     19,990]  (moy:      8,582)
      mileage_km           : [         1 ;    420,000]  (moy:    164,612)
      year_model           : [     2,009 ;      2,019]  (moy:      2,015)
      age_years            : [         7 ;         17]  (moy:         11)
      km_per_year          : [         0 ;     30,000]  (moy:     14,820)

   💾 191 annonces enrichies persistées dans SQLite

🔎 Détection des annonces suspectes...
   ⚠️  5 signaux de suspicion détectés
      km_trop_bas_diesel: 5
   💾 5 signaux persistés dans SQLite

======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================

📊 Tableau récapitulatif (valeurs brutes) :
   Variable  Count          Mean        Median          Std         Min            Q1            Q3      Max           IQR
  price_eur    191   8582.424084   8000.000000  3695.386045 2000.000000   5500.000000  10990.000000  19990.0   5490.000000
 mileage_km    191 164611.832461 153000.000000 70530.213065    1.000000 112618.500000 213779.500000 420000.0 101161.000000
 year_model    191   2014.748691   2015.000000     2.710542 2009.000000   2013.000000   2017.000000   2019.0      4.000000
  age_years    191     11.251309     11.000000     2.710542    7.000000      9.000000     13.000000     17.0      4.000000
km_per_year    191  14820.254536  13533.333333  5902.879931    0.066667  10352.832386  18478.644231  30000.0   8125.811844

📊 Tableau formaté :
   Variable Count     Mean   Median       Std   Min       Q1       Q3      Max     IQR
  price_eur   191    8,582    8,000  3,695.39 2,000    5,500   10,990   19,990   5,490
 mileage_km   191  164,612  153,000 70,530.21     1  112,618  213,780  420,000 101,161
 year_model   191    2,015    2,015      2.71 2,009    2,013    2,017    2,019       4
  age_years   191     11.3     11.0      2.71   7.0      9.0     13.0     17.0     4.0
km_per_year   191 14,820.3 13,533.3  5,902.88   0.1 10,352.8 18,478.6 30,000.0 8,125.8

📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------

   📌 price_eur :
      → Distribution asymétrique DROITE (moyenne 8,582 > médiane 8,000)
        Quelques valeurs élevées tirent la moyenne vers le haut.
      → Dispersion MODÉRÉE (CV = 43%, σ = 3,695)
      → Étendue : [2,000 ; 19,990] (IQR = 5,490)

   📌 mileage_km :
      → Distribution asymétrique DROITE (moyenne 164,612 > médiane 153,000)
        Quelques valeurs élevées tirent la moyenne vers le haut.
      → Dispersion MODÉRÉE (CV = 43%, σ = 70,530)
      → Étendue : [1 ; 420,000] (IQR = 101,161)

   📌 year_model :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 0%, σ = 3)
      → Étendue : [2,009 ; 2,019] (IQR = 4)

   📌 age_years :
      → Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
      → Faible dispersion (CV = 24%, σ = 3)
      → Étendue : [7 ; 17] (IQR = 4)

   📌 km_per_year :
      → Distribution asymétrique DROITE (moyenne 14,820 > médiane 13,533)
        Quelques valeurs élevées tirent la moyenne vers le haut.
      → Dispersion MODÉRÉE (CV = 40%, σ = 5,903)
      → Étendue : [0 ; 30,000] (IQR = 8,126)

======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
2026-03-25 08:10:43,134 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-25 08:10:43,135 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
======================================================================

📊 Prix moyen par année modèle...

   📋 Table : Prix par année modèle
   ---------------------------------------------------------------------------
    Année    Nb   Prix moy   Prix méd   Décote %
   ---------------------------------------------------------------------------
     2009     2      3,600      3,600        N/A
     2010     9      4,764      4,200     -32.3%
     2011    19      5,121      4,900      -7.5%
     2012    14      6,616      5,595     -29.2%
     2013    24      7,259      7,690      -9.7%
     2014    24      8,824      8,740     -21.6%
     2015    13      8,429      9,000      +4.5%
     2016    26      8,906      8,000      -5.7%
     2017    22     10,629      9,895     -19.3%
     2018    23     11,722     12,000     -10.3%
     2019    15     11,246     10,990      +4.1%

   📌 Décote annuelle moyenne : -12.7%

📊 Prix moyen par tranche de kilométrage...

   📋 Table : Prix par tranche de km
   ----------------------------------------------------------------------
        Tranche    Nb   Prix moy   Prix méd      Var %
   ----------------------------------------------------------------------
          0-20k     1      2,000      2,000        N/A
         20-50k     5     13,656     12,800    +582.8%
         50-80k    11     13,577     13,000      -0.6%
        80-120k    38     11,555     10,940     -14.9%
       120-160k    46      9,656      9,500     -16.4%
       160-200k    33      6,849      6,750     -29.1%
          200k+    57      5,445      5,200     -20.5%

📊 Prix moyen par âge...

   📋 Table : Prix par âge
   -----------------------------------------------------------------
     Âge    Nb   Prix moy   Décote %
   -----------------------------------------------------------------
       7    15     11,246        N/A
       8    23     11,722      +4.2%
       9    22     10,629      -9.3%
      10    26      8,906     -16.2%
      11    13      8,429      -5.4%
      12    24      8,824      +4.7%
      13    24      7,259     -17.7%
      14    14      6,616      -8.9%
      15    19      5,121     -22.6%
      16     9      4,764      -7.0%
      17     2      3,600     -24.4%

   📌 La décote ralentit significativement à 11 ans

📊 Prix par type de carburant...

   📋 Table : Prix par carburant
   ----------------------------------------------------------------------
         Carburant    Nb   Prix moy   Prix méd
   ----------------------------------------------------------------------
            diesel   191      8,582      8,000

📊 Prix par type de vendeur...

   📋 Table : Prix par type de vendeur
   ------------------------------------------------------------
         Type    Nb   Prix moy   Prix méd
   ------------------------------------------------------------
      private   133      8,009      7,500
          pro    58      9,897      9,935

   📌 Test Mann-Whitney (médiane) : p = 0.0006
   ✅ Différence SIGNIFICATIVE (p < 0.05)
   📌 Écart médian Pro - Particulier : +2,435€

📊 Prix par modèle de véhicule...
   ℹ️ Un seul modèle détecté (nv200) — comparaison non applicable

   ✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/nv200/figures

======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================

📊 Analyse des seuils de kilométrage...

   📋 Taux de décote par tranche de 10k km :
   --------------------------------------------------
        50k : décote  -11.8% (n=  3)
        60k : décote   15.9% (n=  2) ⚡
        70k : décote    1.3% (n=  6)
        80k : décote    4.6% (n=  9)
        90k : décote   -0.2% (n= 10)
       100k : décote    5.9% (n=  8)
       110k : décote   10.4% (n= 11) ⚡
       120k : décote  -14.4% (n= 11)
       130k : décote   12.1% (n= 13) ⚡
       140k : décote   14.7% (n= 13) ⚡
       150k : décote   20.3% (n=  9) ⚡
       160k : décote  -13.9% (n=  6)
       170k : décote   29.5% (n=  8) ⚡
       180k : décote  -12.2% (n=  6)
       190k : décote  -13.8% (n= 13)
       200k : décote   -2.1% (n=  5)
       210k : décote   21.0% (n=  7) ⚡
       220k : décote    0.8% (n=  8)
       230k : décote   -0.4% (n=  7)
       240k : décote   -3.3% (n=  9)
       250k : décote   24.4% (n=  5) ⚡
       260k : décote   15.2% (n=  2) ⚡
       290k : décote  -21.6% (n=  6)
      300k+ : décote   15.3% (n=  6) ⚡

   📌 Seuils où la décote s'accélère (> 8%) :
      → 60k km : 15.9%
      → 110k km : 10.4%
      → 130k km : 12.1%
      → 140k km : 14.7%
      → 150k km : 20.3%
      → 170k km : 29.5%
      → 210k km : 21.0%
      → 250k km : 24.4%
      → 260k km : 15.2%
      → 300k+ km : 15.3%
   ✅ Sauvegardé : /home/ubuntu/app/stats/nv200/figures/seuils_km.png

📊 Analyse des seuils d'âge...

   📋 Taux de décote par année d'âge :
   ---------------------------------------------
     8 ans : décote   -4.2% (n= 23) 🐢 LENTE
     9 ans : décote    9.3% (n= 22)
    10 ans : décote   16.2% (n= 26) ⚡ FORTE
    11 ans : décote    5.4% (n= 13)
    12 ans : décote   -4.7% (n= 24) 🐢 LENTE
    13 ans : décote   17.7% (n= 24) ⚡ FORTE
    14 ans : décote    8.9% (n= 14)
    15 ans : décote   22.6% (n= 19) ⚡ FORTE
    16 ans : décote    7.0% (n=  9)
    17 ans : décote   24.4% (n=  2) ⚡ FORTE

   📌 Décote rapide (> 10% par an) :
      → 10 ans : 16.2%
      → 13 ans : 17.7%
      → 15 ans : 22.6%
      → 17 ans : 24.4%

   📌 Décote lente (< 5% par an) :
      → 8 ans : -4.2%
      → 12 ans : -4.7%
   ✅ Sauvegardé : /home/ubuntu/app/stats/nv200/figures/seuils_age.png

======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================

📊 Construction du modèle de prix attendu...
   📌 Modèle : prix = -458.94 × âge + -0.0299 × km + 18,660
   📌 R² = 0.604
📊 Calcul des écarts de prix...

   📋 Classification des annonces :
      🌟 Excellente affaire        :   36 ( 18.9%)
      👍 Bonne affaire             :   35 ( 18.4%)
      📊 Prix marché               :   65 ( 34.2%)
      💰 Cher                      :   24 ( 12.6%)
      🔴 Très cher                 :   30 ( 15.8%)
📊 Graphique : Distribution des écarts de prix...
   ✅ Sauvegardé : /home/ubuntu/app/stats/nv200/figures/ecarts_prix.png

   🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
   ====================================================================================================
    1. [3138843536] Vehicule camionnette nissan nv200
       Prix:    2,000€ | Attendu:   11,776€ | Écart:  -83.0% | Année: 2011 | Km: 1
    2. [3159812831] Vend utilitaires nv200 nissan
       Prix:    2,000€ | Attendu:    6,701€ | Écart:  -70.2% | Année: 2011 | Km: 170,000
    3. [3160668277] Nissan nv 200
       Prix:    3,000€ | Attendu:    7,082€ | Écart:  -57.6% | Année: 2013 | Km: 188,000
    4. [3164906877] Nissan
       Prix:    3,500€ | Attendu:    6,608€ | Écart:  -47.0% | Année: 2016 | Km: 250,000
    5. [3109648143] Nissan nv200 1.5 dci turbo
       Prix:    3,990€ | Attendu:    6,981€ | Écart:  -42.8% | Année: 2012 | Km: 176,000
    6. [3154995725] Nissan NV200 Fourgon 1.5 DCi 110ch BVM5 Optima - 2
       Prix:    4,000€ | Attendu:    6,768€ | Écart:  -40.9% | Année: 2014 | Km: 213,880
    7. [3116605709] Nissan NV200
       Prix:    4,500€ | Attendu:    7,597€ | Écart:  -40.8% | Année: 2011 | Km: 140,000
    8. [3127367839] Nissan NV200 1.5 DCI
       Prix:    5,490€ | Attendu:    8,797€ | Écart:  -37.6% | Année: 2014 | Km: 145,899
    9. [3142568361] Nissan nv 200 1.5 90ch
       Prix:    5,200€ | Attendu:    8,309€ | Écart:  -37.4% | Année: 2016 | Km: 193,000
   10. [3167556865] Utilitaire camionnette
2026-03-25 08:10:44,250 [INFO] stats.exporters.to_db —   stats_descriptives : 5 lignes insérées
2026-03-25 08:10:44,254 [INFO] stats.exporters.to_db —   modele_regression : 2 lignes insérées
2026-03-25 08:10:44,346 [INFO] stats.exporters.to_db —   referentiel_prix : 45 segments insérés
2026-03-25 08:10:44,363 [INFO] stats.exporters.to_db —   ads.deal_columns : 191 annonces mises à jour
       Prix:    4,700€ | Attendu:    7,209€ | Écart:  -34.8% | Année: 2011 | Km: 153,000

   🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
   ====================================================================================================
    1. [3156635875] Nissan NV200
       Prix:    3,500€ | Attendu:      540€ | Écart: +548.0% | Année: 2010 | Km: 361,000
    2. [3154023820] Camion
       Prix:    3,500€ | Attendu:      719€ | Écart: +386.6% | Année: 2010 | Km: 355,000
    3. [3153372541] Nissan nv 200
       Prix:   10,500€ | Attendu:    5,529€ | Écart:  +89.9% | Année: 2013 | Km: 240,000
    4. [3114600758] Van
       Prix:   18,500€ | Attendu:   10,227€ | Écart:  +80.9% | Année: 2014 | Km: 98,000
    5. [3156516616] 🚐 Nissan NV200 aménagé – Prêt à voyager
       Prix:    9,300€ | Attendu:    5,716€ | Écart:  +62.7% | Année: 2011 | Km: 203,000
    6. [3158536730] Véhicule aménagé
       Prix:   13,500€ | Attendu:    8,354€ | Écart:  +61.6% | Année: 2012 | Km: 130,000
    7. [3083668151] Nissan NV200 1.5 DCI 90CH VAN AMENAGE
       Prix:   14,999€ | Attendu:    9,540€ | Écart:  +57.2% | Année: 2014 | Km: 121,041
    8. [3163982347] Utilitaire aménagé Van NV200 2016 84000 km
       Prix:   17,900€ | Attendu:   11,563€ | Écart:  +54.8% | Année: 2016 | Km: 84,000
    9. [3155364135] Utilitaire Van Nissan NV200 2016
       Prix:   17,900€ | Attendu:   11,593€ | Écart:  +54.4% | Année: 2016 | Km: 83,000
   10. [3150255673] Van aménagé Nissan NV200
       Prix:    8,500€ | Attendu:    5,585€ | Écart:  +52.2% | Année: 2010 | Km: 192,000

🔎 Détection des prix suspects (seuil: -40%)...
   ⚠️  7 annonces avec prix suspect
   💾 7 signaux prix persistés dans SQLite

======================================================================
  M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
  Annonces sans évaluation LLM : 0
  Toutes les annonces ont déjà été analysées.

======================================================================
📊 TABLEAU DE BORD RÉCAPITULATIF
======================================================================

   ┌──────────────────────────────────────────────────┐
   │ Nombre total d'annonces      │                191 │
   │ Prix moyen                   │            8,582 € │
   │ Prix médian                  │            8,000 € │
   │ Km moyen                     │         164,612 km │
   │ Km médian                    │         153,000 km │
   │ Âge moyen                    │           11.3 ans │
   │ Âge médian                   │           11.0 ans │
   │ Km/an moyen                  │       14,820 km/an │
   └──────────────────────────────────────────────────┘

   ✅ Sauvegardé : /home/ubuntu/app/stats/nv200/figures/dashboard_kpis.png

======================================================================
💡 INSIGHTS PRINCIPAUX
======================================================================

   🎯 Âge optimal d'achat : ~16 ans (meilleur rapport prix/ancienneté)
   ⚡ Seuil km critique : la décote s'accélère le plus autour de (20000, 40000]
   👔 Les pros vendent 32.5% plus cher que les particuliers (médiane)
   🔄 Km/an médian : 13,533 km → Profil dominant : 10-15k (Normal)
   🏭 Top 3 marques = 100% du marché : nissan (191)

======================================================================
💡 RECOMMANDATIONS
======================================================================

   🛒 POUR UN ACHETEUR :
   --------------------------------------------------
   • Sweet spot : véhicules de 5-8 ans, 60-120k km
     Prix moyen dans cette fourchette : 11,942€
     (16 annonces disponibles)
   • Prix médian du marché : 8,000€ → cible < 7,200€ pour une bonne affaire
   • Privilégier les annonces de particuliers si budget serré
   • Vérifier le km/an : < 15 000 km/an = usage normal

   💰 POUR UN VENDEUR :
   --------------------------------------------------
   • Prix médian du marché : 8,000€
   • Positionner légèrement sous le marché pour vendre vite (-5% à -10%)
   • Les véhicules < 153,000 km se vendent mieux
   • Mettre en avant un faible km/an si applicable

   🎯 SEGMENTS DE MARCHÉ :
   --------------------------------------------------
   • Budget (52 annonces) :
     Prix : 2,000€ - 5,500€
     Âge moyen : 13.6 ans | Km moyen : 233,188
   • Milieu de gamme (93 annonces) :
     Prix : 5,800€ - 10,990€
     Âge moyen : 10.9 ans | Km moyen : 159,192
   • Premium (46 annonces) :
     Prix : 11,000€ - 19,990€
     Âge moyen : 9.4 ans | Km moyen : 98,048

======================================================================
💾 EXPORT DES RÉSULTATS EN BASE SQLite
======================================================================
   📌 Run #155 créé
   🔍 Modèle : nv200
   📎 191 annonces liées au run
   ✅ Stats descriptives : 5 variables
   ✅ Modèle régression : 2 coefficients (R²=0.604)
   ✅ Référentiel prix : 45 segments
   ✅ Classifications deal : 191 annonces

   💾 Tout exporté dans /home/ubuntu/app/db/lbc.sqlite

══════════════════════════════════════════════════════════════════════
  ✅ ANALYSE TERMINÉE en 4.0 secondes
  📊 191 annonces analysées  (run #155)
  🔍 Modèle           : nv200
  💾 Base SQLite      : /home/ubuntu/app/db/lbc.sqlite
  📁 Figures          : /home/ubuntu/app/stats/nv200/figures
══════════════════════════════════════════════════════════════════════
2026-03-25 08:10:52,916 [INFO] httpx — HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
2026-03-25 08:10:52,925 [INFO] services.llm_service — Batch 0-1: 1 résultats extraits (modèle=gpt-5-nano)

======================================================================
  M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
  Annonces sans évaluation LLM : 1
  Résultats extraits : 1
  Évaluations insérées : 1
============================================================
  CRAWL ALL — 9 modèle(s)
============================================================

[1/9] CLIO_4  (brand=renault, pages=41)
  URL: https://www.leboncoin.fr/recherche?category=2&text=clio%204&price=3000-9000&regd...
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 41 --model clio_4
  CSV : leboncoin_ads_clio_4_20260325_080001.csv
  $ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv --db /home/ubuntu/app/db/lbc.sqlite --model clio_4
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_clio_4_20260325_080001.csv --brand renault --model clio_4 --db /home/ubuntu/app/db/lbc.sqlite
  $ /home/ubuntu/app/.venv/bin/python -m stats.main --model clio_4 --skip-plots

[2/9] YARIS  (brand=toyota, pages=2)
  URL: https://www.leboncoin.fr/recherche?category=2&text=toyota%20yaris&price=3000-900...
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 2 --model yaris
  CSV : leboncoin_ads_yaris_20260325_080305.csv
  $ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_yaris_20260325_080305.csv --db /home/ubuntu/app/db/lbc.sqlite --model yaris
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_yaris_20260325_080305.csv --brand toyota --model yaris --db /home/ubuntu/app/db/lbc.sqlite
  $ /home/ubuntu/app/.venv/bin/python -m stats.main --model yaris --skip-plots

[3/9] I20  (brand=hyundai, pages=4)
  URL: https://www.leboncoin.fr/recherche?category=2&text=i20&price=3000-9000&regdate=2...
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 4 --model i20
  CSV : leboncoin_ads_i20_20260325_080338.csv
  $ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_i20_20260325_080338.csv --db /home/ubuntu/app/db/lbc.sqlite --model i20
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_i20_20260325_080338.csv --brand hyundai --model i20 --db /home/ubuntu/app/db/lbc.sqlite
  $ /home/ubuntu/app/.venv/bin/python -m stats.main --model i20 --skip-plots

[4/9] BERLINGO  (brand=citroen, pages=10)
  URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=C...
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 10 --model berlingo
  CSV : leboncoin_ads_berlingo_20260325_080403.csv
  $ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_berlingo_20260325_080403.csv --db /home/ubuntu/app/db/lbc.sqlite --model berlingo
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_berlingo_20260325_080403.csv --brand citroen --model berlingo --db /home/ubuntu/app/db/lbc.sqlite
  $ /home/ubuntu/app/.venv/bin/python -m stats.main --model berlingo --skip-plots

[5/9] C4  (brand=citroen, pages=5)
  URL: https://www.leboncoin.fr/recherche?category=2&text=c4&price=min-11000&regdate=20...
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 5 --model c4
  CSV : leboncoin_ads_c4_20260325_080511.csv
  $ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_c4_20260325_080511.csv --db /home/ubuntu/app/db/lbc.sqlite --model c4
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_c4_20260325_080511.csv --brand citroen --model c4 --db /home/ubuntu/app/db/lbc.sqlite
  $ /home/ubuntu/app/.venv/bin/python -m stats.main --model c4 --skip-plots

[6/9] SCENIC  (brand=renault, pages=4)
  URL: https://www.leboncoin.fr/recherche?category=2&text=scenic&price=min-11000&regdat...
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 4 --model scenic
  ERREUR : crawler échoué pour scenic

[7/9] 5008  (brand=peugeot, pages=31)
  URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_br...
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 31 --model 5008
  CSV : leboncoin_ads_5008_20260325_080554.csv
  $ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv --db /home/ubuntu/app/db/lbc.sqlite --model 5008
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_5008_20260325_080554.csv --brand peugeot --model 5008 --db /home/ubuntu/app/db/lbc.sqlite
  $ /home/ubuntu/app/.venv/bin/python -m stats.main --model 5008 --skip-plots

[8/9] FIESTA  (brand=ford, pages=44)
  URL: https://www.leboncoin.fr/recherche?category=2&text=ford%20fiesta&price=3000-1000...
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 44 --model fiesta
  ERREUR : crawler échoué pour fiesta

[9/9] NV200  (brand=nissan, pages=3)
  URL: https://www.leboncoin.fr/recherche?category=5&text=nv200&u_utility_brand=NISSAN&...
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 3 --model nv200
  CSV : leboncoin_ads_nv200_20260325_081032.csv
  $ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_nv200_20260325_081032.csv --db /home/ubuntu/app/db/lbc.sqlite --model nv200
  $ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_nv200_20260325_081032.csv --brand nissan --model nv200 --db /home/ubuntu/app/db/lbc.sqlite
  $ /home/ubuntu/app/.venv/bin/python -m stats.main --model nv200 --skip-plots

  .env restauré

============================================================
  LLM — Extraction des titres (toutes les annonces)
============================================================
  $ /home/ubuntu/app/.venv/bin/python -m stats.m05_llm_title_analysis

============================================================
  RÉSUMÉ
============================================================
  ✓ clio_4               → OK
  ✓ yaris                → OK
  ✓ i20                  → OK
  ✓ berlingo             → OK
  ✓ c4                   → OK
  ✗ scenic               → ERREUR crawler
  ✓ 5008                 → OK
  ✗ fiesta               → ERREUR crawler
  ✓ nv200                → OK
============================================================

============================================================
Finished: 2026-03-25T08:10:53.248402
Duration: 653.2s
STATUS:SUCCESS