[ka4] connecteur autousagee : portail AMVOQ AutoUsagee.ca — +11 924 annonces (367 marchands, 157 villes)
Nouveau connecteur PORTAIL pour la place de marché officielle de l'AMVOQ (autousagee.ca) : des centaines de petits marchands indépendants du Québec dont la plupart n'ont aucun site connectable. - Liste : GET /recherche?type_id=1&page=N (15 cartes/page, ~800 pages, aucun jeton requis) — prix, titre FR, année, sous-modèle, km, marchand, ville, photo 1024px : annonce complète dès la liste. - Détail (plafonné AUTOKA_MAX_DETAILS=500/sync + cache BD clé statique v1) : VIN, transmission, traction, moteur/cylindres, carrosserie, portières, couleurs, no d'unité, PDSF, consommation, description, galerie complète, site du marchand ; fallback bloc Contact@Once (JSON year/make/model/VIN). - Rate-limit IP du portail (429 après ~150 requêtes) : absorbé par la chaîne de résilience commune (escalade Oxylabs résidentiel -cc-CA), délai 1 s. - type_id=1 seulement (voiture-camion-vus) ; VR/loisirs/lourd exclus. - Recouvrement marchands déjà connectés (Okaze, theme_central…) : dédup VIN inter-sources, 251 doublons masqués côté autousagee. Test réel : sync complet 11 924 annonces en 29 min — prix 99,9 %, km 100 %, ville 100 %, photos 89 % ; 4 annonces vérifiées à la main contre le site (prix, km, VIN, ville, transmission conformes ; no de série JDM ≠ VIN rejeté). Docs régénérées (gen_connector_docs) : autousagee.md + INDEX (59 357 actives). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
35 changed files +763 −310
added
autoka/connectors/autousagee.py
+358 −0
@@ -0,0 +1,358 @@ | ||
| 1 | +# ----------------------------------------------------------------------------- | |
| 2 | +# Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec) | |
| 3 | +# Auteur : Simon-Pierre Boucher — contact@spboucher.ai | |
| 4 | +# connectors/autousagee.py : PORTAIL — AutoUsagee.ca (AMVOQ) | |
| 5 | +# | |
| 6 | +# AutoUsagee.ca est la place de marché officielle de l'AMVOQ (Association | |
| 7 | +# des marchands de véhicules d'occasion du Québec) : ~12 000 annonces de | |
| 8 | +# centaines de petits marchands indépendants dont la plupart n'ont AUCUN | |
| 9 | +# site propre connectable — c'est ici que vit leur inventaire (la même | |
| 10 | +# plateforme alimente les sites `theme_central` déjà connectés et les | |
| 11 | +# images image.autousagee.ca, voir central_dealers.py / yannicklaberge.py). | |
| 12 | +# | |
| 13 | +# Stratégie (HTML rendu serveur ; rate-limit IP agressif : 429 après | |
| 14 | +# ~150 requêtes rapprochées — la chaîne de résilience commune escalade | |
| 15 | +# alors vers Oxylabs résidentiel -cc-CA, vérifié 2026-08-23) : | |
| 16 | +# Liste : GET /recherche?type_id=1&page=N — 15 cartes/page, ~800 pages. | |
| 17 | +# Aucun jeton requis pour le GET (le _token CSRF ne sert qu'aux POST | |
| 18 | +# AJAX). Chaque carte : URL canonique (/vehicule-usagee/<marchand>/ | |
| 19 | +# <id_marchand>/<slug>/<id_annonce>), photo 300px (→ 1024px), prix, | |
| 20 | +# marque/modèle FR (h2), année (<time datetime>), sous-modèle (h3), | |
| 21 | +# km, NOM DU MARCHAND et VILLE — l'annonce est complète sans détail. | |
| 22 | +# Détail (plafonné + cache BD, clé statique v1 — prix/km frais viennent | |
| 23 | +# de la liste) : specs label→valeur (Marque, Modèle, Sous-modèle, | |
| 24 | +# Odomètre, Transmission, Traction, Moteur/Cylindre, Carrosserie, | |
| 25 | +# Portières, Couleurs, Numéro d'unité, Numéro de série = VIN, PDSF, | |
| 26 | +# Consommation, Energie), description libre, galerie 1024px complète, | |
| 27 | +# site web du marchand. Fallback : bloc Contact@Once (data-cao-lpvars) | |
| 28 | +# porte year/make/model/VIN/StockID en JSON. | |
| 29 | +# | |
| 30 | +# type_id=1 = « voiture-camion-vus » seulement (2,3,4 = VR/loisirs/lourd, | |
| 31 | +# volontairement exclus — motoneiges, roulottes, bateaux mêlés aux motos). | |
| 32 | +# | |
| 33 | +# Recouvrement : quelques marchands AMVOQ déjà connectés en direct (Okaze, | |
| 34 | +# theme_central…) republient ici — la dédup VIN inter-sources masque les | |
| 35 | +# doublons, priorité au site du marchand. | |
| 36 | +# | |
| 37 | +# Plafonds : AUTOKA_AUTOUSAGEE_MAX (annonces, défaut 0 = tout), | |
| 38 | +# AUTOKA_MAX_PAGES (pages liste, tests), AUTOKA_MAX_DETAILS (vraies | |
| 39 | +# requêtes détail/sync, défaut 500 — inventaire enrichi progressivement). | |
| 40 | +# ----------------------------------------------------------------------------- | |
| 41 | +from __future__ import annotations | |
| 42 | + | |
| 43 | +import json | |
| 44 | +import os | |
| 45 | +import re | |
| 46 | + | |
| 47 | +from ..schema import Vehicle, parse_mileage, parse_price | |
| 48 | +from .base import BaseConnector | |
| 49 | + | |
| 50 | +BASE = "https://www.autousagee.ca" | |
| 51 | +SEARCH = BASE + "/recherche" | |
| 52 | +IMG_HOST = "image.autousagee.ca" | |
| 53 | + | |
| 54 | +PAGE_SIZE = 15 | |
| 55 | +MAX_PAGES_HARD = 1000 # garde-fou dur (~800 pages réelles) | |
| 56 | + | |
| 57 | +_URL_RE = re.compile( | |
| 58 | + r"/vehicule-usagee/(?P<dealer_slug>[^/]+)/(?P<dealer_id>\d+)/" | |
| 59 | + r"(?P<slug>[^/]+)/(?P<id>\d+)/?$") | |
| 60 | +_VIN_RE = re.compile(r"^[A-HJ-NPR-Z0-9]{17}$") | |
| 61 | +_TOTAL_RE = re.compile(r"([\d\s]{1,12})résultats") | |
| 62 | +_KM_RE = re.compile(r"^[\d\s,.]+\s*km$", re.I) | |
| 63 | +_CONSO_RE = re.compile(r"Ville\s*:\s*([\d.,]+).*?Autoroute\s*:\s*([\d.,]+)", | |
| 64 | + re.I | re.S) | |
| 65 | +_CAO_RE = re.compile(r'data-cao-lpvars="([^"]+)"') | |
| 66 | + | |
| 67 | +# clé de cache détail (statique : specs/galerie quasi immuables ; | |
| 68 | +# le prix et le km frais viennent toujours de la liste) | |
| 69 | +_DETAIL_KEY = "v1" | |
| 70 | + | |
| 71 | + | |
| 72 | +def _clean(text: str | None) -> str: | |
| 73 | + return re.sub(r"\s+", " ", str(text or "")).strip() | |
| 74 | + | |
| 75 | + | |
| 76 | +def _titlecase(text: str) -> str: | |
| 77 | + """SALABERRY-DE-VALLEYFIELD -> Salaberry-De-Valleyfield (villes/marchands | |
| 78 | + livrés en MAJUSCULES par la plateforme — les accents restent parfois en | |
| 79 | + minuscules, ex. « ESTHéTIQUE », d'où le seuil plutôt que isupper()).""" | |
| 80 | + t = _clean(text) | |
| 81 | + letters = [c for c in t if c.isalpha()] | |
| 82 | + if letters and sum(c.isupper() for c in letters) / len(letters) >= 0.8: | |
| 83 | + return t.title() | |
| 84 | + return t | |
| 85 | + | |
| 86 | + | |
| 87 | +def _max_listings() -> int: | |
| 88 | + try: | |
| 89 | + return max(0, int(os.environ.get("AUTOKA_AUTOUSAGEE_MAX", "0"))) | |
| 90 | + except ValueError: | |
| 91 | + return 0 | |
| 92 | + | |
| 93 | + | |
| 94 | +class AutoUsageeQuebec(BaseConnector): | |
| 95 | + """Portail AutoUsagee.ca — inventaire des marchands AMVOQ du Québec.""" | |
| 96 | + | |
| 97 | + source_id = "autousagee" | |
| 98 | + request_delay = 1.0 # politesse : portail associatif | |
| 99 | + max_details = 500 # plafond de vraies requêtes détail / sync | |
| 100 | + | |
| 101 | + def __init__(self) -> None: | |
| 102 | + super().__init__() | |
| 103 | + self.session.headers.update({ | |
| 104 | + "Accept": "text/html,application/xhtml+xml", | |
| 105 | + "Accept-Language": "fr-CA,fr;q=0.9", | |
| 106 | + }) | |
| 107 | + | |
| 108 | + # -- liste ------------------------------------------------------------------ | |
| 109 | + def _list_page(self, page: int) -> tuple[list[dict], int | None]: | |
| 110 | + """Cartes d'une page de résultats + total annoncé par le portail.""" | |
| 111 | + from bs4 import BeautifulSoup | |
| 112 | + html = self.get(SEARCH, params={"type_id": 1, "page": page}).text | |
| 113 | + soup = BeautifulSoup(html, "html.parser") | |
| 114 | + | |
| 115 | + total = None | |
| 116 | + m = _TOTAL_RE.search(soup.get_text(" ")) | |
| 117 | + if m: | |
| 118 | + try: | |
| 119 | + total = int(re.sub(r"\s", "", m.group(1))) | |
| 120 | + except ValueError: | |
| 121 | + pass | |
| 122 | + | |
| 123 | + rows: list[dict] = [] | |
| 124 | + for art in soup.select("article.content_item"): | |
| 125 | + link = art.select_one("a.link_img[href]") | |
| 126 | + if link is None: | |
| 127 | + continue | |
| 128 | + um = _URL_RE.search(link["href"].strip()) | |
| 129 | + if um is None: | |
| 130 | + continue | |
| 131 | + row: dict = { | |
| 132 | + "url": link["href"].strip(), | |
| 133 | + "id": um.group("id"), | |
| 134 | + "dealer_slug": um.group("dealer_slug"), | |
| 135 | + "dealer_id": um.group("dealer_id"), | |
| 136 | + } | |
| 137 | + img = art.select_one(".img_vehicule img[src]") | |
| 138 | + if img and IMG_HOST in img["src"]: | |
| 139 | + src = img["src"] | |
| 140 | + if src.startswith("//"): | |
| 141 | + src = "https:" + src | |
| 142 | + row["image"] = src.replace(f"{IMG_HOST}/300/", | |
| 143 | + f"{IMG_HOST}/1024/") | |
| 144 | + price_el = art.select_one(".prix_voiture span") | |
| 145 | + row["price_label"] = _clean(price_el.get_text()) if price_el else "" | |
| 146 | + h2 = art.select_one("h2.marque_modele") | |
| 147 | + row["title"] = _clean(h2.get_text()) if h2 else "" | |
| 148 | + h3 = art.select_one("h3.marque_modele") | |
| 149 | + row["trim"] = _clean(h3.get_text()) if h3 else "" | |
| 150 | + time_el = art.find("time") | |
| 151 | + row["year"] = _clean(time_el.get("datetime")) if time_el else "" | |
| 152 | + | |
| 153 | + # specs de carte : 1er span « NNN KM », l'autre = nom du marchand | |
| 154 | + for span in art.select(".infos_voiture .spec .info span"): | |
| 155 | + text = _clean(span.get_text()) | |
| 156 | + if not text: | |
| 157 | + continue | |
| 158 | + if _KM_RE.match(text): | |
| 159 | + row["km_label"] = text | |
| 160 | + elif "dealer" not in row or not row.get("dealer"): | |
| 161 | + row["dealer"] = text | |
| 162 | + loc = art.select_one(".infos_voiture_location .info span") | |
| 163 | + row["city"] = _clean(loc.get_text()) if loc else "" | |
| 164 | + rows.append(row) | |
| 165 | + return rows, total | |
| 166 | + | |
| 167 | + # -- page détail -------------------------------------------------------------- | |
| 168 | + def _fetch_detail(self, url: str) -> dict: | |
| 169 | + from bs4 import BeautifulSoup | |
| 170 | + html = self.get(url).text | |
| 171 | + soup = BeautifulSoup(html, "html.parser") | |
| 172 | + payload: dict = {} | |
| 173 | + | |
| 174 | + # spécifications label -> valeur (Marque, Odomètre, Transmission, | |
| 175 | + # Numéro de série…) — apostrophes typographiques normalisées | |
| 176 | + specs: dict[str, str] = {} | |
| 177 | + for info in soup.select("div.info"): | |
| 178 | + lab, span = info.find("label"), info.find("span") | |
| 179 | + if lab is None or span is None: | |
| 180 | + continue | |
| 181 | + key = _clean(lab.get_text()).rstrip(" |:").replace("’", "'") | |
| 182 | + val = _clean(span.get_text(" ")) | |
| 183 | + if key and val and val != "--" and key not in specs: | |
| 184 | + specs[key] = val | |
| 185 | + payload["specs"] = specs | |
| 186 | + | |
| 187 | + # description libre | |
| 188 | + desc = soup.select_one("div.desc_container") | |
| 189 | + if desc: | |
| 190 | + payload["description"] = _clean(desc.get_text(" "))[:4000] | |
| 191 | + | |
| 192 | + # galerie complète 1024px (propre à cette annonce) | |
| 193 | + listing_id = _URL_RE.search(url) | |
| 194 | + lid = listing_id.group("id") if listing_id else "" | |
| 195 | + images: list[str] = [] | |
| 196 | + for m in re.finditer( | |
| 197 | + rf"//{IMG_HOST}/1024/{lid}/[^\"'\s\\)]+", html): | |
| 198 | + u = "https:" + m.group(0) | |
| 199 | + if u not in images: | |
| 200 | + images.append(u) | |
| 201 | + payload["images"] = images[:30] | |
| 202 | + | |
| 203 | + # site web du marchand (logo cliquable de la colonne coordonnées) | |
| 204 | + site = soup.select_one(".logo_marchand a[href]") | |
| 205 | + if site and site["href"].startswith("http"): | |
| 206 | + payload["dealer_site"] = site["href"].strip() | |
| 207 | + | |
| 208 | + # fallback Contact@Once : year/make/model/VIN/StockID en JSON | |
| 209 | + cao = _CAO_RE.search(html) | |
| 210 | + if cao: | |
| 211 | + try: | |
| 212 | + import html as htmllib | |
| 213 | + pairs = json.loads(htmllib.unescape(cao.group(1))) | |
| 214 | + payload["cao"] = {p["name"]: str(p.get("value") or "") | |
| 215 | + for p in pairs if isinstance(p, dict)} | |
| 216 | + except (ValueError, KeyError, TypeError): | |
| 217 | + pass | |
| 218 | + return payload | |
| 219 | + | |
| 220 | + # -- contrat -------------------------------------------------------------- | |
| 221 | + def fetch(self) -> list[Vehicle]: | |
| 222 | + cap_listings = _max_listings() | |
| 223 | + page_cap = int(os.environ.get("AUTOKA_MAX_PAGES", MAX_PAGES_HARD)) | |
| 224 | + detail_cap = int(os.environ.get("AUTOKA_MAX_DETAILS", self.max_details)) | |
| 225 | + | |
| 226 | + rows: list[dict] = [] | |
| 227 | + seen: set[str] = set() | |
| 228 | + page, total = 1, None | |
| 229 | + while page <= min(page_cap, MAX_PAGES_HARD): | |
| 230 | + batch, page_total = self._list_page(page) | |
| 231 | + if not batch: | |
| 232 | + break | |
| 233 | + total = page_total or total | |
| 234 | + for row in batch: | |
| 235 | + if row["id"] not in seen: | |
| 236 | + seen.add(row["id"]) | |
| 237 | + rows.append(row) | |
| 238 | + if cap_listings and len(rows) >= cap_listings: | |
| 239 | + rows = rows[:cap_listings] | |
| 240 | + break | |
| 241 | + if total is not None and page * PAGE_SIZE >= total: | |
| 242 | + break | |
| 243 | + page += 1 | |
| 244 | + | |
| 245 | + vehicles: list[Vehicle] = [] | |
| 246 | + real_fetches = 0 | |
| 247 | + for row in rows: | |
| 248 | + extra: dict = {} | |
| 249 | + if real_fetches >= detail_cap: | |
| 250 | + # budget épuisé : on sert quand même le cache BD existant | |
| 251 | + from .. import db | |
| 252 | + if self._detail_con is None: | |
| 253 | + self._detail_con = db.connect() | |
| 254 | + extra = db.get_cached_detail(self._detail_con, self.source_id, | |
| 255 | + row["id"], _DETAIL_KEY) or {} | |
| 256 | + else: | |
| 257 | + before = self._last_request | |
| 258 | + try: | |
| 259 | + extra = self.detail(row["id"], _DETAIL_KEY, | |
| 260 | + lambda u=row["url"]: | |
| 261 | + self._fetch_detail(u)) | |
| 262 | + except Exception: | |
| 263 | + extra = {} # détail indisponible : données liste suffisent | |
| 264 | + if self._last_request != before: | |
| 265 | + real_fetches += 1 | |
| 266 | + veh = self._to_vehicle(row, extra) | |
| 267 | + if veh is not None: | |
| 268 | + vehicles.append(veh) | |
| 269 | + return vehicles | |
| 270 | + | |
| 271 | + # -- carte + détail -> Vehicle --------------------------------------------- | |
| 272 | + def _to_vehicle(self, row: dict, extra: dict) -> Vehicle | None: | |
| 273 | + title = row.get("title") or "" | |
| 274 | + if not title: | |
| 275 | + return None | |
| 276 | + specs: dict = extra.get("specs") or {} | |
| 277 | + cao: dict = extra.get("cao") or {} | |
| 278 | + | |
| 279 | + year = None | |
| 280 | + for raw in (row.get("year"), cao.get("year")): | |
| 281 | + try: | |
| 282 | + year = int(str(raw)[:4]) | |
| 283 | + break | |
| 284 | + except (TypeError, ValueError): | |
| 285 | + continue | |
| 286 | + | |
| 287 | + price = parse_price(row.get("price_label") or "") | |
| 288 | + km = parse_mileage(row.get("km_label") or "") \ | |
| 289 | + or parse_mileage(specs.get("Odomètre") or "") | |
| 290 | + | |
| 291 | + make = _clean(specs.get("Marque") or cao.get("make") or "") | |
| 292 | + model = _clean(specs.get("Modèle") or cao.get("model") or "") | |
| 293 | + trim = _clean(specs.get("Sous-modèle") or row.get("trim") or "") | |
| 294 | + | |
| 295 | + vin = _clean(specs.get("Numéro de série") or cao.get("VIN") or "").upper() | |
| 296 | + if not _VIN_RE.match(vin): | |
| 297 | + vin = "" | |
| 298 | + | |
| 299 | + engine = "" | |
| 300 | + litres = specs.get("Moteur") or "" | |
| 301 | + if re.fullmatch(r"\d+(\.\d+)?", litres): | |
| 302 | + cyl = specs.get("Cylindre") or "" | |
| 303 | + engine = f"{litres}L" + (f" {cyl} cyl." if cyl.isdigit() else "") | |
| 304 | + | |
| 305 | + doors = None | |
| 306 | + try: | |
| 307 | + doors = int(specs["Nombre de portières"]) | |
| 308 | + except (KeyError, ValueError): | |
| 309 | + pass | |
| 310 | + | |
| 311 | + images = [u for u in (extra.get("images") or []) if isinstance(u, str)] | |
| 312 | + if not images and row.get("image"): | |
| 313 | + images = [row["image"]] | |
| 314 | + | |
| 315 | + details: dict = {} | |
| 316 | + msrp = parse_price(specs.get("Prix neuf (PDSF)") or "") | |
| 317 | + if msrp and (not price or msrp > price): | |
| 318 | + details["msrp"] = msrp | |
| 319 | + conso = _CONSO_RE.search(specs.get("Consommation (Litre / 100 Km)") | |
| 320 | + or "") | |
| 321 | + if conso: | |
| 322 | + details["fuel_city_l_100km"] = conso.group(1).replace(",", ".") | |
| 323 | + details["fuel_hwy_l_100km"] = conso.group(2).replace(",", ".") | |
| 324 | + if extra.get("dealer_site"): | |
| 325 | + details["dealer_site"] = extra["dealer_site"] | |
| 326 | + details["dealer_slug"] = row["dealer_slug"] | |
| 327 | + details["dealer_amvoq_id"] = row["dealer_id"] | |
| 328 | + | |
| 329 | + return Vehicle( | |
| 330 | + source=self.source_id, | |
| 331 | + external_id=row["id"], | |
| 332 | + url=row["url"], | |
| 333 | + title=f"{title} {year or ''}".strip(), | |
| 334 | + make=make, | |
| 335 | + model=model, | |
| 336 | + trim=trim, | |
| 337 | + year=year, | |
| 338 | + price=price, | |
| 339 | + price_label=row.get("price_label") or "", | |
| 340 | + mileage_km=km, | |
| 341 | + mileage_label=row.get("km_label") or "", | |
| 342 | + transmission=_clean(specs.get("Transmission") or ""), | |
| 343 | + fuel=_clean(specs.get("Energie") or specs.get("Énergie") or ""), | |
| 344 | + drivetrain=_clean(specs.get("Traction") or ""), | |
| 345 | + body_type=_clean(specs.get("Carrosserie") or ""), | |
| 346 | + exterior_color=_clean(specs.get("Couleur extérieur") or ""), | |
| 347 | + interior_color=_clean(specs.get("Couleur intérieur") or ""), | |
| 348 | + engine=engine, | |
| 349 | + doors=doors, | |
| 350 | + vin=vin, | |
| 351 | + stock_number=_clean(specs.get("Numéro d'unité") | |
| 352 | + or cao.get("StockID") or ""), | |
| 353 | + dealer_name=_titlecase(row.get("dealer") or ""), | |
| 354 | + city=_titlecase(row.get("city") or ""), | |
| 355 | + description=extra.get("description") or "", | |
| 356 | + details=details, | |
| 357 | + images=images[:30], | |
| 358 | + ) | |
modified
data/sources.json
+13 −0
@@ -1571,6 +1571,19 @@ | ||
| 1571 | 1571 | "connector": "autotrader", |
| 1572 | 1572 | "status": "actif" |
| 1573 | 1573 | }, |
| 1574 | + { | |
| 1575 | + "id": "autousagee", | |
| 1576 | + "name": "AutoUsagee.ca (AMVOQ)", | |
| 1577 | + "url": "https://www.autousagee.ca", | |
| 1578 | + "listing_url": "https://www.autousagee.ca/recherche?type_id=1", | |
| 1579 | + "city": "", | |
| 1580 | + "region": "", | |
| 1581 | + "type": "portail", | |
| 1582 | + "type_note": "place de marché officielle de l'AMVOQ (~12 000 annonces, centaines de petits marchands sans site connectable) — type_id=1 (voiture-camion-vus) seulement ; VIN via page détail (enrichissement progressif, AUTOKA_MAX_DETAILS défaut 500)", | |
| 1583 | + "platform": "HTML rendu serveur (Laravel) — /recherche?type_id=1&page=N, 15 cartes/page (~800 pages), aucun jeton requis en GET ; détail : specs label→valeur + galerie image.autousagee.ca/1024 + bloc Contact@Once (VIN/StockID) ; même plateforme que theme_central (central_dealers)", | |
| 1584 | + "connector": "autousagee", | |
| 1585 | + "status": "actif" | |
| 1586 | + }, | |
| 1574 | 1587 | { |
| 1575 | 1588 | "id": "otogo", |
| 1576 | 1589 | "name": "Otogo.ca", |
modified
docs/connecteurs/INDEX.md
+33 −32
@@ -1,13 +1,13 @@ | ||
| 1 | 1 | # Auto-Ka — Documentation des connecteurs |
| 2 | 2 | |
| 3 | −_Générée le 2026-08-18 06:00 par `scripts/gen_connector_docs.py` (rejouable : `.venv/bin/python3 scripts/gen_connector_docs.py`)._ | |
| 3 | +_Générée le 2026-08-23 15:50 par `scripts/gen_connector_docs.py` (rejouable : `.venv/bin/python3 scripts/gen_connector_docs.py`)._ | |
| 4 | 4 | |
| 5 | 5 | ## Vue d'ensemble |
| 6 | 6 | |
| 7 | −- **Sources** : 142 (registre `data/sources.json`) | |
| 8 | −- **Modules connecteurs** : 30 (`autoka/connectors/`) | |
| 9 | −- **Annonces en base** : 49397 — dont 46838 actives (46208 autos, 606 motos, 24 scooters) | |
| 10 | −- **Doublons VIN masqués** : 8438 (voir [dédup VIN](transverse-dedup-vin.md)) | |
| 7 | +- **Sources** : 143 (registre `data/sources.json`) | |
| 8 | +- **Modules connecteurs** : 31 (`autoka/connectors/`) | |
| 9 | +- **Annonces en base** : 77215 — dont 59357 actives (58704 autos, 626 motos, 27 scooters) | |
| 10 | +- **Doublons VIN masqués** : 9388 (voir [dédup VIN](transverse-dedup-vin.md)) | |
| 11 | 11 | - **Rappels Transports Canada** : 16969 rappels distincts (voir [rappels TC](transverse-rappels-tc.md)) |
| 12 | 12 | - **Concessionnaires géolocalisés** : 138 (voir [dealers](transverse-dealers.md)) |
| 13 | 13 | |
@@ -15,36 +15,37 @@ _Générée le 2026-08-18 06:00 par `scripts/gen_connector_docs.py` (rejouable : | ||
| 15 | 15 | |
| 16 | 16 | | Module | Fiche | Sources | Annonces actives | Backend | |
| 17 | 17 | |---|---|---|---|---| |
| 18 | −| `d2c_dealers` | [d2c_dealers.md](d2c_dealers.md) | 66 | 5348 | requests direct — Firecrawl par source au besoin | | |
| 19 | −| `sm360_dealers` | [sm360_dealers.md](sm360_dealers.md) | 15 | 1434 | requests direct — Firecrawl par source au besoin | | |
| 20 | −| `moto_dealers` | [moto_dealers.md](moto_dealers.md) | 13 | 630 | requests direct | | |
| 21 | −| `central_dealers` | [central_dealers.md](central_dealers.md) | 9 | 345 | requests direct | | |
| 22 | −| `gatsby_dealers` | [gatsby_dealers.md](gatsby_dealers.md) | 6 | 198 | requests direct | | |
| 23 | −| `magnetis_dealers` | [magnetis_dealers.md](magnetis_dealers.md) | 4 | 426 | requests direct | | |
| 24 | −| `vvu_dealers` | [vvu_dealers.md](vvu_dealers.md) | 4 | 183 | requests direct | | |
| 25 | −| `convertus_fc` | [convertus_fc.md](convertus_fc.md) | 3 | 296 | Firecrawl | | |
| 26 | −| `albioccasion` | [albioccasion.md](albioccasion.md) | 1 | 1136 | requests direct | | |
| 18 | +| `d2c_dealers` | [d2c_dealers.md](d2c_dealers.md) | 66 | 5274 | requests direct — Firecrawl par source au besoin | | |
| 19 | +| `sm360_dealers` | [sm360_dealers.md](sm360_dealers.md) | 15 | 1429 | requests direct — Firecrawl par source au besoin | | |
| 20 | +| `moto_dealers` | [moto_dealers.md](moto_dealers.md) | 13 | 653 | requests direct | | |
| 21 | +| `central_dealers` | [central_dealers.md](central_dealers.md) | 9 | 349 | requests direct | | |
| 22 | +| `gatsby_dealers` | [gatsby_dealers.md](gatsby_dealers.md) | 6 | 203 | requests direct | | |
| 23 | +| `magnetis_dealers` | [magnetis_dealers.md](magnetis_dealers.md) | 4 | 424 | requests direct | | |
| 24 | +| `vvu_dealers` | [vvu_dealers.md](vvu_dealers.md) | 4 | 178 | requests direct | | |
| 25 | +| `convertus_fc` | [convertus_fc.md](convertus_fc.md) | 3 | 322 | Firecrawl | | |
| 26 | +| `albioccasion` | [albioccasion.md](albioccasion.md) | 1 | 1108 | requests direct | | |
| 27 | 27 | | `autodurocher` | [autodurocher.md](autodurocher.md) | 1 | 196 | requests direct | |
| 28 | −| `automobileendirect` | [automobileendirect.md](automobileendirect.md) | 1 | 1687 | requests direct | | |
| 29 | −| `autotrader` | [autotrader.md](autotrader.md) | 1 | 1960 | Scrapfly | | |
| 30 | −| `cargurus` | [cargurus.md](cargurus.md) | 1 | 504 | Scrapfly | | |
| 31 | −| `classeauto` | [classeauto.md](classeauto.md) | 1 | 109 | requests direct | | |
| 32 | −| `clubautozone` | [clubautozone.md](clubautozone.md) | 1 | 47 | requests direct | | |
| 33 | −| `desmeules` | [desmeules.md](desmeules.md) | 1 | 244 | requests direct | | |
| 34 | −| `dupontford` | [dupontford.md](dupontford.md) | 1 | 66 | requests direct | | |
| 35 | −| `hgregoire` | [hgregoire.md](hgregoire.md) | 1 | 1672 | Scrapfly | | |
| 36 | −| `jlkauto` | [jlkauto.md](jlkauto.md) | 1 | 68 | requests direct | | |
| 37 | −| `kijiji` | [kijiji.md](kijiji.md) | 1 | 3005 | requests direct | | |
| 38 | −| `leprixdugros` | [leprixdugros.md](leprixdugros.md) | 1 | 973 | Scrapfly | | |
| 39 | −| `megacentre` | [megacentre.md](megacentre.md) | 1 | 456 | requests direct | | |
| 40 | −| `montjolichrysler` | [montjolichrysler.md](montjolichrysler.md) | 1 | 414 | requests direct | | |
| 41 | −| `occasionbeaucage` | [occasionbeaucage.md](occasionbeaucage.md) | 1 | 1226 | requests direct | | |
| 28 | +| `automobileendirect` | [automobileendirect.md](automobileendirect.md) | 1 | 1683 | requests direct | | |
| 29 | +| `autotrader` | [autotrader.md](autotrader.md) | 1 | 2001 | Scrapfly | | |
| 30 | +| `autousagee` | [autousagee.md](autousagee.md) | 1 | 11924 | requests direct | | |
| 31 | +| `cargurus` | [cargurus.md](cargurus.md) | 1 | 616 | Scrapfly | | |
| 32 | +| `classeauto` | [classeauto.md](classeauto.md) | 1 | 105 | requests direct | | |
| 33 | +| `clubautozone` | [clubautozone.md](clubautozone.md) | 1 | 53 | requests direct | | |
| 34 | +| `desmeules` | [desmeules.md](desmeules.md) | 1 | 255 | requests direct | | |
| 35 | +| `dupontford` | [dupontford.md](dupontford.md) | 1 | 72 | requests direct | | |
| 36 | +| `hgregoire` | [hgregoire.md](hgregoire.md) | 1 | 1688 | Scrapfly | | |
| 37 | +| `jlkauto` | [jlkauto.md](jlkauto.md) | 1 | 72 | requests direct | | |
| 38 | +| `kijiji` | [kijiji.md](kijiji.md) | 1 | 3081 | requests direct | | |
| 39 | +| `leprixdugros` | [leprixdugros.md](leprixdugros.md) | 1 | 1159 | Scrapfly | | |
| 40 | +| `megacentre` | [megacentre.md](megacentre.md) | 1 | 471 | requests direct | | |
| 41 | +| `montjolichrysler` | [montjolichrysler.md](montjolichrysler.md) | 1 | 428 | requests direct | | |
| 42 | +| `occasionbeaucage` | [occasionbeaucage.md](occasionbeaucage.md) | 1 | 1234 | requests direct | | |
| 42 | 43 | | `occasioncharlevoix` | [occasioncharlevoix.md](occasioncharlevoix.md) | 1 | 30 | requests direct | |
| 43 | −| `okaze` | [okaze.md](okaze.md) | 1 | 50 | requests direct | | |
| 44 | −| `otogo` | [otogo.md](otogo.md) | 1 | 23700 | requests direct | | |
| 44 | +| `okaze` | [okaze.md](okaze.md) | 1 | 48 | requests direct | | |
| 45 | +| `otogo` | [otogo.md](otogo.md) | 1 | 23853 | requests direct | | |
| 45 | 46 | | `ototr` | [ototr.md](ototr.md) | 1 | 4 | requests direct | |
| 46 | −| `stefoychrysler` | [stefoychrysler.md](stefoychrysler.md) | 1 | 414 | requests direct | | |
| 47 | −| `yannicklaberge` | [yannicklaberge.md](yannicklaberge.md) | 1 | 17 | requests direct | | |
| 47 | +| `stefoychrysler` | [stefoychrysler.md](stefoychrysler.md) | 1 | 428 | requests direct | | |
| 48 | +| `yannicklaberge` | [yannicklaberge.md](yannicklaberge.md) | 1 | 16 | requests direct | | |
| 48 | 49 | |
| 49 | 50 | ## Fiches transverses |
| 50 | 51 | |
modified
docs/connecteurs/albioccasion.md
+5 −4
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/albioccasion.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 1136 | |
| 9 | +- **Annonces actives (BD)** : 1108 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : microdata schema.org |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, AUTOKA_MAX_PAGES, cache détail BD (detail_cache) |
@@ -32,7 +32,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 32 | 32 | > semaine). AUTOKA_MAX_PAGES limite la pagination liste et |
| 33 | 33 | > AUTOKA_MAX_DETAILS plafonne les vraies requêtes détail par sync. |
| 34 | 34 | |
| 35 | −## Complétude des champs (annonces actives, N = 1 136) | |
| 35 | +## Complétude des champs (annonces actives, N = 1 108) | |
| 36 | 36 | |
| 37 | 37 | | Champ | % rempli | |
| 38 | 38 | |---|---| |
@@ -41,7 +41,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 41 | 41 | | Année | 100.0 % | |
| 42 | 42 | | Kilométrage | 100.0 % | |
| 43 | 43 | | Prix | 100.0 % | |
| 44 | −| Carburant | 5.4 % | | |
| 44 | +| Carburant | 4.9 % | | |
| 45 | 45 | | Boîte (transmission) | 100.0 % | |
| 46 | 46 | | VIN | 100.0 % | |
| 47 | 47 | | Photos | 100.0 % | |
@@ -52,10 +52,11 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 52 | 52 | |
| 53 | 53 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 54 | 54 | |---|---|---|---|---|---|---|---| |
| 55 | −| `albioccasion` | ALBI Occasion | Mascouche | Lanaudière | 1136 | 0 | 2026-08-18 02:15 | OK (1136 trouvés) | | |
| 55 | +| `albioccasion` | ALBI Occasion | Mascouche | Lanaudière | 1108 | 1 | 2026-08-23 13:47 | OK (1108 trouvés) | | |
| 56 | 56 | |
| 57 | 57 | ## Erreurs de synchronisation récentes (sync_log, ok = 0) |
| 58 | 58 | |
| 59 | 59 | | Source | Quand | Message | |
| 60 | 60 | |---|---|---| |
| 61 | +| `albioccasion` | 2026-08-19 15:26 | 502 Server Error: Bad Gateway for url: https://www.albioccasion.com/fr/inventaire/?page=50 | | |
| 61 | 62 | | `albioccasion` | 2026-08-12 10:01 | 429 Client Error: Too Many Requests for url: https://www.albioccasion.com/fr/inventaire/?page=64 | |
modified
docs/connecteurs/autodurocher.md
+1 −1
@@ -51,7 +51,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 51 | 51 | |
| 52 | 52 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 53 | 53 | |---|---|---|---|---|---|---|---| |
| 54 | −| `autodurocher` | Entrepôt Auto Durocher | Mirabel | Laurentides | 196 | 0 | 2026-08-18 02:16 | OK (196 trouvés) | | |
| 54 | +| `autodurocher` | Entrepôt Auto Durocher | Mirabel | Laurentides | 196 | 0 | 2026-08-23 13:48 | OK (196 trouvés) | | |
| 55 | 55 | |
| 56 | 56 | ## Erreurs de synchronisation récentes |
| 57 | 57 | |
modified
docs/connecteurs/automobileendirect.md
+3 −3
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/automobileendirect.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 1687 | |
| 9 | +- **Annonces actives (BD)** : 1683 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, AUTOKA_MAX_PAGES, cache détail BD (detail_cache) |
@@ -37,7 +37,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 37 | 37 | > URL publique d'une fiche : /auto-usage/<slug>/<vin> (route SPA fr). |
| 38 | 38 | > AUTOKA_MAX_PAGES (env) limite le nombre de pages de liste (tests). |
| 39 | 39 | |
| 40 | −## Complétude des champs (annonces actives, N = 1 687) | |
| 40 | +## Complétude des champs (annonces actives, N = 1 683) | |
| 41 | 41 | |
| 42 | 42 | | Champ | % rempli | |
| 43 | 43 | |---|---| |
@@ -57,7 +57,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 57 | 57 | |
| 58 | 58 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 59 | 59 | |---|---|---|---|---|---|---|---| |
| 60 | −| `automobileendirect` | Automobile En Direct | Saint-Constant | Montérégie | 1687 | 0 | 2026-08-18 02:17 | OK (1687 trouvés) | | |
| 60 | +| `automobileendirect` | Automobile En Direct | Saint-Constant | Montérégie | 1683 | 0 | 2026-08-23 13:49 | OK (1683 trouvés) | | |
| 61 | 61 | |
| 62 | 62 | ## Erreurs de synchronisation récentes |
| 63 | 63 | |
modified
docs/connecteurs/autotrader.md
+8 −8
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/autotrader.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 1960 | |
| 9 | +- **Annonces actives (BD)** : 2001 | |
| 10 | 10 | - **Backend de fetch** : Scrapfly |
| 11 | 11 | - **Mécanique détectée** : __NEXT_DATA__ |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_AUTOTRADER_MAX |
@@ -41,27 +41,27 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 41 | 41 | > pages 1-50) ; repli automatique Scrapfly ASP SANS render_js sur 403/429 |
| 42 | 42 | > (~1 crédit/page en cas de blocage seulement — budget nul en régime normal). |
| 43 | 43 | |
| 44 | −## Complétude des champs (annonces actives, N = 1 960) | |
| 44 | +## Complétude des champs (annonces actives, N = 2 001) | |
| 45 | 45 | |
| 46 | 46 | | Champ | % rempli | |
| 47 | 47 | |---|---| |
| 48 | 48 | | Marque | 100.0 % | |
| 49 | 49 | | Modèle | 100.0 % | |
| 50 | 50 | | Année | 99.8 % | |
| 51 | −| Kilométrage | 99.6 % | | |
| 51 | +| Kilométrage | 99.7 % | | |
| 52 | 52 | | Prix | 100.0 % | |
| 53 | −| Carburant | 95.7 % | | |
| 54 | −| Boîte (transmission) | 98.6 % | | |
| 53 | +| Carburant | 93.0 % | | |
| 54 | +| Boîte (transmission) | 97.9 % | | |
| 55 | 55 | | VIN | 0.0 % | |
| 56 | −| Photos | 97.5 % | | |
| 56 | +| Photos | 94.4 % | | |
| 57 | 57 | | Carfax | 0.0 % | |
| 58 | −| GPS (lat/lng) | 91.2 % | | |
| 58 | +| GPS (lat/lng) | 92.4 % | | |
| 59 | 59 | |
| 60 | 60 | ## Sources membres (BD live) |
| 61 | 61 | |
| 62 | 62 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 63 | 63 | |---|---|---|---|---|---|---|---| |
| 64 | −| `autotrader` | AutoTrader.ca / AutoHebdo (Québec) | — | — | 1960 | 0 | 2026-08-18 05:50 | OK (1960 trouvés) | | |
| 64 | +| `autotrader` | AutoTrader.ca / AutoHebdo (Québec) | — | — | 2001 | 0 | 2026-08-23 13:52 | OK (1415 trouvés) | | |
| 65 | 65 | |
| 66 | 66 | ## Erreurs de synchronisation récentes |
| 67 | 67 | |
added
docs/connecteurs/autousagee.md
+78 −0
@@ -0,0 +1,78 @@ | ||
| 1 | +# Module `autousagee` — HTML rendu serveur | |
| 2 | + | |
| 3 | +_Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas éditer à la main._ | |
| 4 | + | |
| 5 | +## Vue d'ensemble | |
| 6 | + | |
| 7 | +- **Fichier** : `autoka/connectors/autousagee.py` | |
| 8 | +- **Sources membres** : 1 | |
| 9 | +- **Annonces actives (BD)** : 11924 | |
| 10 | +- **Backend de fetch** : requests direct (aucun anti-bot) | |
| 11 | +- **Mécanique détectée** : parsing HTML | |
| 12 | +- **Plafonds / cache** : AUTOKA_AUTOUSAGEE_MAX, AUTOKA_MAX_DETAILS, AUTOKA_MAX_PAGES, cache détail BD (detail_cache) | |
| 13 | +- **Classes** : `AutoUsageeQuebec` → `autousagee` | |
| 14 | + | |
| 15 | +## Mécanique (en-tête du module) | |
| 16 | + | |
| 17 | +> connectors/autousagee.py : PORTAIL — AutoUsagee.ca (AMVOQ) | |
| 18 | +> | |
| 19 | +> AutoUsagee.ca est la place de marché officielle de l'AMVOQ (Association | |
| 20 | +> des marchands de véhicules d'occasion du Québec) : ~12 000 annonces de | |
| 21 | +> centaines de petits marchands indépendants dont la plupart n'ont AUCUN | |
| 22 | +> site propre connectable — c'est ici que vit leur inventaire (la même | |
| 23 | +> plateforme alimente les sites `theme_central` déjà connectés et les | |
| 24 | +> images image.autousagee.ca, voir central_dealers.py / yannicklaberge.py). | |
| 25 | +> | |
| 26 | +> Stratégie (HTML rendu serveur ; rate-limit IP agressif : 429 après | |
| 27 | +> ~150 requêtes rapprochées — la chaîne de résilience commune escalade | |
| 28 | +> alors vers Oxylabs résidentiel -cc-CA, vérifié 2026-08-23) : | |
| 29 | +> Liste : GET /recherche?type_id=1&page=N — 15 cartes/page, ~800 pages. | |
| 30 | +> Aucun jeton requis pour le GET (le _token CSRF ne sert qu'aux POST | |
| 31 | +> AJAX). Chaque carte : URL canonique (/vehicule-usagee/<marchand>/ | |
| 32 | +> <id_marchand>/<slug>/<id_annonce>), photo 300px (→ 1024px), prix, | |
| 33 | +> marque/modèle FR (h2), année (<time datetime>), sous-modèle (h3), | |
| 34 | +> km, NOM DU MARCHAND et VILLE — l'annonce est complète sans détail. | |
| 35 | +> Détail (plafonné + cache BD, clé statique v1 — prix/km frais viennent | |
| 36 | +> de la liste) : specs label→valeur (Marque, Modèle, Sous-modèle, | |
| 37 | +> Odomètre, Transmission, Traction, Moteur/Cylindre, Carrosserie, | |
| 38 | +> Portières, Couleurs, Numéro d'unité, Numéro de série = VIN, PDSF, | |
| 39 | +> Consommation, Energie), description libre, galerie 1024px complète, | |
| 40 | +> site web du marchand. Fallback : bloc Contact@Once (data-cao-lpvars) | |
| 41 | +> porte year/make/model/VIN/StockID en JSON. | |
| 42 | +> | |
| 43 | +> type_id=1 = « voiture-camion-vus » seulement (2,3,4 = VR/loisirs/lourd, | |
| 44 | +> volontairement exclus — motoneiges, roulottes, bateaux mêlés aux motos). | |
| 45 | +> | |
| 46 | +> Recouvrement : quelques marchands AMVOQ déjà connectés en direct (Okaze, | |
| 47 | +> theme_central…) republient ici — la dédup VIN inter-sources masque les | |
| 48 | +> doublons, priorité au site du marchand. | |
| 49 | +> | |
| 50 | +> Plafonds : AUTOKA_AUTOUSAGEE_MAX (annonces, défaut 0 = tout), | |
| 51 | +> AUTOKA_MAX_PAGES (pages liste, tests), AUTOKA_MAX_DETAILS (vraies | |
| 52 | +> requêtes détail/sync, défaut 500 — inventaire enrichi progressivement). | |
| 53 | + | |
| 54 | +## Complétude des champs (annonces actives, N = 11 924) | |
| 55 | + | |
| 56 | +| Champ | % rempli | | |
| 57 | +|---|---| | |
| 58 | +| Marque | 99.9 % | | |
| 59 | +| Modèle | 100.0 % | | |
| 60 | +| Année | 99.6 % | | |
| 61 | +| Kilométrage | 100.0 % | | |
| 62 | +| Prix | 99.9 % | | |
| 63 | +| Carburant | 7.9 % | | |
| 64 | +| Boîte (transmission) | 4.2 % | | |
| 65 | +| VIN | 4.2 % | | |
| 66 | +| Photos | 89.2 % | | |
| 67 | +| Carfax | 0.0 % | | |
| 68 | +| GPS (lat/lng) | 87.0 % | | |
| 69 | + | |
| 70 | +## Sources membres (BD live) | |
| 71 | + | |
| 72 | +| Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | | |
| 73 | +|---|---|---|---|---|---|---|---| | |
| 74 | +| `autousagee` | AutoUsagee.ca (AMVOQ) | — | — | 11924 | 251 | 2026-08-23 15:49 | OK (11924 trouvés) | | |
| 75 | + | |
| 76 | +## Erreurs de synchronisation récentes | |
| 77 | + | |
| 78 | +Aucune erreur dans le sync_log pour les sources de ce module. | |
modified
docs/connecteurs/cargurus.md
+15 −13
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/cargurus.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 504 | |
| 9 | +- **Annonces actives (BD)** : 616 | |
| 10 | 10 | - **Backend de fetch** : Scrapfly |
| 11 | 11 | - **Mécanique détectée** : — |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_CARGURUS_MAX |
@@ -37,28 +37,30 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 37 | 37 | > de 12 syncs/jour. Les annonces sorties de la fenêtre passent inactives |
| 38 | 38 | > après le délai de grâce standard (MISS_GRACE). |
| 39 | 39 | |
| 40 | −## Complétude des champs (annonces actives, N = 504) | |
| 40 | +## Complétude des champs (annonces actives, N = 616) | |
| 41 | 41 | |
| 42 | 42 | | Champ | % rempli | |
| 43 | 43 | |---|---| |
| 44 | 44 | | Marque | 100.0 % | |
| 45 | 45 | | Modèle | 100.0 % | |
| 46 | −| Année | 99.8 % | | |
| 47 | −| Kilométrage | 99.6 % | | |
| 48 | −| Prix | 99.4 % | | |
| 49 | −| Carburant | 66.1 % | | |
| 50 | −| Boîte (transmission) | 99.0 % | | |
| 51 | −| VIN | 99.8 % | | |
| 52 | −| Photos | 92.3 % | | |
| 46 | +| Année | 100.0 % | | |
| 47 | +| Kilométrage | 99.4 % | | |
| 48 | +| Prix | 97.4 % | | |
| 49 | +| Carburant | 73.2 % | | |
| 50 | +| Boîte (transmission) | 97.2 % | | |
| 51 | +| VIN | 100.0 % | | |
| 52 | +| Photos | 86.5 % | | |
| 53 | 53 | | Carfax | 0.0 % | |
| 54 | −| GPS (lat/lng) | 97.8 % | | |
| 54 | +| GPS (lat/lng) | 94.8 % | | |
| 55 | 55 | |
| 56 | 56 | ## Sources membres (BD live) |
| 57 | 57 | |
| 58 | 58 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 59 | 59 | |---|---|---|---|---|---|---|---| |
| 60 | −| `cargurus` | CarGurus.ca (Québec) | — | — | 504 | 170 | 2026-08-18 05:55 | OK (504 trouvés) | | |
| 60 | +| `cargurus` | CarGurus.ca (Québec) | — | — | 616 | 170 | 2026-08-23 13:53 | OK (520 trouvés) | | |
| 61 | 61 | |
| 62 | −## Erreurs de synchronisation récentes | |
| 62 | +## Erreurs de synchronisation récentes (sync_log, ok = 0) | |
| 63 | 63 | |
| 64 | −Aucune erreur dans le sync_log pour les sources de ce module. | |
| 64 | +| Source | Quand | Message | | |
| 65 | +|---|---|---| | |
| 66 | +| `cargurus` | 2026-08-19 12:56 | HTTPSConnectionPool(host='api.scrapfly.io', port=443): Read timed out. (read timeout=120) | | |
modified
docs/connecteurs/central_dealers.md
+11 −11
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/central_dealers.py` |
| 8 | 8 | - **Sources membres** : 9 |
| 9 | −- **Annonces actives (BD)** : 345 | |
| 9 | +- **Annonces actives (BD)** : 349 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : parsing HTML, endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS |
@@ -35,7 +35,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 35 | 35 | > 2 = moto, 3 = VR) ; on garde le type 1 + un garde-fou regex sur la |
| 36 | 36 | > catégorie/carrosserie (motoneige, VTT, Classe A/B/C, récréatif…). |
| 37 | 37 | |
| 38 | −## Complétude des champs (annonces actives, N = 345) | |
| 38 | +## Complétude des champs (annonces actives, N = 349) | |
| 39 | 39 | |
| 40 | 40 | | Champ | % rempli | |
| 41 | 41 | |---|---| |
@@ -55,15 +55,15 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 55 | 55 | |
| 56 | 56 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 57 | 57 | |---|---|---|---|---|---|---|---| |
| 58 | −| `autobsl` | Auto BSL | Rimouski | Bas-Saint-Laurent | 55 | 0 | 2026-08-18 02:17 | OK (55 trouvés) | | |
| 59 | −| `autocreditplus` | Auto Crédit Plus | Trois-Rivières | Mauricie | 83 | 0 | 2026-08-18 02:17 | OK (83 trouvés) | | |
| 60 | −| `autosag` | Autosag | Chicoutimi | Saguenay-Lac-Saint-Jean | 5 | 0 | 2026-08-18 02:17 | OK (5 trouvés) | | |
| 61 | −| `autoxtreme` | Auto Xtrême | Montréal | Montréal | 50 | 0 | 2026-08-18 02:17 | OK (50 trouvés) | | |
| 62 | −| `dastousauto` | D'Astous Auto | Montréal | Montréal | 24 | 0 | 2026-08-18 02:17 | OK (24 trouvés) | | |
| 63 | −| `denisauto` | Denis Auto | Gatineau | Outaouais | 37 | 0 | 2026-08-18 02:17 | OK (37 trouvés) | | |
| 64 | −| `fleuryautogroupe` | Fleury Auto Groupe | Gatineau | Outaouais | 60 | 0 | 2026-08-18 02:17 | OK (60 trouvés) | | |
| 65 | −| `jrautotr` | J.R. Auto | Trois-Rivières | Mauricie | 25 | 0 | 2026-08-18 02:17 | OK (25 trouvés) | | |
| 66 | −| `lecentreautoquebec` | Le Centre Auto Québec Plus | Québec | Capitale-Nationale | 6 | 0 | 2026-08-18 02:17 | OK (6 trouvés) | | |
| 58 | +| `autobsl` | Auto BSL | Rimouski | Bas-Saint-Laurent | 54 | 0 | 2026-08-23 13:53 | OK (54 trouvés) | | |
| 59 | +| `autocreditplus` | Auto Crédit Plus | Trois-Rivières | Mauricie | 83 | 0 | 2026-08-23 13:53 | OK (83 trouvés) | | |
| 60 | +| `autosag` | Autosag | Chicoutimi | Saguenay-Lac-Saint-Jean | 5 | 0 | 2026-08-23 13:53 | OK (5 trouvés) | | |
| 61 | +| `autoxtreme` | Auto Xtrême | Montréal | Montréal | 50 | 0 | 2026-08-23 13:53 | OK (50 trouvés) | | |
| 62 | +| `dastousauto` | D'Astous Auto | Montréal | Montréal | 27 | 0 | 2026-08-23 13:53 | OK (27 trouvés) | | |
| 63 | +| `denisauto` | Denis Auto | Gatineau | Outaouais | 37 | 0 | 2026-08-23 13:53 | OK (37 trouvés) | | |
| 64 | +| `fleuryautogroupe` | Fleury Auto Groupe | Gatineau | Outaouais | 63 | 0 | 2026-08-23 13:53 | OK (63 trouvés) | | |
| 65 | +| `jrautotr` | J.R. Auto | Trois-Rivières | Mauricie | 24 | 0 | 2026-08-23 13:53 | OK (24 trouvés) | | |
| 66 | +| `lecentreautoquebec` | Le Centre Auto Québec Plus | Québec | Capitale-Nationale | 6 | 0 | 2026-08-23 13:53 | OK (6 trouvés) | | |
| 67 | 67 | |
| 68 | 68 | ## Erreurs de synchronisation récentes (sync_log, ok = 0) |
| 69 | 69 | |
modified
docs/connecteurs/classeauto.md
+3 −3
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/classeauto.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 109 | |
| 9 | +- **Annonces actives (BD)** : 105 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : aucun |
@@ -30,7 +30,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 30 | 30 | > Filtres de sécurité : vehicle_type_id == 1 (automobile), post_status |
| 31 | 31 | > publish/published, condition != NEW, deleted_at vide. |
| 32 | 32 | |
| 33 | −## Complétude des champs (annonces actives, N = 109) | |
| 33 | +## Complétude des champs (annonces actives, N = 105) | |
| 34 | 34 | |
| 35 | 35 | | Champ | % rempli | |
| 36 | 36 | |---|---| |
@@ -50,7 +50,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 50 | 50 | |
| 51 | 51 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 52 | 52 | |---|---|---|---|---|---|---|---| |
| 53 | −| `classeauto` | Classe Auto | Montréal | Montréal | 109 | 0 | 2026-08-18 02:17 | OK (138 trouvés) | | |
| 53 | +| `classeauto` | Classe Auto | Montréal | Montréal | 105 | 0 | 2026-08-23 13:53 | OK (136 trouvés) | | |
| 54 | 54 | |
| 55 | 55 | ## Erreurs de synchronisation récentes |
| 56 | 56 | |
modified
docs/connecteurs/clubautozone.md
+3 −3
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/clubautozone.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 47 | |
| 9 | +- **Annonces actives (BD)** : 53 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : API JSON interne, endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : aucun |
@@ -24,7 +24,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 24 | 24 | > (l'API VMS directe répond 403 ; le proxy du site est la voie officielle). |
| 25 | 25 | > Réponse JSON riche : prix, km, VIN, moteur, couleurs, URL VDP… 30/page. |
| 26 | 26 | |
| 27 | −## Complétude des champs (annonces actives, N = 47) | |
| 27 | +## Complétude des champs (annonces actives, N = 53) | |
| 28 | 28 | |
| 29 | 29 | | Champ | % rempli | |
| 30 | 30 | |---|---| |
@@ -44,7 +44,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 44 | 44 | |
| 45 | 45 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 46 | 46 | |---|---|---|---|---|---|---|---| |
| 47 | −| `clubautozone` | Club Auto Zone | Longueuil | Montérégie | 47 | 0 | 2026-08-18 02:17 | OK (47 trouvés) | | |
| 47 | +| `clubautozone` | Club Auto Zone | Longueuil | Montérégie | 53 | 0 | 2026-08-23 13:53 | OK (53 trouvés) | | |
| 48 | 48 | |
| 49 | 49 | ## Erreurs de synchronisation récentes |
| 50 | 50 | |
modified
docs/connecteurs/convertus_fc.md
+6 −6
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/convertus_fc.py` |
| 8 | 8 | - **Sources membres** : 3 |
| 9 | −- **Annonces actives (BD)** : 296 | |
| 9 | +- **Annonces actives (BD)** : 322 | |
| 10 | 10 | - **Backend de fetch** : Firecrawl (contournement Cloudflare / rendu JS) |
| 11 | 11 | - **Mécanique détectée** : API JSON interne |
| 12 | 12 | - **Plafonds / cache** : aucun |
@@ -22,7 +22,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 22 | 22 | > par Firecrawl pour franchir Cloudflare. Le JSON revient enveloppé dans |
| 23 | 23 | > un <body> HTML — on l'extrait puis on réutilise le parseur VMS. |
| 24 | 24 | |
| 25 | −## Complétude des champs (annonces actives, N = 296) | |
| 25 | +## Complétude des champs (annonces actives, N = 322) | |
| 26 | 26 | |
| 27 | 27 | | Champ | % rempli | |
| 28 | 28 | |---|---| |
@@ -33,7 +33,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 33 | 33 | | Prix | 100.0 % | |
| 34 | 34 | | Carburant | 100.0 % | |
| 35 | 35 | | Boîte (transmission) | 100.0 % | |
| 36 | −| VIN | 99.3 % | | |
| 36 | +| VIN | 99.4 % | | |
| 37 | 37 | | Photos | 100.0 % | |
| 38 | 38 | | Carfax | 0.0 % | |
| 39 | 39 | | GPS (lat/lng) | 100.0 % | |
@@ -42,9 +42,9 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 42 | 42 | |
| 43 | 43 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 44 | 44 | |---|---|---|---|---|---|---|---| |
| 45 | −| `autoflash` | AutoFlash | Saint-Hubert | Montérégie | 137 | 0 | 2026-08-18 02:17 | OK (137 trouvés) | | |
| 46 | −| `bernieresauto` | Bernières Auto | Saint-Nicolas | Chaudière-Appalaches | 60 | 0 | 2026-08-18 02:17 | OK (60 trouvés) | | |
| 47 | −| `complexeautoplus` | Complexe Auto Plus | Saint-Jérôme | Laurentides | 99 | 0 | 2026-08-18 02:17 | OK (99 trouvés) | | |
| 45 | +| `autoflash` | AutoFlash | Saint-Hubert | Montérégie | 153 | 0 | 2026-08-23 13:53 | OK (153 trouvés) | | |
| 46 | +| `bernieresauto` | Bernières Auto | Saint-Nicolas | Chaudière-Appalaches | 68 | 0 | 2026-08-23 13:53 | OK (68 trouvés) | | |
| 47 | +| `complexeautoplus` | Complexe Auto Plus | Saint-Jérôme | Laurentides | 101 | 0 | 2026-08-23 13:53 | OK (101 trouvés) | | |
| 48 | 48 | |
| 49 | 49 | ## Erreurs de synchronisation récentes (sync_log, ok = 0) |
| 50 | 50 | |
modified
docs/connecteurs/d2c_dealers.md
+71 −71
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/d2c_dealers.py` |
| 8 | 8 | - **Sources membres** : 66 |
| 9 | −- **Annonces actives (BD)** : 5348 | |
| 9 | +- **Annonces actives (BD)** : 5274 | |
| 10 | 10 | - **Backend de fetch** : requests direct — Firecrawl par source au besoin (`use_firecrawl`, sites derrière Cloudflare) |
| 11 | 11 | - **Mécanique détectée** : sitemap, JSON-LD schema.org, endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, cache détail BD (detail_cache) |
@@ -40,7 +40,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 40 | 40 | > Le lastmod du sitemap est bumpé quotidiennement par D2C (inutilisable |
| 41 | 41 | > comme clé de cache) — d'où la clé temporelle hebdomadaire. |
| 42 | 42 | |
| 43 | −## Complétude des champs (annonces actives, N = 5 348) | |
| 43 | +## Complétude des champs (annonces actives, N = 5 274) | |
| 44 | 44 | |
| 45 | 45 | | Champ | % rempli | |
| 46 | 46 | |---|---| |
@@ -48,84 +48,84 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 48 | 48 | | Modèle | 100.0 % | |
| 49 | 49 | | Année | 100.0 % | |
| 50 | 50 | | Kilométrage | 100.0 % | |
| 51 | −| Prix | 99.6 % | | |
| 51 | +| Prix | 99.3 % | | |
| 52 | 52 | | Carburant | 99.9 % | |
| 53 | 53 | | Boîte (transmission) | 99.8 % | |
| 54 | −| VIN | 99.3 % | | |
| 54 | +| VIN | 98.8 % | | |
| 55 | 55 | | Photos | 99.5 % | |
| 56 | −| Carfax | 34.5 % | | |
| 56 | +| Carfax | 34.1 % | | |
| 57 | 57 | | GPS (lat/lng) | 100.0 % | |
| 58 | 58 | |
| 59 | 59 | ## Sources membres (BD live) |
| 60 | 60 | |
| 61 | 61 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 62 | 62 | |---|---|---|---|---|---|---|---| |
| 63 | −| `abitibiautocredit` | Abitibi Auto Crédit | Rouyn-Noranda | Abitibi-Témiscamingue | 91 | 85 | 2026-08-18 03:05 | OK (89 trouvés) | | |
| 64 | −| `almahonda` | Alma Honda | Alma | Saguenay–Lac-Saint-Jean | 41 | 0 | 2026-08-18 05:14 | OK (40 trouvés) | | |
| 65 | −| `autoquebeclevis` | AutoQuébec Occasion Lévis | Lévis | Chaudière-Appalaches | 77 | 0 | 2026-08-18 02:59 | OK (76 trouvés) | | |
| 66 | −| `autoquebectm` | AutoQuébec Occasion Thetford Mines | Thetford Mines | Chaudière-Appalaches | 35 | 0 | 2026-08-18 03:01 | OK (35 trouvés) | | |
| 67 | −| `autosevasion` | Autos Évasion | Sherbrooke | Estrie | 51 | 0 | 2026-08-18 02:46 | OK (50 trouvés) | | |
| 68 | −| `autosoccasionld` | Autos Occasion LD | Lévis | Chaudière-Appalaches | 158 | 0 | 2026-08-18 02:53 | OK (158 trouvés) | | |
| 69 | −| `autosthubert` | Auto St-Hubert | Saint-Hubert | Montérégie | 143 | 0 | 2026-08-18 03:22 | OK (138 trouvés) | | |
| 70 | −| `autovilleneuve` | Automobile Villeneuve Amqui | Amqui | Bas-Saint-Laurent | 5 | 0 | 2026-08-18 05:33 | OK (5 trouvés) | | |
| 71 | −| `berniercrepeau` | Bernier Crépeau | Trois-Rivières | Mauricie | 31 | 0 | 2026-08-18 03:27 | OK (29 trouvés) | | |
| 72 | −| `charlesbourgtoyota` | Charlesbourg Toyota | Québec | Capitale-Nationale | 100 | 0 | 2026-08-18 05:25 | OK (99 trouvés) | | |
| 73 | −| `charlevoixtoyota` | Charlevoix Toyota | La Malbaie | Capitale-Nationale | 53 | 0 | 2026-08-18 05:33 | OK (53 trouvés) | | |
| 74 | −| `chomedeytoyota` | Chomedey Toyota Laval | Laval | Laval | 68 | 0 | 2026-08-18 03:30 | OK (68 trouvés) | | |
| 75 | −| `drummondvilleford` | Drummondville Ford | Drummondville | Centre-du-Québec | 55 | 0 | 2026-08-18 03:32 | OK (54 trouvés) | | |
| 76 | −| `drummondvillevw` | Drummondville Volkswagen | Drummondville | Centre-du-Québec | 95 | 0 | 2026-08-18 03:36 | OK (94 trouvés) | | |
| 77 | −| `dubechrysler` | Dubé Chrysler | Rivière-du-Loup | Bas-Saint-Laurent | 165 | 0 | 2026-08-18 03:43 | OK (164 trouvés) | | |
| 78 | −| `ducloslongueuil` | Duclos Longueuil Chrysler | Longueuil | Montérégie | 82 | 0 | 2026-08-18 03:47 | OK (81 trouvés) | | |
| 79 | −| `dupontautomobile` | Dupont Automobile | Alma | Saguenay–Lac-Saint-Jean | 56 | 0 | 2026-08-18 05:12 | OK (56 trouvés) | | |
| 80 | −| `dynastiehyundai` | Dynastie Hyundai | Rouyn-Noranda | Abitibi-Témiscamingue | 34 | 33 | 2026-08-18 03:48 | OK (34 trouvés) | | |
| 81 | −| `equipeformule` | Équipe Formule | Rimouski | Bas-Saint-Laurent | 71 | 0 | 2026-08-18 02:44 | OK (69 trouvés) | | |
| 82 | −| `fichaultkia` | Fichault Kia | Châteauguay | Montérégie | 37 | 0 | 2026-08-18 03:50 | OK (37 trouvés) | | |
| 83 | −| `forceoccasion` | Force Occasion | Québec | Capitale-Nationale | 505 | 1 | 2026-08-18 02:20 | OK (490 trouvés) | | |
| 84 | −| `fordthetford` | Ford Thetford | Thetford Mines | Chaudière-Appalaches | 33 | 0 | 2026-08-18 03:51 | OK (33 trouvés) | | |
| 85 | −| `gaspesiehyundai` | Gaspésie Hyundai | Bonaventure | Gaspésie–Îles-de-la-Madeleine | 35 | 31 | 2026-08-18 03:53 | OK (34 trouvés) | | |
| 86 | −| `gaspetoyota` | Gaspé Toyota | Gaspé | Gaspésie–Îles-de-la-Madeleine | 12 | 0 | 2026-08-18 03:51 | OK (12 trouvés) | | |
| 87 | −| `gervaisauto` | Gervais Auto | Shawinigan | Mauricie | 559 | 0 | 2026-08-18 02:41 | OK (548 trouvés) | | |
| 88 | −| `girardautos` | Girard Autos | Trois-Rivières | Mauricie | 20 | 0 | 2026-08-18 02:17 | OK (20 trouvés) | | |
| 89 | −| `granbytoyota` | Granby Toyota | Granby | Montérégie | 21 | 0 | 2026-08-18 03:54 | OK (20 trouvés) | | |
| 90 | −| `grandportage` | Groupe Grand-Portage | Rivière-du-Loup | Bas-Saint-Laurent | 114 | 0 | 2026-08-18 03:58 | OK (108 trouvés) | | |
| 91 | −| `groupemotion` | Groupe Motion | Longueuil | Montérégie | 73 | 0 | 2026-08-18 04:01 | OK (71 trouvés) | | |
| 92 | −| `groupepaquin` | Groupe Paquin | Rouyn-Noranda | Abitibi-Témiscamingue | 50 | 0 | 2026-08-18 04:03 | OK (50 trouvés) | | |
| 93 | −| `hondacharlesbourg` | Honda Charlesbourg | Québec | Capitale-Nationale | 15 | 0 | 2026-08-18 05:25 | OK (14 trouvés) | | |
| 94 | −| `hondacharlevoix` | Honda Charlevoix | La Malbaie | Capitale-Nationale | 36 | 0 | 2026-08-18 05:30 | OK (36 trouvés) | | |
| 95 | −| `hondanewrichmond` | Honda New Richmond | New Richmond | Gaspésie–Îles-de-la-Madeleine | 60 | 0 | 2026-08-18 05:16 | OK (60 trouvés) | | |
| 96 | −| `hullhyundai` | Hull Hyundai | Gatineau | Outaouais | 102 | 0 | 2026-08-18 04:07 | OK (98 trouvés) | | |
| 97 | −| `hyundaibeauce` | Hyundai Beauce | Saint-Georges | Chaudière-Appalaches | 32 | 0 | 2026-08-18 04:08 | OK (31 trouvés) | | |
| 98 | −| `hyundaicharlevoix` | Hyundai Charlevoix | Baie-Saint-Paul | Capitale-Nationale | 22 | 0 | 2026-08-18 05:31 | OK (21 trouvés) | | |
| 99 | −| `hyundaidrummondville` | Hyundai Drummondville | Drummondville | Centre-du-Québec | 92 | 0 | 2026-08-18 04:12 | OK (88 trouvés) | | |
| 100 | −| `hyundailanaudiere` | Hyundai Lanaudière | Joliette | Lanaudière | 60 | 0 | 2026-08-18 04:15 | OK (60 trouvés) | | |
| 101 | −| `hyundailongueuil` | Hyundai Longueuil | Longueuil | Montérégie | 17 | 0 | 2026-08-18 04:15 | OK (17 trouvés) | | |
| 102 | −| `hyundaistjerome` | Hyundai St-Jérôme | Mirabel | Laurentides | 122 | 0 | 2026-08-18 04:20 | OK (114 trouvés) | | |
| 103 | −| `jeandumas` | Jean Dumas Multiconcessionnaire | Alma | Saguenay–Lac-Saint-Jean | 108 | 108 | 2026-08-18 04:24 | OK (100 trouvés) | | |
| 104 | −| `jeandumasfordbc` | Jean Dumas Ford Baie-Comeau | Baie-Comeau | Côte-Nord | 108 | 76 | 2026-08-18 04:28 | OK (100 trouvés) | | |
| 105 | −| `jeandumashondabc` | Jean Dumas Honda Baie-Comeau | Baie-Comeau | Côte-Nord | 108 | 32 | 2026-08-18 04:33 | OK (100 trouvés) | | |
| 106 | −| `joliettemitsubishi` | Joliette Mitsubishi | Joliette | Lanaudière | 72 | 0 | 2026-08-18 04:35 | OK (72 trouvés) | | |
| 107 | −| `kiabeauport` | Kia Beauport | Québec | Capitale-Nationale | 72 | 0 | 2026-08-18 05:28 | OK (72 trouvés) | | |
| 108 | −| `kiajoliette` | Kia Joliette | Joliette | Lanaudière | 60 | 0 | 2026-08-18 04:38 | OK (54 trouvés) | | |
| 109 | −| `lamihonda` | L'Ami Honda | Rouyn-Noranda | Abitibi-Témiscamingue | 92 | 0 | 2026-08-18 04:42 | OK (90 trouvés) | | |
| 110 | −| `leoautomobile` | Léo Automobile | Chicoutimi | Saguenay–Lac-Saint-Jean | 67 | 0 | 2026-08-18 04:44 | OK (64 trouvés) | | |
| 111 | −| `levisautos` | Lévis Autos | Lévis | Chaudière-Appalaches | 91 | 0 | 2026-08-18 02:56 | OK (83 trouvés) | | |
| 112 | −| `levistoyota` | Lévis Toyota | Lévis | Chaudière-Appalaches | 45 | 0 | 2026-08-18 04:46 | OK (45 trouvés) | | |
| 113 | −| `longueuilhonda` | Longueuil Honda | Longueuil | Montérégie | 49 | 0 | 2026-08-18 04:48 | OK (49 trouvés) | | |
| 114 | −| `mferlandauto` | M. Ferland Auto | Sherbrooke | Estrie | 14 | 0 | 2026-08-18 02:47 | OK (13 trouvés) | | |
| 115 | −| `nicoloccasion` | Nicol Occasion | La Sarre | Abitibi-Témiscamingue | 57 | 0 | 2026-08-18 03:07 | OK (57 trouvés) | | |
| 116 | −| `olivierchryslerbc` | Olivier Chrysler Baie-Comeau | Baie-Comeau | Côte-Nord | 40 | 0 | 2026-08-18 04:50 | OK (37 trouvés) | | |
| 117 | −| `olivierhyundaibc` | Olivier Hyundai Baie-Comeau | Baie-Comeau | Côte-Nord | 20 | 0 | 2026-08-18 05:17 | OK (20 trouvés) | | |
| 118 | −| `olivieroccasionseptiles` | Olivier Occasion Sept-Îles | Sept-Îles | Côte-Nord | 89 | 0 | 2026-08-18 05:21 | OK (86 trouvés) | | |
| 119 | −| `poirieroccasion` | Poirier Occasion | Val-d'Or | Abitibi-Témiscamingue | 231 | 0 | 2026-08-18 03:16 | OK (230 trouvés) | | |
| 120 | −| `sherbrookeautooccasion` | Sherbrooke Auto Occasion | Sherbrooke | Estrie | 91 | 0 | 2026-08-18 03:26 | OK (90 trouvés) | | |
| 121 | −| `stgeorgesgm` | St-Georges Chevrolet Buick GMC | Saint-Georges | Chaudière-Appalaches | 32 | 0 | 2026-08-18 04:51 | OK (32 trouvés) | | |
| 122 | −| `stjeromemitsubishi` | St-Jérôme Mitsubishi | Saint-Jérôme | Laurentides | 136 | 0 | 2026-08-18 04:56 | OK (129 trouvés) | | |
| 123 | −| `subaruvictoriaville` | Subaru Victoriaville | Victoriaville | Centre-du-Québec | 44 | 0 | 2026-08-18 04:58 | OK (42 trouvés) | | |
| 124 | −| `toyotabdc` | Toyota Baie des Chaleurs | Caplan | Gaspésie–Îles-de-la-Madeleine | 41 | 4 | 2026-08-18 05:00 | OK (35 trouvés) | | |
| 125 | −| `troisriviereshonda` | Trois-Rivières Honda | Trois-Rivières | Mauricie | 80 | 0 | 2026-08-18 05:03 | OK (74 trouvés) | | |
| 126 | −| `trtoyota` | Trois-Rivières Toyota | Trois-Rivières | Mauricie | 61 | 0 | 2026-08-18 05:05 | OK (57 trouvés) | | |
| 127 | −| `vaudreuilvw` | Vaudreuil Volkswagen | Vaudreuil-Dorion | Montérégie | 42 | 0 | 2026-08-18 05:07 | OK (42 trouvés) | | |
| 128 | −| `vwsherbrooke` | VW Sherbrooke | Sherbrooke | Estrie | 70 | 0 | 2026-08-18 05:10 | OK (70 trouvés) | | |
| 63 | +| `abitibiautocredit` | Abitibi Auto Crédit | Rouyn-Noranda | Abitibi-Témiscamingue | 93 | 88 | 2026-08-23 13:53 | OK (93 trouvés) | | |
| 64 | +| `almahonda` | Alma Honda | Alma | Saguenay–Lac-Saint-Jean | 32 | 0 | 2026-08-23 13:53 | OK (32 trouvés) | | |
| 65 | +| `autoquebeclevis` | AutoQuébec Occasion Lévis | Lévis | Chaudière-Appalaches | 75 | 0 | 2026-08-23 13:53 | OK (75 trouvés) | | |
| 66 | +| `autoquebectm` | AutoQuébec Occasion Thetford Mines | Thetford Mines | Chaudière-Appalaches | 35 | 0 | 2026-08-23 13:53 | OK (35 trouvés) | | |
| 67 | +| `autosevasion` | Autos Évasion | Sherbrooke | Estrie | 53 | 0 | 2026-08-23 13:53 | OK (53 trouvés) | | |
| 68 | +| `autosoccasionld` | Autos Occasion LD | Lévis | Chaudière-Appalaches | 169 | 0 | 2026-08-23 13:53 | OK (169 trouvés) | | |
| 69 | +| `autosthubert` | Auto St-Hubert | Saint-Hubert | Montérégie | 136 | 0 | 2026-08-23 13:53 | OK (136 trouvés) | | |
| 70 | +| `autovilleneuve` | Automobile Villeneuve Amqui | Amqui | Bas-Saint-Laurent | 5 | 0 | 2026-08-23 13:53 | OK (5 trouvés) | | |
| 71 | +| `berniercrepeau` | Bernier Crépeau | Trois-Rivières | Mauricie | 25 | 0 | 2026-08-23 13:53 | OK (25 trouvés) | | |
| 72 | +| `charlesbourgtoyota` | Charlesbourg Toyota | Québec | Capitale-Nationale | 99 | 0 | 2026-08-23 13:53 | OK (99 trouvés) | | |
| 73 | +| `charlevoixtoyota` | Charlevoix Toyota | La Malbaie | Capitale-Nationale | 54 | 0 | 2026-08-23 13:53 | OK (54 trouvés) | | |
| 74 | +| `chomedeytoyota` | Chomedey Toyota Laval | Laval | Laval | 64 | 0 | 2026-08-23 13:53 | OK (64 trouvés) | | |
| 75 | +| `drummondvilleford` | Drummondville Ford | Drummondville | Centre-du-Québec | 49 | 0 | 2026-08-23 13:53 | OK (49 trouvés) | | |
| 76 | +| `drummondvillevw` | Drummondville Volkswagen | Drummondville | Centre-du-Québec | 97 | 0 | 2026-08-23 13:53 | OK (97 trouvés) | | |
| 77 | +| `dubechrysler` | Dubé Chrysler | Rivière-du-Loup | Bas-Saint-Laurent | 161 | 0 | 2026-08-23 13:53 | OK (161 trouvés) | | |
| 78 | +| `ducloslongueuil` | Duclos Longueuil Chrysler | Longueuil | Montérégie | 80 | 0 | 2026-08-23 13:53 | OK (80 trouvés) | | |
| 79 | +| `dupontautomobile` | Dupont Automobile | Alma | Saguenay–Lac-Saint-Jean | 55 | 0 | 2026-08-23 13:53 | OK (55 trouvés) | | |
| 80 | +| `dynastiehyundai` | Dynastie Hyundai | Rouyn-Noranda | Abitibi-Témiscamingue | 32 | 31 | 2026-08-23 13:53 | OK (32 trouvés) | | |
| 81 | +| `equipeformule` | Équipe Formule | Rimouski | Bas-Saint-Laurent | 64 | 0 | 2026-08-23 13:53 | OK (64 trouvés) | | |
| 82 | +| `fichaultkia` | Fichault Kia | Châteauguay | Montérégie | 40 | 0 | 2026-08-23 13:53 | OK (40 trouvés) | | |
| 83 | +| `forceoccasion` | Force Occasion | Québec | Capitale-Nationale | 518 | 0 | 2026-08-23 13:53 | OK (518 trouvés) | | |
| 84 | +| `fordthetford` | Ford Thetford | Thetford Mines | Chaudière-Appalaches | 36 | 0 | 2026-08-23 13:53 | OK (36 trouvés) | | |
| 85 | +| `gaspesiehyundai` | Gaspésie Hyundai | Bonaventure | Gaspésie–Îles-de-la-Madeleine | 33 | 22 | 2026-08-23 13:53 | OK (33 trouvés) | | |
| 86 | +| `gaspetoyota` | Gaspé Toyota | Gaspé | Gaspésie–Îles-de-la-Madeleine | 13 | 0 | 2026-08-23 13:53 | OK (13 trouvés) | | |
| 87 | +| `gervaisauto` | Gervais Auto | Shawinigan | Mauricie | 534 | 0 | 2026-08-23 13:53 | OK (534 trouvés) | | |
| 88 | +| `girardautos` | Girard Autos | Trois-Rivières | Mauricie | 21 | 0 | 2026-08-23 13:53 | OK (21 trouvés) | | |
| 89 | +| `granbytoyota` | Granby Toyota | Granby | Montérégie | 19 | 0 | 2026-08-23 13:53 | OK (19 trouvés) | | |
| 90 | +| `grandportage` | Groupe Grand-Portage | Rivière-du-Loup | Bas-Saint-Laurent | 101 | 0 | 2026-08-23 13:53 | OK (101 trouvés) | | |
| 91 | +| `groupemotion` | Groupe Motion | Longueuil | Montérégie | 80 | 0 | 2026-08-23 13:53 | OK (80 trouvés) | | |
| 92 | +| `groupepaquin` | Groupe Paquin | Rouyn-Noranda | Abitibi-Témiscamingue | 49 | 0 | 2026-08-23 13:53 | OK (49 trouvés) | | |
| 93 | +| `hondacharlesbourg` | Honda Charlesbourg | Québec | Capitale-Nationale | 14 | 0 | 2026-08-23 13:53 | OK (14 trouvés) | | |
| 94 | +| `hondacharlevoix` | Honda Charlevoix | La Malbaie | Capitale-Nationale | 39 | 0 | 2026-08-23 13:53 | OK (39 trouvés) | | |
| 95 | +| `hondanewrichmond` | Honda New Richmond | New Richmond | Gaspésie–Îles-de-la-Madeleine | 62 | 0 | 2026-08-23 13:53 | OK (62 trouvés) | | |
| 96 | +| `hullhyundai` | Hull Hyundai | Gatineau | Outaouais | 101 | 0 | 2026-08-23 13:53 | OK (101 trouvés) | | |
| 97 | +| `hyundaibeauce` | Hyundai Beauce | Saint-Georges | Chaudière-Appalaches | 27 | 0 | 2026-08-23 13:53 | OK (27 trouvés) | | |
| 98 | +| `hyundaicharlevoix` | Hyundai Charlevoix | Baie-Saint-Paul | Capitale-Nationale | 19 | 0 | 2026-08-23 13:53 | OK (19 trouvés) | | |
| 99 | +| `hyundaidrummondville` | Hyundai Drummondville | Drummondville | Centre-du-Québec | 95 | 0 | 2026-08-23 13:53 | OK (95 trouvés) | | |
| 100 | +| `hyundailanaudiere` | Hyundai Lanaudière | Joliette | Lanaudière | 59 | 0 | 2026-08-23 13:53 | OK (59 trouvés) | | |
| 101 | +| `hyundailongueuil` | Hyundai Longueuil | Longueuil | Montérégie | 21 | 0 | 2026-08-23 13:53 | OK (21 trouvés) | | |
| 102 | +| `hyundaistjerome` | Hyundai St-Jérôme | Mirabel | Laurentides | 115 | 0 | 2026-08-23 13:53 | OK (115 trouvés) | | |
| 103 | +| `jeandumas` | Jean Dumas Multiconcessionnaire | Alma | Saguenay–Lac-Saint-Jean | 114 | 114 | 2026-08-23 13:53 | OK (114 trouvés) | | |
| 104 | +| `jeandumasfordbc` | Jean Dumas Ford Baie-Comeau | Baie-Comeau | Côte-Nord | 114 | 90 | 2026-08-23 13:53 | OK (114 trouvés) | | |
| 105 | +| `jeandumashondabc` | Jean Dumas Honda Baie-Comeau | Baie-Comeau | Côte-Nord | 114 | 24 | 2026-08-23 13:53 | OK (114 trouvés) | | |
| 106 | +| `joliettemitsubishi` | Joliette Mitsubishi | Joliette | Lanaudière | 74 | 0 | 2026-08-23 13:53 | OK (74 trouvés) | | |
| 107 | +| `kiabeauport` | Kia Beauport | Québec | Capitale-Nationale | 77 | 0 | 2026-08-23 13:53 | OK (77 trouvés) | | |
| 108 | +| `kiajoliette` | Kia Joliette | Joliette | Lanaudière | 59 | 0 | 2026-08-23 13:53 | OK (59 trouvés) | | |
| 109 | +| `lamihonda` | L'Ami Honda | Rouyn-Noranda | Abitibi-Témiscamingue | 93 | 0 | 2026-08-23 13:53 | OK (93 trouvés) | | |
| 110 | +| `leoautomobile` | Léo Automobile | Chicoutimi | Saguenay–Lac-Saint-Jean | 57 | 0 | 2026-08-23 13:53 | OK (57 trouvés) | | |
| 111 | +| `levisautos` | Lévis Autos | Lévis | Chaudière-Appalaches | 75 | 0 | 2026-08-23 13:53 | OK (75 trouvés) | | |
| 112 | +| `levistoyota` | Lévis Toyota | Lévis | Chaudière-Appalaches | 43 | 0 | 2026-08-23 13:53 | OK (43 trouvés) | | |
| 113 | +| `longueuilhonda` | Longueuil Honda | Longueuil | Montérégie | 48 | 0 | 2026-08-23 13:53 | OK (48 trouvés) | | |
| 114 | +| `mferlandauto` | M. Ferland Auto | Sherbrooke | Estrie | 17 | 0 | 2026-08-23 13:53 | OK (17 trouvés) | | |
| 115 | +| `nicoloccasion` | Nicol Occasion | La Sarre | Abitibi-Témiscamingue | 65 | 0 | 2026-08-23 13:53 | OK (65 trouvés) | | |
| 116 | +| `olivierchryslerbc` | Olivier Chrysler Baie-Comeau | Baie-Comeau | Côte-Nord | 32 | 0 | 2026-08-23 13:53 | OK (32 trouvés) | | |
| 117 | +| `olivierhyundaibc` | Olivier Hyundai Baie-Comeau | Baie-Comeau | Côte-Nord | 20 | 0 | 2026-08-23 13:53 | OK (20 trouvés) | | |
| 118 | +| `olivieroccasionseptiles` | Olivier Occasion Sept-Îles | Sept-Îles | Côte-Nord | 91 | 0 | 2026-08-23 13:53 | OK (91 trouvés) | | |
| 119 | +| `poirieroccasion` | Poirier Occasion | Val-d'Or | Abitibi-Témiscamingue | 230 | 0 | 2026-08-23 13:53 | OK (230 trouvés) | | |
| 120 | +| `sherbrookeautooccasion` | Sherbrooke Auto Occasion | Sherbrooke | Estrie | 85 | 0 | 2026-08-23 13:53 | OK (85 trouvés) | | |
| 121 | +| `stgeorgesgm` | St-Georges Chevrolet Buick GMC | Saint-Georges | Chaudière-Appalaches | 30 | 0 | 2026-08-23 13:53 | OK (30 trouvés) | | |
| 122 | +| `stjeromemitsubishi` | St-Jérôme Mitsubishi | Saint-Jérôme | Laurentides | 149 | 0 | 2026-08-23 13:53 | OK (149 trouvés) | | |
| 123 | +| `subaruvictoriaville` | Subaru Victoriaville | Victoriaville | Centre-du-Québec | 44 | 0 | 2026-08-23 13:53 | OK (44 trouvés) | | |
| 124 | +| `toyotabdc` | Toyota Baie des Chaleurs | Caplan | Gaspésie–Îles-de-la-Madeleine | 36 | 11 | 2026-08-23 13:53 | OK (36 trouvés) | | |
| 125 | +| `troisriviereshonda` | Trois-Rivières Honda | Trois-Rivières | Mauricie | 64 | 0 | 2026-08-23 13:53 | OK (64 trouvés) | | |
| 126 | +| `trtoyota` | Trois-Rivières Toyota | Trois-Rivières | Mauricie | 54 | 0 | 2026-08-23 13:53 | OK (54 trouvés) | | |
| 127 | +| `vaudreuilvw` | Vaudreuil Volkswagen | Vaudreuil-Dorion | Montérégie | 38 | 0 | 2026-08-23 13:53 | OK (38 trouvés) | | |
| 128 | +| `vwsherbrooke` | VW Sherbrooke | Sherbrooke | Estrie | 77 | 0 | 2026-08-23 13:53 | OK (77 trouvés) | | |
| 129 | 129 | |
| 130 | 130 | ## Erreurs de synchronisation récentes (sync_log, ok = 0) |
| 131 | 131 | |
modified
docs/connecteurs/desmeules.md
+4 −4
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/desmeules.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 244 | |
| 9 | +- **Annonces actives (BD)** : 255 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : flux RSS, microdata schema.org |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, cache détail BD (detail_cache) |
@@ -35,7 +35,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 35 | 35 | > changent pas ; le prix frais vient du RSS). AUTOKA_MAX_DETAILS (env) |
| 36 | 36 | > plafonne les vraies requêtes détail par synchronisation. |
| 37 | 37 | |
| 38 | −## Complétude des champs (annonces actives, N = 244) | |
| 38 | +## Complétude des champs (annonces actives, N = 255) | |
| 39 | 39 | |
| 40 | 40 | | Champ | % rempli | |
| 41 | 41 | |---|---| |
@@ -44,7 +44,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 44 | 44 | | Année | 100.0 % | |
| 45 | 45 | | Kilométrage | 100.0 % | |
| 46 | 46 | | Prix | 98.4 % | |
| 47 | −| Carburant | 83.2 % | | |
| 47 | +| Carburant | 83.9 % | | |
| 48 | 48 | | Boîte (transmission) | 98.4 % | |
| 49 | 49 | | VIN | 99.6 % | |
| 50 | 50 | | Photos | 100.0 % | |
@@ -55,7 +55,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 55 | 55 | |
| 56 | 56 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 57 | 57 | |---|---|---|---|---|---|---|---| |
| 58 | −| `desmeules` | Desmeules Chrysler | Laval | Laval | 244 | 0 | 2026-08-18 05:33 | OK (235 trouvés) | | |
| 58 | +| `desmeules` | Desmeules Chrysler | Laval | Laval | 255 | 0 | 2026-08-23 13:53 | OK (255 trouvés) | | |
| 59 | 59 | |
| 60 | 60 | ## Erreurs de synchronisation récentes |
| 61 | 61 | |
modified
docs/connecteurs/dupontford.md
+5 −5
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/dupontford.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 66 | |
| 9 | +- **Annonces actives (BD)** : 72 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : sitemap, endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : cache détail BD (detail_cache) |
@@ -28,7 +28,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 28 | 28 | > URL détail reconstruite comme dans le sitemap inventory.xml : |
| 29 | 29 | > /vue/used-<année>-<marque>-<modèle>-<id>/. |
| 30 | 30 | |
| 31 | −## Complétude des champs (annonces actives, N = 66) | |
| 31 | +## Complétude des champs (annonces actives, N = 72) | |
| 32 | 32 | |
| 33 | 33 | | Champ | % rempli | |
| 34 | 34 | |---|---| |
@@ -36,11 +36,11 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 36 | 36 | | Modèle | 100.0 % | |
| 37 | 37 | | Année | 100.0 % | |
| 38 | 38 | | Kilométrage | 100.0 % | |
| 39 | −| Prix | 98.5 % | | |
| 39 | +| Prix | 87.5 % | | |
| 40 | 40 | | Carburant | 100.0 % | |
| 41 | 41 | | Boîte (transmission) | 100.0 % | |
| 42 | 42 | | VIN | 100.0 % | |
| 43 | −| Photos | 92.4 % | | |
| 43 | +| Photos | 91.7 % | | |
| 44 | 44 | | Carfax | 0.0 % | |
| 45 | 45 | | GPS (lat/lng) | 100.0 % | |
| 46 | 46 | |
@@ -48,7 +48,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 48 | 48 | |
| 49 | 49 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 50 | 50 | |---|---|---|---|---|---|---|---| |
| 51 | −| `dupontdupontford` | Dupont & Dupont Ford | Gatineau | Outaouais | 66 | 0 | 2026-08-18 05:33 | OK (65 trouvés) | | |
| 51 | +| `dupontdupontford` | Dupont & Dupont Ford | Gatineau | Outaouais | 72 | 0 | 2026-08-23 13:53 | OK (72 trouvés) | | |
| 52 | 52 | |
| 53 | 53 | ## Erreurs de synchronisation récentes |
| 54 | 54 | |
modified
docs/connecteurs/gatsby_dealers.md
+9 −9
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/gatsby_dealers.py` |
| 8 | 8 | - **Sources membres** : 6 |
| 9 | −- **Annonces actives (BD)** : 198 | |
| 9 | +- **Annonces actives (BD)** : 203 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : sitemap, GraphQL, AWS AppSync, page-data Gatsby, endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, AUTOKA_MAX_PAGES |
@@ -34,7 +34,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 34 | 34 | > usedCar -> Vehicle) est hérité de MegaCentreDeLiquidation. |
| 35 | 35 | > AUTOKA_MAX_PAGES (env) limite la pagination AppSync pour les tests. |
| 36 | 36 | |
| 37 | −## Complétude des champs (annonces actives, N = 198) | |
| 37 | +## Complétude des champs (annonces actives, N = 203) | |
| 38 | 38 | |
| 39 | 39 | | Champ | % rempli | |
| 40 | 40 | |---|---| |
@@ -47,19 +47,19 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 47 | 47 | | Boîte (transmission) | 100.0 % | |
| 48 | 48 | | VIN | 100.0 % | |
| 49 | 49 | | Photos | 100.0 % | |
| 50 | −| Carfax | 52.0 % | | |
| 50 | +| Carfax | 49.3 % | | |
| 51 | 51 | | GPS (lat/lng) | 100.0 % | |
| 52 | 52 | |
| 53 | 53 | ## Sources membres (BD live) |
| 54 | 54 | |
| 55 | 55 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 56 | 56 | |---|---|---|---|---|---|---|---| |
| 57 | −| `kiadrummondville` | Kia Drummondville | Drummondville | Centre-du-Québec | 22 | 0 | 2026-08-18 05:33 | OK (22 trouvés) | | |
| 58 | −| `kiagranby` | Kia de Granby | Granby | Montérégie | 19 | 0 | 2026-08-18 05:33 | OK (19 trouvés) | | |
| 59 | −| `mazdadesherbrooke` | Mazda de Sherbrooke | Sherbrooke | Estrie | 54 | 0 | 2026-08-18 05:33 | OK (54 trouvés) | | |
| 60 | −| `mitsubishidrummondville` | Mitsubishi Drummondville | Drummondville | Centre-du-Québec | 14 | 0 | 2026-08-18 05:33 | OK (14 trouvés) | | |
| 61 | −| `nissandrummondville` | Nissan Drummondville | Drummondville | Centre-du-Québec | 44 | 0 | 2026-08-18 05:33 | OK (44 trouvés) | | |
| 62 | −| `nissanvictoriaville` | Nissan de Victoriaville | Victoriaville | Centre-du-Québec | 45 | 0 | 2026-08-18 05:33 | OK (45 trouvés) | | |
| 57 | +| `kiadrummondville` | Kia Drummondville | Drummondville | Centre-du-Québec | 21 | 0 | 2026-08-23 13:53 | OK (21 trouvés) | | |
| 58 | +| `kiagranby` | Kia de Granby | Granby | Montérégie | 17 | 0 | 2026-08-23 13:53 | OK (17 trouvés) | | |
| 59 | +| `mazdadesherbrooke` | Mazda de Sherbrooke | Sherbrooke | Estrie | 54 | 0 | 2026-08-23 13:53 | OK (54 trouvés) | | |
| 60 | +| `mitsubishidrummondville` | Mitsubishi Drummondville | Drummondville | Centre-du-Québec | 15 | 0 | 2026-08-23 13:53 | OK (15 trouvés) | | |
| 61 | +| `nissandrummondville` | Nissan Drummondville | Drummondville | Centre-du-Québec | 52 | 0 | 2026-08-23 13:53 | OK (52 trouvés) | | |
| 62 | +| `nissanvictoriaville` | Nissan de Victoriaville | Victoriaville | Centre-du-Québec | 44 | 0 | 2026-08-23 13:53 | OK (44 trouvés) | | |
| 63 | 63 | |
| 64 | 64 | ## Erreurs de synchronisation récentes |
| 65 | 65 | |
modified
docs/connecteurs/hgregoire.md
+3 −3
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/hgregoire.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 1672 | |
| 9 | +- **Annonces actives (BD)** : 1688 | |
| 10 | 10 | - **Backend de fetch** : Scrapfly |
| 11 | 11 | - **Mécanique détectée** : blob JSON data-class |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, AUTOKA_MAX_PAGES, cache détail BD (detail_cache) |
@@ -45,7 +45,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 45 | 45 | > 300/sync) : l'inventaire complet s'enrichit en ~6 synchronisations. |
| 46 | 46 | > Le véhicule est toujours émis avec les données liste même sans détail. |
| 47 | 47 | |
| 48 | −## Complétude des champs (annonces actives, N = 1 672) | |
| 48 | +## Complétude des champs (annonces actives, N = 1 688) | |
| 49 | 49 | |
| 50 | 50 | | Champ | % rempli | |
| 51 | 51 | |---|---| |
@@ -65,7 +65,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 65 | 65 | |
| 66 | 66 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 67 | 67 | |---|---|---|---|---|---|---|---| |
| 68 | −| `hgregoire` | HGrégoire | St-Léonard | Montréal | 1672 | 2 | 2026-08-18 05:46 | OK (1672 trouvés) | | |
| 68 | +| `hgregoire` | HGrégoire | St-Léonard | Montréal | 1688 | 1 | 2026-08-23 14:06 | OK (1685 trouvés) | | |
| 69 | 69 | |
| 70 | 70 | ## Erreurs de synchronisation récentes |
| 71 | 71 | |
modified
docs/connecteurs/jlkauto.md
+4 −4
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/jlkauto.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 68 | |
| 9 | +- **Annonces actives (BD)** : 72 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : sitemap, JSON-LD schema.org |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, cache détail BD (detail_cache) |
@@ -23,14 +23,14 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 23 | 23 | > complet : prix, VIN, km, transmission, carrosserie, couleurs, moteur. |
| 24 | 24 | > Pages détail mises en cache BD (clé hebdomadaire), comme les sites D2C. |
| 25 | 25 | |
| 26 | −## Complétude des champs (annonces actives, N = 68) | |
| 26 | +## Complétude des champs (annonces actives, N = 72) | |
| 27 | 27 | |
| 28 | 28 | | Champ | % rempli | |
| 29 | 29 | |---|---| |
| 30 | 30 | | Marque | 100.0 % | |
| 31 | 31 | | Modèle | 100.0 % | |
| 32 | 32 | | Année | 100.0 % | |
| 33 | −| Kilométrage | 98.5 % | | |
| 33 | +| Kilométrage | 98.6 % | | |
| 34 | 34 | | Prix | 100.0 % | |
| 35 | 35 | | Carburant | 100.0 % | |
| 36 | 36 | | Boîte (transmission) | 100.0 % | |
@@ -43,7 +43,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 43 | 43 | |
| 44 | 44 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 45 | 45 | |---|---|---|---|---|---|---|---| |
| 46 | −| `jlkauto` | JLK Auto | Montréal | Montréal | 68 | 0 | 2026-08-18 05:46 | OK (68 trouvés) | | |
| 46 | +| `jlkauto` | JLK Auto | Montréal | Montréal | 72 | 0 | 2026-08-23 14:06 | OK (72 trouvés) | | |
| 47 | 47 | |
| 48 | 48 | ## Erreurs de synchronisation récentes |
| 49 | 49 | |
modified
docs/connecteurs/kijiji.md
+9 −9
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/kijiji.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 3005 | |
| 9 | +- **Annonces actives (BD)** : 3081 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : __NEXT_DATA__ |
| 12 | 12 | - **Plafonds / cache** : aucun |
@@ -34,27 +34,27 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 34 | 34 | > Pagination : /b-autos-camions/quebec/page-N/c174l9001?for-sale-by=ownr |
| 35 | 35 | > jusqu'à totalCount (bornée par MAX_PAGES par politesse). |
| 36 | 36 | |
| 37 | −## Complétude des champs (annonces actives, N = 3 005) | |
| 37 | +## Complétude des champs (annonces actives, N = 3 081) | |
| 38 | 38 | |
| 39 | 39 | | Champ | % rempli | |
| 40 | 40 | |---|---| |
| 41 | 41 | | Marque | 100.0 % | |
| 42 | 42 | | Modèle | 100.0 % | |
| 43 | −| Année | 99.6 % | | |
| 43 | +| Année | 99.5 % | | |
| 44 | 44 | | Kilométrage | 100.0 % | |
| 45 | 45 | | Prix | 94.4 % | |
| 46 | −| Carburant | 62.9 % | | |
| 47 | −| Boîte (transmission) | 64.5 % | | |
| 48 | −| VIN | 22.0 % | | |
| 49 | −| Photos | 99.6 % | | |
| 50 | −| Carfax | 2.2 % | | |
| 46 | +| Carburant | 62.7 % | | |
| 47 | +| Boîte (transmission) | 64.0 % | | |
| 48 | +| VIN | 21.4 % | | |
| 49 | +| Photos | 99.7 % | | |
| 50 | +| Carfax | 2.4 % | | |
| 51 | 51 | | GPS (lat/lng) | 100.0 % | |
| 52 | 52 | |
| 53 | 53 | ## Sources membres (BD live) |
| 54 | 54 | |
| 55 | 55 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 56 | 56 | |---|---|---|---|---|---|---|---| |
| 57 | −| `kijiji` | Kijiji (particuliers) | — | — | 3005 | 14 | 2026-08-18 05:49 | OK (3001 trouvés) | | |
| 57 | +| `kijiji` | Kijiji (particuliers) | — | — | 3081 | 11 | 2026-08-23 14:11 | OK (3053 trouvés) | | |
| 58 | 58 | |
| 59 | 59 | ## Erreurs de synchronisation récentes |
| 60 | 60 | |
modified
docs/connecteurs/leprixdugros.md
+6 −6
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/leprixdugros.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 973 | |
| 9 | +- **Annonces actives (BD)** : 1159 | |
| 10 | 10 | - **Backend de fetch** : Scrapfly |
| 11 | 11 | - **Mécanique détectée** : endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, AUTOKA_MAX_PAGES, cache détail BD (detail_cache) |
@@ -42,7 +42,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 42 | 42 | > (hybride/EV/diesel), un moteur « N cylindres X.XL » sans indice électrifié |
| 43 | 43 | > => Essence (sauf modèles hybrides « sans badge » connus, ex. Prius). |
| 44 | 44 | |
| 45 | −## Complétude des champs (annonces actives, N = 973) | |
| 45 | +## Complétude des champs (annonces actives, N = 1 159) | |
| 46 | 46 | |
| 47 | 47 | | Champ | % rempli | |
| 48 | 48 | |---|---| |
@@ -50,19 +50,19 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 50 | 50 | | Modèle | 100.0 % | |
| 51 | 51 | | Année | 100.0 % | |
| 52 | 52 | | Kilométrage | 100.0 % | |
| 53 | −| Prix | 99.9 % | | |
| 54 | −| Carburant | 97.6 % | | |
| 53 | +| Prix | 100.0 % | | |
| 54 | +| Carburant | 98.3 % | | |
| 55 | 55 | | Boîte (transmission) | 100.0 % | |
| 56 | 56 | | VIN | 100.0 % | |
| 57 | 57 | | Photos | 100.0 % | |
| 58 | 58 | | Carfax | 0.0 % | |
| 59 | −| GPS (lat/lng) | 38.4 % | | |
| 59 | +| GPS (lat/lng) | 32.3 % | | |
| 60 | 60 | |
| 61 | 61 | ## Sources membres (BD live) |
| 62 | 62 | |
| 63 | 63 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 64 | 64 | |---|---|---|---|---|---|---|---| |
| 65 | −| `leprixdugros` | Le Prix du Gros | Trois-Rivières | Mauricie | 973 | 738 | 2026-08-18 05:50 | OK (654 trouvés) | | |
| 65 | +| `leprixdugros` | Le Prix du Gros | Trois-Rivières | Mauricie | 1159 | 940 | 2026-08-23 14:12 | OK (1062 trouvés) | | |
| 66 | 66 | |
| 67 | 67 | ## Erreurs de synchronisation récentes (sync_log, ok = 0) |
| 68 | 68 | |
modified
docs/connecteurs/magnetis_dealers.md
+11 −11
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/magnetis_dealers.py` |
| 8 | 8 | - **Sources membres** : 4 |
| 9 | −- **Annonces actives (BD)** : 426 | |
| 9 | +- **Annonces actives (BD)** : 424 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : sitemap, JSON-LD schema.org, blob JSON data-class |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, cache détail BD (detail_cache) |
@@ -32,19 +32,19 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 32 | 32 | > Pages détail en cache BD (clé hebdomadaire) ; AUTOKA_MAX_DETAILS (env) |
| 33 | 33 | > plafonne les vraies requêtes détail par synchronisation. |
| 34 | 34 | |
| 35 | −## Complétude des champs (annonces actives, N = 426) | |
| 35 | +## Complétude des champs (annonces actives, N = 424) | |
| 36 | 36 | |
| 37 | 37 | | Champ | % rempli | |
| 38 | 38 | |---|---| |
| 39 | 39 | | Marque | 100.0 % | |
| 40 | 40 | | Modèle | 100.0 % | |
| 41 | 41 | | Année | 99.8 % | |
| 42 | −| Kilométrage | 98.4 % | | |
| 42 | +| Kilométrage | 98.3 % | | |
| 43 | 43 | | Prix | 100.0 % | |
| 44 | −| Carburant | 94.6 % | | |
| 45 | −| Boîte (transmission) | 88.7 % | | |
| 46 | −| VIN | 73.2 % | | |
| 47 | −| Photos | 66.4 % | | |
| 44 | +| Carburant | 94.1 % | | |
| 45 | +| Boîte (transmission) | 87.7 % | | |
| 46 | +| VIN | 99.5 % | | |
| 47 | +| Photos | 86.6 % | | |
| 48 | 48 | | Carfax | 0.0 % | |
| 49 | 49 | | GPS (lat/lng) | 100.0 % | |
| 50 | 50 | |
@@ -52,10 +52,10 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 52 | 52 | |
| 53 | 53 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 54 | 54 | |---|---|---|---|---|---|---|---| |
| 55 | −| `baiecomeautoyota` | Baie-Comeau Toyota | Baie-Comeau | Côte-Nord | 250 | 0 | 2026-08-18 05:57 | OK (249 trouvés) | | |
| 56 | −| `lussierchevrolet` | Lussier Chevrolet Buick GMC | Saint-Hyacinthe | Montérégie | 83 | 0 | 2026-08-17 23:49 | OK (83 trouvés) | | |
| 57 | −| `sherbrooketoyota` | Sherbrooke Toyota | Sherbrooke | Estrie | 63 | 0 | 2026-08-18 06:00 | OK (63 trouvés) | | |
| 58 | −| `stgnissan` | St-Georges Nissan | Saint-Georges | Chaudière-Appalaches | 30 | 0 | 2026-08-17 23:49 | OK (30 trouvés) | | |
| 55 | +| `baiecomeautoyota` | Baie-Comeau Toyota | Baie-Comeau | Côte-Nord | 254 | 3 | 2026-08-23 14:12 | OK (254 trouvés) | | |
| 56 | +| `lussierchevrolet` | Lussier Chevrolet Buick GMC | Saint-Hyacinthe | Montérégie | 83 | 0 | 2026-08-23 14:12 | OK (83 trouvés) | | |
| 57 | +| `sherbrooketoyota` | Sherbrooke Toyota | Sherbrooke | Estrie | 54 | 0 | 2026-08-23 14:12 | OK (54 trouvés) | | |
| 58 | +| `stgnissan` | St-Georges Nissan | Saint-Georges | Chaudière-Appalaches | 33 | 0 | 2026-08-23 14:12 | OK (33 trouvés) | | |
| 59 | 59 | |
| 60 | 60 | ## Erreurs de synchronisation récentes |
| 61 | 61 | |
modified
docs/connecteurs/megacentre.md
+7 −7
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/megacentre.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 456 | |
| 9 | +- **Annonces actives (BD)** : 471 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : sitemap, page-data Gatsby, endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, cache détail BD (detail_cache) |
@@ -33,7 +33,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 33 | 33 | > hebdomadaire génèrent de vraies requêtes. AUTOKA_MAX_DETAILS (env) |
| 34 | 34 | > plafonne les vraies requêtes détail par synchronisation. |
| 35 | 35 | |
| 36 | −## Complétude des champs (annonces actives, N = 456) | |
| 36 | +## Complétude des champs (annonces actives, N = 471) | |
| 37 | 37 | |
| 38 | 38 | | Champ | % rempli | |
| 39 | 39 | |---|---| |
@@ -42,18 +42,18 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 42 | 42 | | Année | 100.0 % | |
| 43 | 43 | | Kilométrage | 100.0 % | |
| 44 | 44 | | Prix | 100.0 % | |
| 45 | −| Carburant | 99.3 % | | |
| 46 | −| Boîte (transmission) | 97.4 % | | |
| 45 | +| Carburant | 99.4 % | | |
| 46 | +| Boîte (transmission) | 97.5 % | | |
| 47 | 47 | | VIN | 100.0 % | |
| 48 | −| Photos | 99.1 % | | |
| 49 | −| Carfax | 69.3 % | | |
| 48 | +| Photos | 98.1 % | | |
| 49 | +| Carfax | 69.4 % | | |
| 50 | 50 | | GPS (lat/lng) | 100.0 % | |
| 51 | 51 | |
| 52 | 52 | ## Sources membres (BD live) |
| 53 | 53 | |
| 54 | 54 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 55 | 55 | |---|---|---|---|---|---|---|---| |
| 56 | −| `megacentredeliquidation` | Méga Centre de liquidation | Mont-Joli | Bas-Saint-Laurent | 456 | 452 | 2026-08-18 05:33 | OK (453 trouvés) | | |
| 56 | +| `megacentredeliquidation` | Méga Centre de liquidation | Mont-Joli | Bas-Saint-Laurent | 471 | 470 | 2026-08-23 13:53 | OK (471 trouvés) | | |
| 57 | 57 | |
| 58 | 58 | ## Erreurs de synchronisation récentes |
| 59 | 59 | |
modified
docs/connecteurs/montjolichrysler.md
+4 −4
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/montjolichrysler.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 414 | |
| 9 | +- **Annonces actives (BD)** : 428 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : flux RSC Next.js |
| 12 | 12 | - **Plafonds / cache** : aucun |
@@ -26,7 +26,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 26 | 26 | > display_dealer_name / display_city). On réutilise OccasionBeaucage, |
| 27 | 27 | > seuls l'URL et les libellés changent. |
| 28 | 28 | |
| 29 | −## Complétude des champs (annonces actives, N = 414) | |
| 29 | +## Complétude des champs (annonces actives, N = 428) | |
| 30 | 30 | |
| 31 | 31 | | Champ | % rempli | |
| 32 | 32 | |---|---| |
@@ -39,14 +39,14 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 39 | 39 | | Boîte (transmission) | 99.8 % | |
| 40 | 40 | | VIN | 100.0 % | |
| 41 | 41 | | Photos | 100.0 % | |
| 42 | −| Carfax | 75.1 % | | |
| 42 | +| Carfax | 76.2 % | | |
| 43 | 43 | | GPS (lat/lng) | 100.0 % | |
| 44 | 44 | |
| 45 | 45 | ## Sources membres (BD live) |
| 46 | 46 | |
| 47 | 47 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 48 | 48 | |---|---|---|---|---|---|---|---| |
| 49 | −| `montjolichrysler` | Chrysler Mont-Joli | Mont-Joli | Bas-Saint-Laurent | 414 | 382 | 2026-08-17 23:50 | OK (414 trouvés) | | |
| 49 | +| `montjolichrysler` | Chrysler Mont-Joli | Mont-Joli | Bas-Saint-Laurent | 428 | 368 | 2026-08-23 14:13 | OK (428 trouvés) | | |
| 50 | 50 | |
| 51 | 51 | ## Erreurs de synchronisation récentes |
| 52 | 52 | |
modified
docs/connecteurs/moto_dealers.md
+20 −20
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/moto_dealers.py` |
| 8 | 8 | - **Sources membres** : 13 |
| 9 | −- **Annonces actives (BD)** : 630 | |
| 9 | +- **Annonces actives (BD)** : 653 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : sitemap, JSON-LD schema.org, endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, AUTOKA_MAX_PAGES, cache détail BD (detail_cache) |
@@ -51,18 +51,18 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 51 | 51 | > JSON-LD des pages /occasion/…-idNNN.html), avec un filtre de segments |
| 52 | 52 | > INVERSÉ (inclut motos/scooters, exclut le reste) et kind rempli. |
| 53 | 53 | |
| 54 | −## Complétude des champs (annonces actives, N = 630) | |
| 54 | +## Complétude des champs (annonces actives, N = 653) | |
| 55 | 55 | |
| 56 | 56 | | Champ | % rempli | |
| 57 | 57 | |---|---| |
| 58 | 58 | | Marque | 100.0 % | |
| 59 | 59 | | Modèle | 100.0 % | |
| 60 | 60 | | Année | 99.7 % | |
| 61 | −| Kilométrage | 93.5 % | | |
| 62 | −| Prix | 98.7 % | | |
| 63 | −| Carburant | 60.3 % | | |
| 64 | −| Boîte (transmission) | 0.6 % | | |
| 65 | −| VIN | 6.2 % | | |
| 61 | +| Kilométrage | 95.4 % | | |
| 62 | +| Prix | 98.8 % | | |
| 63 | +| Carburant | 97.9 % | | |
| 64 | +| Boîte (transmission) | 4.1 % | | |
| 65 | +| VIN | 74.1 % | | |
| 66 | 66 | | Photos | 100.0 % | |
| 67 | 67 | | Carfax | 0.0 % | |
| 68 | 68 | | GPS (lat/lng) | 100.0 % | |
@@ -71,19 +71,19 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 71 | 71 | |
| 72 | 72 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 73 | 73 | |---|---|---|---|---|---|---|---| |
| 74 | −| `excelmoto` | Excel Moto | Montréal | Montréal | 8 | 0 | 2026-08-17 23:50 | OK (8 trouvés) | | |
| 75 | −| `gabrielharleydavidson` | Gabriel Harley-Davidson Montréal | Montréal | Montréal | 26 | 0 | 2026-08-17 23:50 | OK (26 trouvés) | | |
| 76 | −| `glsport` | GL Sport | Saint-Gervais | Chaudière-Appalaches | 14 | 0 | 2026-08-17 23:50 | OK (14 trouvés) | | |
| 77 | −| `groupecontant` | Groupe Contant | Repentigny | Lanaudière | 46 | 0 | 2026-08-17 23:50 | OK (46 trouvés) | | |
| 78 | −| `groupeimperium` | Groupe Imperium | Chicoutimi | Saguenay–Lac-Saint-Jean | 22 | 0 | 2026-08-17 23:50 | OK (22 trouvés) | | |
| 79 | −| `mathiassports` | Mathias Sports | Saint-Mathias-sur-Richelieu | Montérégie | 103 | 0 | 2026-08-18 01:45 | OK (103 trouvés) | | |
| 80 | −| `mecamoto` | Mecamoto | Montréal | Montréal | 14 | 0 | 2026-08-17 23:50 | OK (14 trouvés) | | |
| 81 | −| `motoducharme` | Moto Ducharme | Joliette | Lanaudière | 14 | 0 | 2026-08-17 23:50 | OK (14 trouvés) | | |
| 82 | −| `motosillimitees` | Motos Illimitées | Terrebonne | Lanaudière | 276 | 0 | 2026-08-18 01:42 | OK (276 trouvés) | | |
| 83 | −| `motosthibaulttr` | Motos Thibault Trois-Rivières | Trois-Rivières | Mauricie | 11 | 0 | 2026-08-17 23:50 | OK (11 trouvés) | | |
| 84 | −| `rmmotosport` | RM Motosport | Victoriaville | Centre-du-Québec | 9 | 0 | 2026-08-17 23:50 | OK (9 trouvés) | | |
| 85 | −| `smsport` | SM Sport | Québec | Capitale-Nationale | 48 | 0 | 2026-08-17 23:50 | OK (48 trouvés) | | |
| 86 | −| `stjeromeharleydavidson` | St-Jérôme Harley-Davidson | Saint-Jérôme | Laurentides | 39 | 0 | 2026-08-17 23:50 | OK (39 trouvés) | | |
| 74 | +| `excelmoto` | Excel Moto | Montréal | Montréal | 8 | 0 | 2026-08-23 14:13 | OK (8 trouvés) | | |
| 75 | +| `gabrielharleydavidson` | Gabriel Harley-Davidson Montréal | Montréal | Montréal | 28 | 0 | 2026-08-23 14:13 | OK (28 trouvés) | | |
| 76 | +| `glsport` | GL Sport | Saint-Gervais | Chaudière-Appalaches | 15 | 0 | 2026-08-23 14:13 | OK (15 trouvés) | | |
| 77 | +| `groupecontant` | Groupe Contant | Repentigny | Lanaudière | 51 | 0 | 2026-08-23 14:13 | OK (51 trouvés) | | |
| 78 | +| `groupeimperium` | Groupe Imperium | Chicoutimi | Saguenay–Lac-Saint-Jean | 18 | 0 | 2026-08-23 14:13 | OK (18 trouvés) | | |
| 79 | +| `mathiassports` | Mathias Sports | Saint-Mathias-sur-Richelieu | Montérégie | 103 | 0 | 2026-08-23 14:13 | OK (103 trouvés) | | |
| 80 | +| `mecamoto` | Mecamoto | Montréal | Montréal | 15 | 0 | 2026-08-23 14:13 | OK (15 trouvés) | | |
| 81 | +| `motoducharme` | Moto Ducharme | Joliette | Lanaudière | 14 | 0 | 2026-08-23 14:13 | OK (14 trouvés) | | |
| 82 | +| `motosillimitees` | Motos Illimitées | Terrebonne | Lanaudière | 290 | 0 | 2026-08-23 14:13 | OK (290 trouvés) | | |
| 83 | +| `motosthibaulttr` | Motos Thibault Trois-Rivières | Trois-Rivières | Mauricie | 14 | 0 | 2026-08-23 14:13 | OK (14 trouvés) | | |
| 84 | +| `rmmotosport` | RM Motosport | Victoriaville | Centre-du-Québec | 9 | 0 | 2026-08-23 14:13 | OK (9 trouvés) | | |
| 85 | +| `smsport` | SM Sport | Québec | Capitale-Nationale | 51 | 0 | 2026-08-23 14:13 | OK (51 trouvés) | | |
| 86 | +| `stjeromeharleydavidson` | St-Jérôme Harley-Davidson | Saint-Jérôme | Laurentides | 37 | 0 | 2026-08-23 14:13 | OK (37 trouvés) | | |
| 87 | 87 | |
| 88 | 88 | ## Erreurs de synchronisation récentes |
| 89 | 89 | |
modified
docs/connecteurs/occasionbeaucage.md
+4 −4
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/occasionbeaucage.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 1226 | |
| 9 | +- **Annonces actives (BD)** : 1234 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : flux RSC Next.js, endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, AUTOKA_MAX_PAGES, cache détail BD (detail_cache) |
@@ -41,7 +41,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 41 | 41 | > la liste) et plafonnés par AUTOKA_MAX_DETAILS / max_details par sync — |
| 42 | 42 | > l'inventaire complet se couvre en quelques synchronisations. |
| 43 | 43 | |
| 44 | −## Complétude des champs (annonces actives, N = 1 226) | |
| 44 | +## Complétude des champs (annonces actives, N = 1 234) | |
| 45 | 45 | |
| 46 | 46 | | Champ | % rempli | |
| 47 | 47 | |---|---| |
@@ -54,14 +54,14 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 54 | 54 | | Boîte (transmission) | 100.0 % | |
| 55 | 55 | | VIN | 100.0 % | |
| 56 | 56 | | Photos | 100.0 % | |
| 57 | −| Carfax | 54.8 % | | |
| 57 | +| Carfax | 55.4 % | | |
| 58 | 58 | | GPS (lat/lng) | 100.0 % | |
| 59 | 59 | |
| 60 | 60 | ## Sources membres (BD live) |
| 61 | 61 | |
| 62 | 62 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 63 | 63 | |---|---|---|---|---|---|---|---| |
| 64 | −| `occasionbeaucage` | Occasion Beaucage | Sherbrooke | Estrie | 1226 | 199 | 2026-08-17 23:50 | OK (1226 trouvés) | | |
| 64 | +| `occasionbeaucage` | Occasion Beaucage | Sherbrooke | Estrie | 1234 | 204 | 2026-08-23 14:13 | OK (1232 trouvés) | | |
| 65 | 65 | |
| 66 | 66 | ## Erreurs de synchronisation récentes |
| 67 | 67 | |
modified
docs/connecteurs/occasioncharlevoix.md
+3 −3
@@ -36,19 +36,19 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 36 | 36 | | Modèle | 100.0 % | |
| 37 | 37 | | Année | 100.0 % | |
| 38 | 38 | | Kilométrage | 100.0 % | |
| 39 | −| Prix | 96.7 % | | |
| 39 | +| Prix | 100.0 % | | |
| 40 | 40 | | Carburant | 0.0 % | |
| 41 | 41 | | Boîte (transmission) | 100.0 % | |
| 42 | 42 | | VIN | 100.0 % | |
| 43 | 43 | | Photos | 100.0 % | |
| 44 | −| Carfax | 56.7 % | | |
| 44 | +| Carfax | 60.0 % | | |
| 45 | 45 | | GPS (lat/lng) | 100.0 % | |
| 46 | 46 | |
| 47 | 47 | ## Sources membres (BD live) |
| 48 | 48 | |
| 49 | 49 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 50 | 50 | |---|---|---|---|---|---|---|---| |
| 51 | −| `occasioncharlevoix` | Occasion Charlevoix | Baie-Saint-Paul | Capitale-Nationale | 30 | 9 | 2026-08-18 01:44 | OK (30 trouvés) | | |
| 51 | +| `occasioncharlevoix` | Occasion Charlevoix | Baie-Saint-Paul | Capitale-Nationale | 30 | 8 | 2026-08-23 14:13 | OK (30 trouvés) | | |
| 52 | 52 | |
| 53 | 53 | ## Erreurs de synchronisation récentes (sync_log, ok = 0) |
| 54 | 54 | |
modified
docs/connecteurs/okaze.md
+4 −4
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/okaze.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 50 | |
| 9 | +- **Annonces actives (BD)** : 48 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : — |
| 12 | 12 | - **Plafonds / cache** : aucun |
@@ -23,7 +23,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 23 | 23 | > modèle, moteur, portes, km, prix, motricité, transmission, carburant. |
| 24 | 24 | > On parse ces cartes en HTML brut (regex) : une seule requête par sync. |
| 25 | 25 | |
| 26 | −## Complétude des champs (annonces actives, N = 50) | |
| 26 | +## Complétude des champs (annonces actives, N = 48) | |
| 27 | 27 | |
| 28 | 28 | | Champ | % rempli | |
| 29 | 29 | |---|---| |
@@ -35,7 +35,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 35 | 35 | | Carburant | 100.0 % | |
| 36 | 36 | | Boîte (transmission) | 100.0 % | |
| 37 | 37 | | VIN | 0.0 % | |
| 38 | −| Photos | 98.0 % | | |
| 38 | +| Photos | 97.9 % | | |
| 39 | 39 | | Carfax | 0.0 % | |
| 40 | 40 | | GPS (lat/lng) | 100.0 % | |
| 41 | 41 | |
@@ -43,7 +43,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 43 | 43 | |
| 44 | 44 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 45 | 45 | |---|---|---|---|---|---|---|---| |
| 46 | −| `okaze` | OKAZE | Saguenay | Saguenay–Lac-Saint-Jean | 50 | 0 | 2026-08-17 23:50 | OK (50 trouvés) | | |
| 46 | +| `okaze` | OKAZE | Saguenay | Saguenay–Lac-Saint-Jean | 48 | 0 | 2026-08-23 14:13 | OK (48 trouvés) | | |
| 47 | 47 | |
| 48 | 48 | ## Erreurs de synchronisation récentes |
| 49 | 49 | |
modified
docs/connecteurs/otogo.md
+6 −6
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/otogo.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 23700 | |
| 9 | +- **Annonces actives (BD)** : 23853 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_OTOGO_MAX |
@@ -40,7 +40,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 40 | 40 | > |
| 41 | 41 | > Plafond : AUTOKA_OTOGO_MAX (défaut 0 = inventaire complet). |
| 42 | 42 | |
| 43 | −## Complétude des champs (annonces actives, N = 23 700) | |
| 43 | +## Complétude des champs (annonces actives, N = 23 853) | |
| 44 | 44 | |
| 45 | 45 | | Champ | % rempli | |
| 46 | 46 | |---|---| |
@@ -49,10 +49,10 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 49 | 49 | | Année | 100.0 % | |
| 50 | 50 | | Kilométrage | 99.3 % | |
| 51 | 51 | | Prix | 100.0 % | |
| 52 | −| Carburant | 7.7 % | | |
| 52 | +| Carburant | 7.8 % | | |
| 53 | 53 | | Boîte (transmission) | 0.0 % | |
| 54 | −| VIN | 99.3 % | | |
| 55 | −| Photos | 95.9 % | | |
| 54 | +| VIN | 99.2 % | | |
| 55 | +| Photos | 96.1 % | | |
| 56 | 56 | | Carfax | 0.0 % | |
| 57 | 57 | | GPS (lat/lng) | 100.0 % | |
| 58 | 58 | |
@@ -60,7 +60,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 60 | 60 | |
| 61 | 61 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 62 | 62 | |---|---|---|---|---|---|---|---| |
| 63 | −| `otogo` | Otogo.ca | — | — | 23700 | 5847 | 2026-08-18 05:54 | OK (23700 trouvés) | | |
| 63 | +| `otogo` | Otogo.ca | — | — | 23853 | 6103 | 2026-08-23 14:18 | OK (23676 trouvés) | | |
| 64 | 64 | |
| 65 | 65 | ## Erreurs de synchronisation récentes |
| 66 | 66 | |
modified
docs/connecteurs/ototr.md
+1 −1
@@ -44,7 +44,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 44 | 44 | |
| 45 | 45 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 46 | 46 | |---|---|---|---|---|---|---|---| |
| 47 | −| `ototroisrivieres` | OTO Trois-Rivières | Trois-Rivières | Mauricie | 4 | 0 | 2026-08-17 23:50 | OK (4 trouvés) | | |
| 47 | +| `ototroisrivieres` | OTO Trois-Rivières | Trois-Rivières | Mauricie | 4 | 0 | 2026-08-23 14:18 | OK (4 trouvés) | | |
| 48 | 48 | |
| 49 | 49 | ## Erreurs de synchronisation récentes |
| 50 | 50 | |
modified
docs/connecteurs/sm360_dealers.md
+24 −24
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/sm360_dealers.py` |
| 8 | 8 | - **Sources membres** : 15 |
| 9 | −- **Annonces actives (BD)** : 1434 | |
| 9 | +- **Annonces actives (BD)** : 1429 | |
| 10 | 10 | - **Backend de fetch** : requests direct — Firecrawl par source au besoin (`use_firecrawl`, sites derrière Cloudflare) |
| 11 | 11 | - **Mécanique détectée** : sitemap, JSON-LD schema.org, GraphQL, flux RSS, API JSON interne, endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, cache détail BD (detail_cache) |
@@ -43,41 +43,41 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 43 | 43 | > inutile ici, le sitemap suffit. robots.txt : Allow /*?page=* et /*/api/*, |
| 44 | 44 | > Crawl-delay 10 → délai généreux + cache détail. |
| 45 | 45 | |
| 46 | −## Complétude des champs (annonces actives, N = 1 434) | |
| 46 | +## Complétude des champs (annonces actives, N = 1 429) | |
| 47 | 47 | |
| 48 | 48 | | Champ | % rempli | |
| 49 | 49 | |---|---| |
| 50 | −| Marque | 99.3 % | | |
| 50 | +| Marque | 99.2 % | | |
| 51 | 51 | | Modèle | 100.0 % | |
| 52 | 52 | | Année | 100.0 % | |
| 53 | −| Kilométrage | 99.5 % | | |
| 54 | −| Prix | 99.2 % | | |
| 53 | +| Kilométrage | 99.0 % | | |
| 54 | +| Prix | 99.4 % | | |
| 55 | 55 | | Carburant | 95.2 % | |
| 56 | −| Boîte (transmission) | 91.2 % | | |
| 57 | −| VIN | 99.4 % | | |
| 58 | −| Photos | 93.5 % | | |
| 59 | −| Carfax | 6.6 % | | |
| 56 | +| Boîte (transmission) | 90.1 % | | |
| 57 | +| VIN | 99.5 % | | |
| 58 | +| Photos | 91.3 % | | |
| 59 | +| Carfax | 18.9 % | | |
| 60 | 60 | | GPS (lat/lng) | 100.0 % | |
| 61 | 61 | |
| 62 | 62 | ## Sources membres (BD live) |
| 63 | 63 | |
| 64 | 64 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 65 | 65 | |---|---|---|---|---|---|---|---| |
| 66 | −| `autodesjardins` | Automobiles Desjardins | Québec | Capitale-Nationale | 101 | 0 | 2026-08-17 23:51 | OK (100 trouvés) | | |
| 67 | −| `baiecomeaugm` | Baie-Comeau Chevrolet Buick GMC | Baie-Comeau | Côte-Nord | 107 | 37 | 2026-08-17 23:51 | OK (100 trouvés) | | |
| 68 | −| `kiamatane` | Kia Matane | Matane | Bas-Saint-Laurent | 40 | 1 | 2026-08-17 23:52 | OK (40 trouvés) | | |
| 69 | −| `lallierhondahull` | Lallier Honda Hull | Gatineau | Outaouais | 62 | 0 | 2026-08-17 23:51 | OK (61 trouvés) | | |
| 70 | −| `lamontagneauto` | Lamontagne Auto | Rimouski | Bas-Saint-Laurent | 13 | 0 | 2026-08-17 23:51 | OK (13 trouvés) | | |
| 71 | −| `marquisautomobiles` | Marquis Automobiles | Matane | Bas-Saint-Laurent | 35 | 0 | 2026-08-17 23:52 | OK (35 trouvés) | | |
| 72 | −| `rivesudchrysler` | Rive-Sud Chrysler | Brossard | Montérégie | 19 | 0 | 2026-08-17 23:51 | OK (19 trouvés) | | |
| 73 | −| `septilesgm` | Sept-Îles Chevrolet Buick GMC | Sept-Îles | Côte-Nord | 102 | 13 | 2026-08-17 23:51 | OK (100 trouvés) | | |
| 74 | −| `septileshonda` | Sept-Îles Honda | Sept-Îles | Côte-Nord | 12 | 0 | 2026-08-17 23:51 | OK (12 trouvés) | | |
| 75 | −| `spinelli` | Groupe Spinelli | Montréal | Montréal | 100 | 0 | 2026-08-17 23:51 | OK (100 trouvés) | | |
| 76 | −| `stjeromeautodepot` | St-Jérôme Auto Dépôt | Saint-Jérôme | Laurentides | 312 | 0 | 2026-08-18 01:41 | OK (10 trouvés) | | |
| 77 | −| `touteslesmarques` | Toutes les marques | Chicoutimi | Saguenay–Lac-Saint-Jean | 243 | 169 | 2026-08-17 23:51 | OK (240 trouvés) | | |
| 78 | −| `toyotagatineau` | Toyota Gatineau | Gatineau | Outaouais | 101 | 0 | 2026-08-17 23:51 | OK (100 trouvés) | | |
| 79 | −| `villeneuveford` | Villeneuve Ford | Matane | Bas-Saint-Laurent | 72 | 0 | 2026-08-17 23:52 | OK (72 trouvés) | | |
| 80 | −| `volvosaintleonard` | Volvo Cars Saint-Léonard | Montréal | Montréal | 115 | 0 | 2026-08-17 23:52 | OK (115 trouvés) | | |
| 66 | +| `autodesjardins` | Automobiles Desjardins | Québec | Capitale-Nationale | 103 | 0 | 2026-08-23 14:18 | OK (100 trouvés) | | |
| 67 | +| `baiecomeaugm` | Baie-Comeau Chevrolet Buick GMC | Baie-Comeau | Côte-Nord | 118 | 103 | 2026-08-23 14:19 | OK (100 trouvés) | | |
| 68 | +| `kiamatane` | Kia Matane | Matane | Bas-Saint-Laurent | 43 | 0 | 2026-08-23 14:19 | OK (43 trouvés) | | |
| 69 | +| `lallierhondahull` | Lallier Honda Hull | Gatineau | Outaouais | 63 | 0 | 2026-08-23 14:18 | OK (63 trouvés) | | |
| 70 | +| `lamontagneauto` | Lamontagne Auto | Rimouski | Bas-Saint-Laurent | 10 | 0 | 2026-08-23 14:18 | OK (10 trouvés) | | |
| 71 | +| `marquisautomobiles` | Marquis Automobiles | Matane | Bas-Saint-Laurent | 34 | 0 | 2026-08-23 14:19 | OK (34 trouvés) | | |
| 72 | +| `rivesudchrysler` | Rive-Sud Chrysler | Brossard | Montérégie | 18 | 0 | 2026-08-23 14:18 | OK (18 trouvés) | | |
| 73 | +| `septilesgm` | Sept-Îles Chevrolet Buick GMC | Sept-Îles | Côte-Nord | 100 | 80 | 2026-08-23 14:19 | OK (100 trouvés) | | |
| 74 | +| `septileshonda` | Sept-Îles Honda | Sept-Îles | Côte-Nord | 12 | 0 | 2026-08-23 14:18 | OK (12 trouvés) | | |
| 75 | +| `spinelli` | Groupe Spinelli | Montréal | Montréal | 100 | 0 | 2026-08-23 14:18 | OK (100 trouvés) | | |
| 76 | +| `stjeromeautodepot` | St-Jérôme Auto Dépôt | Saint-Jérôme | Laurentides | 294 | 0 | 2026-08-23 14:18 | OK (294 trouvés) | | |
| 77 | +| `touteslesmarques` | Toutes les marques | Chicoutimi | Saguenay–Lac-Saint-Jean | 247 | 231 | 2026-08-23 14:18 | OK (247 trouvés) | | |
| 78 | +| `toyotagatineau` | Toyota Gatineau | Gatineau | Outaouais | 100 | 0 | 2026-08-23 14:18 | OK (100 trouvés) | | |
| 79 | +| `villeneuveford` | Villeneuve Ford | Matane | Bas-Saint-Laurent | 71 | 0 | 2026-08-23 14:19 | OK (71 trouvés) | | |
| 80 | +| `volvosaintleonard` | Volvo Cars Saint-Léonard | Montréal | Montréal | 116 | 0 | 2026-08-23 14:19 | OK (116 trouvés) | | |
| 81 | 81 | |
| 82 | 82 | ## Erreurs de synchronisation récentes |
| 83 | 83 | |
modified
docs/connecteurs/stefoychrysler.md
+4 −4
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/stefoychrysler.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 414 | |
| 9 | +- **Annonces actives (BD)** : 428 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : flux RSC Next.js |
| 12 | 12 | - **Plafonds / cache** : aucun |
@@ -26,7 +26,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 26 | 26 | > display_dealer_name / display_city). On réutilise donc OccasionBeaucage |
| 27 | 27 | > telle quelle, seuls l'URL et les libellés changent. |
| 28 | 28 | |
| 29 | −## Complétude des champs (annonces actives, N = 414) | |
| 29 | +## Complétude des champs (annonces actives, N = 428) | |
| 30 | 30 | |
| 31 | 31 | | Champ | % rempli | |
| 32 | 32 | |---|---| |
@@ -39,14 +39,14 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 39 | 39 | | Boîte (transmission) | 99.8 % | |
| 40 | 40 | | VIN | 100.0 % | |
| 41 | 41 | | Photos | 100.0 % | |
| 42 | −| Carfax | 75.1 % | | |
| 42 | +| Carfax | 76.2 % | | |
| 43 | 43 | | GPS (lat/lng) | 100.0 % | |
| 44 | 44 | |
| 45 | 45 | ## Sources membres (BD live) |
| 46 | 46 | |
| 47 | 47 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 48 | 48 | |---|---|---|---|---|---|---|---| |
| 49 | −| `stefoychrysler` | Ste-Foy Chrysler | Québec | Capitale-Nationale | 414 | 35 | 2026-08-17 23:52 | OK (414 trouvés) | | |
| 49 | +| `stefoychrysler` | Ste-Foy Chrysler | Québec | Capitale-Nationale | 428 | 64 | 2026-08-23 14:19 | OK (428 trouvés) | | |
| 50 | 50 | |
| 51 | 51 | ## Erreurs de synchronisation récentes |
| 52 | 52 | |
modified
docs/connecteurs/transverse-dedup-vin.md
+14 −14
@@ -27,9 +27,9 @@ _Généré automatiquement par `scripts/gen_connector_docs.py`._ | ||
| 27 | 27 | |
| 28 | 28 | ## État live |
| 29 | 29 | |
| 30 | −- **Annonces en base** : 49397 | |
| 31 | −- **Annonces masquées (`dup_of` non nul)** : 8438 | |
| 32 | −- **Annonces canoniques avec doublons** : 6655 | |
| 30 | +- **Annonces en base** : 77215 | |
| 31 | +- **Annonces masquées (`dup_of` non nul)** : 9388 | |
| 32 | +- **Annonces canoniques avec doublons** : 7211 | |
| 33 | 33 | - **Autorité** : concessionnaire direct > portail/regroupeur > petites annonces ; puis complétude de la fiche, puis ancienneté (`first_seen`). |
| 34 | 34 | - Les listes filtrent `dup_of IS NULL` ; les fiches détail restent accessibles par uid. |
| 35 | 35 | |
@@ -37,17 +37,17 @@ _Généré automatiquement par `scripts/gen_connector_docs.py`._ | ||
| 37 | 37 | |
| 38 | 38 | | Source | Annonces masquées | |
| 39 | 39 | |---|---| |
| 40 | −| `otogo` | 5847 | | |
| 41 | −| `leprixdugros` | 738 | | |
| 42 | −| `megacentredeliquidation` | 452 | | |
| 43 | −| `montjolichrysler` | 382 | | |
| 44 | −| `occasionbeaucage` | 199 | | |
| 40 | +| `otogo` | 6103 | | |
| 41 | +| `leprixdugros` | 940 | | |
| 42 | +| `megacentredeliquidation` | 470 | | |
| 43 | +| `montjolichrysler` | 368 | | |
| 44 | +| `autousagee` | 251 | | |
| 45 | +| `touteslesmarques` | 231 | | |
| 46 | +| `occasionbeaucage` | 204 | | |
| 45 | 47 | | `cargurus` | 170 | |
| 46 | −| `touteslesmarques` | 169 | | |
| 47 | −| `jeandumas` | 108 | | |
| 48 | −| `abitibiautocredit` | 85 | | |
| 49 | −| `jeandumasfordbc` | 76 | | |
| 50 | −| `baiecomeaugm` | 37 | | |
| 51 | −| `stefoychrysler` | 35 | | |
| 48 | +| `jeandumas` | 114 | | |
| 49 | +| `baiecomeaugm` | 103 | | |
| 50 | +| `jeandumasfordbc` | 90 | | |
| 51 | +| `abitibiautocredit` | 88 | | |
| 52 | 52 | |
| 53 | 53 | Recalcul one-shot : `python3 -m autoka.dedup` (idempotent, relancé à la fin de chaque cycle d'ingestion). |
modified
docs/connecteurs/vvu_dealers.md
+10 −10
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/vvu_dealers.py` |
| 8 | 8 | - **Sources membres** : 4 |
| 9 | −- **Annonces actives (BD)** : 183 | |
| 9 | +- **Annonces actives (BD)** : 178 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : API JSON interne, endpoint JSON |
| 12 | 12 | - **Plafonds / cache** : aucun |
@@ -27,19 +27,19 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 27 | 27 | > `<make>-<model>-<year>-<_id>` ; le préfixe varie selon la version du |
| 28 | 28 | > gabarit ADWS déployée (`/fr/vehicle/…` ou `/fr/occasion/…`). |
| 29 | 29 | |
| 30 | −## Complétude des champs (annonces actives, N = 183) | |
| 30 | +## Complétude des champs (annonces actives, N = 178) | |
| 31 | 31 | |
| 32 | 32 | | Champ | % rempli | |
| 33 | 33 | |---|---| |
| 34 | 34 | | Marque | 100.0 % | |
| 35 | 35 | | Modèle | 100.0 % | |
| 36 | −| Année | 99.5 % | | |
| 36 | +| Année | 99.4 % | | |
| 37 | 37 | | Kilométrage | 100.0 % | |
| 38 | 38 | | Prix | 100.0 % | |
| 39 | −| Carburant | 99.5 % | | |
| 39 | +| Carburant | 99.4 % | | |
| 40 | 40 | | Boîte (transmission) | 100.0 % | |
| 41 | −| VIN | 96.7 % | | |
| 42 | −| Photos | 97.8 % | | |
| 41 | +| VIN | 96.1 % | | |
| 42 | +| Photos | 97.2 % | | |
| 43 | 43 | | Carfax | 0.0 % | |
| 44 | 44 | | GPS (lat/lng) | 100.0 % | |
| 45 | 45 | |
@@ -47,10 +47,10 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 47 | 47 | |
| 48 | 48 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 49 | 49 | |---|---|---|---|---|---|---|---| |
| 50 | −| `autoglobalmtl` | Auto Global MTL | Montréal | Montréal | 30 | 0 | 2026-08-17 23:52 | OK (30 trouvés) | | |
| 51 | −| `groupeautomobile` | Le Groupe Automobile Laval | Laval | Laval | 24 | 0 | 2026-08-17 23:52 | OK (24 trouvés) | | |
| 52 | −| `occasionvilledequebec` | Comme1Neuf | Château-Richer | Capitale-Nationale | 77 | 0 | 2026-08-17 23:52 | OK (77 trouvés) | | |
| 53 | −| `summumauto` | Summum Auto | Laval | Laval | 52 | 0 | 2026-08-17 23:52 | OK (52 trouvés) | | |
| 50 | +| `autoglobalmtl` | Auto Global MTL | Montréal | Montréal | 29 | 0 | 2026-08-23 14:19 | OK (29 trouvés) | | |
| 51 | +| `groupeautomobile` | Le Groupe Automobile Laval | Laval | Laval | 24 | 0 | 2026-08-23 14:19 | OK (24 trouvés) | | |
| 52 | +| `occasionvilledequebec` | Comme1Neuf | Château-Richer | Capitale-Nationale | 74 | 0 | 2026-08-23 14:19 | OK (74 trouvés) | | |
| 53 | +| `summumauto` | Summum Auto | Laval | Laval | 51 | 0 | 2026-08-23 14:19 | OK (51 trouvés) | | |
| 54 | 54 | |
| 55 | 55 | ## Erreurs de synchronisation récentes |
| 56 | 56 | |
modified
docs/connecteurs/yannicklaberge.md
+3 −3
@@ -6,7 +6,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 6 | 6 | |
| 7 | 7 | - **Fichier** : `autoka/connectors/yannicklaberge.py` |
| 8 | 8 | - **Sources membres** : 1 |
| 9 | −- **Annonces actives (BD)** : 17 | |
| 9 | +- **Annonces actives (BD)** : 16 | |
| 10 | 10 | - **Backend de fetch** : requests direct (aucun anti-bot) |
| 11 | 11 | - **Mécanique détectée** : sitemap, JSON-LD schema.org |
| 12 | 12 | - **Plafonds / cache** : AUTOKA_MAX_DETAILS, cache détail BD (detail_cache) |
@@ -24,7 +24,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 24 | 24 | > couleur intérieure, description. Galerie complétée par les URLs |
| 25 | 25 | > image.autousagee.ca de la page. Pages détail en cache BD (clé hebdo). |
| 26 | 26 | |
| 27 | −## Complétude des champs (annonces actives, N = 17) | |
| 27 | +## Complétude des champs (annonces actives, N = 16) | |
| 28 | 28 | |
| 29 | 29 | | Champ | % rempli | |
| 30 | 30 | |---|---| |
@@ -44,7 +44,7 @@ _Généré automatiquement par `scripts/gen_connector_docs.py` — ne pas édite | ||
| 44 | 44 | |
| 45 | 45 | | Source | Nom | Ville | Région | Actives | Masquées (dup VIN) | Dernier sync | Statut | |
| 46 | 46 | |---|---|---|---|---|---|---|---| |
| 47 | −| `automobilesyannicklaberge` | Automobiles Yannick Laberge | Beauport | Capitale-Nationale | 17 | 0 | 2026-08-17 23:52 | OK (17 trouvés) | | |
| 47 | +| `automobilesyannicklaberge` | Automobiles Yannick Laberge | Beauport | Capitale-Nationale | 16 | 0 | 2026-08-23 14:19 | OK (16 trouvés) | | |
| 48 | 48 | |
| 49 | 49 | ## Erreurs de synchronisation récentes |
| 50 | 50 | |
| 51 | 51 | |