SPB Git forge

spb/auto-ka

Public
61commits 1branches 0releases
14.4 MBsize
maindefault branch
12 days agolast push
Python 61.6% TypeScript 20.9% CSS 11.4% JavaScript 5.1% HTML 1.1%

[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>
Simon-Pierre Boucher committed 1 mo ago (Aug 23, 2026) parent f831e1e

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