fb_marketplace : acteur Apify maison ka-fb-marketplace (33 villes, tout le Québec)
Remplace la chaîne Scrapfly par un acteur Apify maison (curl_cffi sans rendu JS, proxy Oxylabs résidentiel CA via proxyUrlTemplate) : recherche 116 URLs (10 grandes villes × 7 tranches de prix + 23 régions par ID Marketplace), fiches détail (GPS, description, statut) et galerie complète via le MediaViewer préchargé. Filtre hors-Québec à deux niveaux : state du reverse_geocode dès la recherche + filet bbox GPS côté connecteur (FB glisse des suggestions d'autres provinces dans le flux public). Coût ~100× moindre. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
227 changed files +2,615 −2,173
added
actors/ka-fb-marketplace/.actor/Dockerfile
+10 −0
@@ -0,0 +1,10 @@ | ||
| 1 | +# ============================================================================== | |
| 2 | +# Author: Simon-Pierre Boucher <contact@spboucher.ai> | |
| 3 | +# File: Dockerfile (ka-fb-marketplace) | |
| 4 | +# Desc: Acteur Apify KA — Dockerfile | |
| 5 | +# ============================================================================== | |
| 6 | +FROM apify/actor-python:3.12 | |
| 7 | +COPY requirements.txt ./ | |
| 8 | +RUN pip install --no-cache-dir -r requirements.txt | |
| 9 | +COPY . ./ | |
| 10 | +CMD ["python3", "-m", "src"] | |
added
actors/ka-fb-marketplace/.actor/actor.json
+10 −0
@@ -0,0 +1,10 @@ | ||
| 1 | +{ | |
| 2 | + "actorSpecification": 1, | |
| 3 | + "name": "ka-fb-marketplace", | |
| 4 | + "title": "KA Facebook Marketplace — locations QC", | |
| 5 | + "description": "Logements à louer (propertyrentals) sur Facebook Marketplace, Québec. Scraping public déconnecté sans rendu JS : recherche + fiches détail (GPS, description, statut, galerie via MediaViewer préchargé) depuis le JSON du HTML brut. Proxy résidentiel CA obligatoire.", | |
| 6 | + "version": "0.1", | |
| 7 | + "buildTag": "latest", | |
| 8 | + "input": "./input_schema.json", | |
| 9 | + "dockerfile": "./Dockerfile" | |
| 10 | +} | |
added
actors/ka-fb-marketplace/.actor/input_schema.json
+74 −0
@@ -0,0 +1,74 @@ | ||
| 1 | +{ | |
| 2 | + "title": "KA Facebook Marketplace input", | |
| 3 | + "type": "object", | |
| 4 | + "schemaVersion": 1, | |
| 5 | + "properties": { | |
| 6 | + "searchUrls": { | |
| 7 | + "title": "URLs de recherche", | |
| 8 | + "type": "array", | |
| 9 | + "editor": "stringList", | |
| 10 | + "description": "URLs de recherche Marketplace (ville × tranche de prix). Vide = couverture Québec par défaut (33 villes intégrées).", | |
| 11 | + "prefill": [] | |
| 12 | + }, | |
| 13 | + "getDetails": { | |
| 14 | + "title": "Visiter les fiches détail", | |
| 15 | + "type": "boolean", | |
| 16 | + "default": true, | |
| 17 | + "description": "Visite /marketplace/item/<id> pour GPS, ville, description, statut et galerie complète." | |
| 18 | + }, | |
| 19 | + "maxDetails": { | |
| 20 | + "title": "Budget fiches détail", | |
| 21 | + "type": "integer", | |
| 22 | + "default": 200, | |
| 23 | + "minimum": 0, | |
| 24 | + "description": "Nombre maximal de fiches détail visitées par run." | |
| 25 | + }, | |
| 26 | + "skipDetailIds": { | |
| 27 | + "title": "IDs à NE PAS détailler", | |
| 28 | + "type": "array", | |
| 29 | + "editor": "stringList", | |
| 30 | + "description": "IDs d'annonces dont la fiche détail est déjà connue de l'appelant (cache) : la recherche les liste quand même, mais aucune requête détail.", | |
| 31 | + "prefill": [] | |
| 32 | + }, | |
| 33 | + "extraDetailIds": { | |
| 34 | + "title": "IDs détail additionnels (rattrapage)", | |
| 35 | + "type": "array", | |
| 36 | + "editor": "stringList", | |
| 37 | + "description": "Fiches à visiter MÊME si absentes des résultats de recherche (rattrapage d'annonces actives pauvres).", | |
| 38 | + "prefill": [] | |
| 39 | + }, | |
| 40 | + "requestDelay": { | |
| 41 | + "title": "Délai entre requêtes (s)", | |
| 42 | + "type": "integer", | |
| 43 | + "default": 1, | |
| 44 | + "minimum": 0, | |
| 45 | + "description": "Pause minimale entre deux requêtes sortantes, en secondes." | |
| 46 | + }, | |
| 47 | + "concurrency": { | |
| 48 | + "title": "Requêtes simultanées", | |
| 49 | + "type": "integer", | |
| 50 | + "default": 8, | |
| 51 | + "minimum": 1, | |
| 52 | + "maximum": 16, | |
| 53 | + "description": "Nombre de requêtes menées en parallèle." | |
| 54 | + }, | |
| 55 | + "proxyUrlTemplate": { | |
| 56 | + "title": "Proxy externe (gabarit d'URL)", | |
| 57 | + "type": "string", | |
| 58 | + "editor": "textfield", | |
| 59 | + "isSecret": true, | |
| 60 | + "description": "Optionnel : URL de proxy externe avec placeholder {session} (ex. Oxylabs résidentiel http://user-cc-CA-sessid-{session}:pass@pr.oxylabs.io:7777). Si présent, remplace le proxy Apify — utile pour consommer un abonnement résidentiel existant." | |
| 61 | + }, | |
| 62 | + "proxyConfiguration": { | |
| 63 | + "title": "Proxy Apify", | |
| 64 | + "type": "object", | |
| 65 | + "editor": "proxy", | |
| 66 | + "description": "Résidentiel obligatoire (Facebook rejette les IP datacenter). Ignoré si un gabarit de proxy externe est fourni.", | |
| 67 | + "prefill": { | |
| 68 | + "useApifyProxy": true, | |
| 69 | + "apifyProxyGroups": ["RESIDENTIAL"], | |
| 70 | + "apifyProxyCountry": "CA" | |
| 71 | + } | |
| 72 | + } | |
| 73 | + } | |
| 74 | +} | |
added
actors/ka-fb-marketplace/requirements.txt
+7 −0
@@ -0,0 +1,7 @@ | ||
| 1 | +# ============================================================================== | |
| 2 | +# Author: Simon-Pierre Boucher <contact@spboucher.ai> | |
| 3 | +# File: requirements.txt (ka-fb-marketplace) | |
| 4 | +# Desc: Acteur Apify KA — requirements.txt | |
| 5 | +# ============================================================================== | |
| 6 | +apify | |
| 7 | +curl_cffi>=0.9 | |
added
actors/ka-fb-marketplace/src/__main__.py
+10 −0
@@ -0,0 +1,10 @@ | ||
| 1 | +# ============================================================================== | |
| 2 | +# Author: Simon-Pierre Boucher <contact@spboucher.ai> | |
| 3 | +# File: src/__main__.py (ka-fb-marketplace) | |
| 4 | +# Desc: Point d'entrée de l'acteur (asyncio.run). | |
| 5 | +# ============================================================================== | |
| 6 | +import asyncio | |
| 7 | + | |
| 8 | +from .main import main | |
| 9 | + | |
| 10 | +asyncio.run(main()) | |
added
actors/ka-fb-marketplace/src/main.py
+325 −0
@@ -0,0 +1,325 @@ | ||
| 1 | +# ============================================================================== | |
| 2 | +# Author: Simon-Pierre Boucher <contact@spboucher.ai> | |
| 3 | +# File: src/main.py (ka-fb-marketplace) | |
| 4 | +# Desc: Facebook Marketplace — logements à louer (propertyrentals), Québec. | |
| 5 | +# Scraping public DÉCONNECTÉ, AUCUN rendu JS : les données vivent dans | |
| 6 | +# les <script type="application/json"> du HTML brut. | |
| 7 | +# - Recherche : objets marketplace_listing_title (~25/URL, on multiplie | |
| 8 | +# les URLs ville × tranche de prix pour élargir). | |
| 9 | +# - Fiche /marketplace/item/<id> : le target GraphQL préchargé | |
| 10 | +# (marketplace_product_details_page) expose GPS, ville | |
| 11 | +# (reverse_geocode_detailed), description, statut is_live/is_sold ; | |
| 12 | +# la GALERIE complète vient du target MediaViewer préchargé | |
| 13 | +# (listing_photos du même id) — validé live, aucun rendu requis. | |
| 14 | +# Sortie dataset : {kind:"listing"} (recherche) et {kind:"detail"}. | |
| 15 | +# ⚠️ Données personnelles (Loi 25) : ne jamais republier nom/téléphone | |
| 16 | +# du vendeur ; le champ seller n'est PAS extrait. | |
| 17 | +# ============================================================================== | |
| 18 | +from __future__ import annotations | |
| 19 | + | |
| 20 | +import asyncio | |
| 21 | +import html as _html | |
| 22 | +import json | |
| 23 | +import re | |
| 24 | + | |
| 25 | +from apify import Actor | |
| 26 | + | |
| 27 | +from .net import Fetcher | |
| 28 | + | |
| 29 | +BASE = "https://www.facebook.com/marketplace" | |
| 30 | + | |
| 31 | +# Couverture Québec par défaut (mode autonome, sans searchUrls) : | |
| 32 | +# slug vanity OU id numérique Marketplace (validés live 2026-08-22 — les slugs | |
| 33 | +# inventés retombent sur des villes aléatoires, seuls ceux-ci sont sûrs). | |
| 34 | +# Chaque recherche couvre un rayon d'environ 65 km. | |
| 35 | +BIG_CITIES = { # gros parcs : tranches de prix fines (flux ~25 annonces/URL) | |
| 36 | + "montreal": "Montréal", "laval": "Laval", "longueuil": "Longueuil", | |
| 37 | + "quebec": "Québec", "gatineau": "Gatineau", "sherbrooke": "Sherbrooke", | |
| 38 | + "trois-rivieres": "Trois-Rivières", "levis": "Lévis", | |
| 39 | + "saguenay": "Saguenay", "drummondville": "Drummondville", | |
| 40 | +} | |
| 41 | +REGIONAL_CITIES = { # couverture régions : ids numériques (Serper + validation) | |
| 42 | + "105790762794728": "Rimouski", "110925022261358": "Rivière-du-Loup", | |
| 43 | + "106528256049537": "Matane", "109502305742889": "Gaspé", | |
| 44 | + "100246746683723": "Sept-Îles", "105615529471535": "Baie-Comeau", | |
| 45 | + "106016152771864": "Rouyn-Noranda", "110594102301488": "Val-d'Or", | |
| 46 | + "105598479473872": "Amos", "109699385723610": "Saint-Georges", | |
| 47 | + "110304502331480": "Thetford Mines", "111938355489908": "Granby", | |
| 48 | + "108126699220609": "Victoriaville", "109753249050671": "Joliette", | |
| 49 | + "109429165750459": "Saint-Hyacinthe", | |
| 50 | + "108645709159963": "Saint-Jean-sur-Richelieu", | |
| 51 | + "112946182053396": "Saint-Jérôme", "113011352052118": "Salaberry-de-Valleyfield", | |
| 52 | + "107992819229760": "Magog", "109514615734434": "Alma", | |
| 53 | + "109664672393669": "Mont-Laurier", "108557812502323": "La Tuque", | |
| 54 | + "108296932538245": "Dolbeau-Mistassini", | |
| 55 | +} | |
| 56 | +PRICE_BANDS = [(0, 800), (800, 1100), (1100, 1400), (1400, 1700), | |
| 57 | + (1700, 2100), (2100, 2800), (2800, 6000)] | |
| 58 | +REGIONAL_BANDS = [(0, 1200), (1200, 6000)] # parcs plus petits : 2 tranches | |
| 59 | + | |
| 60 | +_SCRIPT_RE = re.compile( | |
| 61 | + r'<script type="application/json"[^>]*>(.*?)</script>', re.S) | |
| 62 | + | |
| 63 | + | |
| 64 | +def default_search_urls() -> list[str]: | |
| 65 | + urls = [] | |
| 66 | + for slug in BIG_CITIES: | |
| 67 | + for lo, hi in PRICE_BANDS: | |
| 68 | + urls.append(f"{BASE}/{slug}/propertyrentals" | |
| 69 | + f"?minPrice={lo}&maxPrice={hi}" | |
| 70 | + f"&sortBy=creation_time_descend") | |
| 71 | + for cid in REGIONAL_CITIES: | |
| 72 | + for lo, hi in REGIONAL_BANDS: | |
| 73 | + urls.append(f"{BASE}/{cid}/propertyrentals" | |
| 74 | + f"?minPrice={lo}&maxPrice={hi}" | |
| 75 | + f"&sortBy=creation_time_descend") | |
| 76 | + return urls | |
| 77 | + | |
| 78 | + | |
| 79 | +def _iter_json_scripts(html: str): | |
| 80 | + for m in _SCRIPT_RE.finditer(html): | |
| 81 | + try: | |
| 82 | + yield json.loads(m.group(1)) | |
| 83 | + except ValueError: | |
| 84 | + continue | |
| 85 | + | |
| 86 | + | |
| 87 | +def walk_listings(html: str) -> dict: | |
| 88 | + """Objets d'annonce (marketplace_listing_title) des <script> JSON.""" | |
| 89 | + out: dict = {} | |
| 90 | + | |
| 91 | + def walk(o): | |
| 92 | + if isinstance(o, dict): | |
| 93 | + if "marketplace_listing_title" in o and o.get("id"): | |
| 94 | + out.setdefault(str(o["id"]), o) | |
| 95 | + for v in o.values(): | |
| 96 | + walk(v) | |
| 97 | + elif isinstance(o, list): | |
| 98 | + for v in o: | |
| 99 | + walk(v) | |
| 100 | + | |
| 101 | + for data in _iter_json_scripts(html): | |
| 102 | + walk(data) | |
| 103 | + return out | |
| 104 | + | |
| 105 | + | |
| 106 | +def price_of(obj: dict) -> float | None: | |
| 107 | + """Montant du loyer depuis listing_price (offset en cents géré).""" | |
| 108 | + pr = obj.get("listing_price") or {} | |
| 109 | + for k in ("amount", "amount_with_offset_in_currency"): | |
| 110 | + v = pr.get(k) | |
| 111 | + if v is None: | |
| 112 | + continue | |
| 113 | + try: | |
| 114 | + val = float(v) | |
| 115 | + except (TypeError, ValueError): | |
| 116 | + continue | |
| 117 | + if k == "amount_with_offset_in_currency" and val > 100000: | |
| 118 | + val /= 100.0 | |
| 119 | + if val > 0: | |
| 120 | + return round(val, 0) | |
| 121 | + return None | |
| 122 | + | |
| 123 | + | |
| 124 | +def _pdp_target(html: str) -> dict | None: | |
| 125 | + """Nœud cible le plus RICHE (description/GPS/statut) parmi les targets | |
| 126 | + marketplace_product_details_page préchargés (stubs inclus).""" | |
| 127 | + found: list[dict] = [] | |
| 128 | + | |
| 129 | + def walk(o): | |
| 130 | + if isinstance(o, dict): | |
| 131 | + pdp = o.get("marketplace_product_details_page") | |
| 132 | + if isinstance(pdp, dict) and isinstance(pdp.get("target"), dict): | |
| 133 | + found.append(pdp["target"]) | |
| 134 | + for v in o.values(): | |
| 135 | + walk(v) | |
| 136 | + elif isinstance(o, list): | |
| 137 | + for v in o: | |
| 138 | + walk(v) | |
| 139 | + | |
| 140 | + for data in _iter_json_scripts(html): | |
| 141 | + walk(data) | |
| 142 | + | |
| 143 | + def score(t: dict) -> tuple: | |
| 144 | + desc = (t.get("redacted_description") or {}).get("text") or "" | |
| 145 | + loc = t.get("location") or {} | |
| 146 | + return (1 if desc else 0) + (1 if loc.get("latitude") else 0), len(t) | |
| 147 | + return max(found, key=score) if found else None | |
| 148 | + | |
| 149 | + | |
| 150 | +def _gallery(html: str, lid: str) -> list[str]: | |
| 151 | + """Galerie complète : plus grand tableau listing_photos porté par un objet | |
| 152 | + du MÊME id (le target MediaViewer préchargé la contient hors connexion).""" | |
| 153 | + best: list[str] = [] | |
| 154 | + | |
| 155 | + def walk(o): | |
| 156 | + nonlocal best | |
| 157 | + if isinstance(o, dict): | |
| 158 | + lp = o.get("listing_photos") | |
| 159 | + if (isinstance(lp, list) and lp | |
| 160 | + and str(o.get("id") or "") == lid): | |
| 161 | + uris = [] | |
| 162 | + for p in lp: | |
| 163 | + uri = ((p.get("image") or {}).get("uri") | |
| 164 | + if isinstance(p, dict) else "") or "" | |
| 165 | + if uri and uri not in uris: | |
| 166 | + uris.append(uri) | |
| 167 | + if len(uris) > len(best): | |
| 168 | + best = uris | |
| 169 | + for v in o.values(): | |
| 170 | + walk(v) | |
| 171 | + elif isinstance(o, list): | |
| 172 | + for v in o: | |
| 173 | + walk(v) | |
| 174 | + | |
| 175 | + for data in _iter_json_scripts(html): | |
| 176 | + walk(data) | |
| 177 | + return best | |
| 178 | + | |
| 179 | + | |
| 180 | +def _clean_desc(text: str) -> str: | |
| 181 | + t = text.replace("\r", "\n") | |
| 182 | + t = re.sub(r"[ \t ]+", " ", t) | |
| 183 | + t = re.sub(r" ?\n ?", "\n", t) | |
| 184 | + t = re.sub(r"\n{3,}", "\n\n", t) | |
| 185 | + return t.strip() | |
| 186 | + | |
| 187 | + | |
| 188 | +def parse_detail(html: str, lid: str) -> dict: | |
| 189 | + """Champs riches d'une fiche /marketplace/item/<id> hors connexion. | |
| 190 | + | |
| 191 | + {} si la page n'a pas pu être rendue (échec réseau : l'appelant ne doit | |
| 192 | + PAS mettre en cache), {"nopdp": True} si rendue mais sans objet cible | |
| 193 | + (fiche supprimée / mur de login : cacher pour ne pas boucler).""" | |
| 194 | + if not html: | |
| 195 | + return {} | |
| 196 | + o = _pdp_target(html) | |
| 197 | + if not o: | |
| 198 | + return {"nopdp": True} | |
| 199 | + out: dict = {} | |
| 200 | + if o.get("is_sold") or o.get("is_pending") or o.get("is_live") is False: | |
| 201 | + out["gone"] = True # loué / en attente / retiré | |
| 202 | + loc = o.get("location") or {} | |
| 203 | + if loc.get("latitude") and loc.get("longitude"): | |
| 204 | + out["lat"] = loc["latitude"] | |
| 205 | + out["lng"] = loc["longitude"] | |
| 206 | + geo = loc.get("reverse_geocode_detailed") or {} | |
| 207 | + if geo.get("city"): | |
| 208 | + out["city"] = geo["city"] | |
| 209 | + if geo.get("state"): | |
| 210 | + out["state"] = geo["state"] | |
| 211 | + lt = (o.get("location_text") or {}).get("text") or "" | |
| 212 | + if lt: # ex. « Québec, QC » / « Norfolk, ON » | |
| 213 | + out["location_text"] = lt | |
| 214 | + parts = [p.strip() for p in lt.split(",") if p.strip()] | |
| 215 | + if parts and not out.get("city"): | |
| 216 | + out["city"] = parts[0] | |
| 217 | + if len(parts) > 1 and not out.get("state"): | |
| 218 | + out["state"] = parts[1] | |
| 219 | + desc = (o.get("redacted_description") or {}).get("text") or "" | |
| 220 | + if desc: | |
| 221 | + out["description"] = _clean_desc(desc)[:6000] | |
| 222 | + photos = _gallery(html, lid) | |
| 223 | + if photos: | |
| 224 | + out["images"] = photos | |
| 225 | + return out | |
| 226 | + | |
| 227 | + | |
| 228 | +async def main() -> None: | |
| 229 | + async with Actor: | |
| 230 | + inp = await Actor.get_input() or {} | |
| 231 | + search_urls = [u for u in (inp.get("searchUrls") or []) if u] | |
| 232 | + if not search_urls: | |
| 233 | + search_urls = default_search_urls() | |
| 234 | + get_details = inp.get("getDetails", True) | |
| 235 | + max_details = int(inp.get("maxDetails") or 200) | |
| 236 | + skip_ids = {str(i) for i in (inp.get("skipDetailIds") or [])} | |
| 237 | + extra_ids = [str(i) for i in (inp.get("extraDetailIds") or [])] | |
| 238 | + template = (inp.get("proxyUrlTemplate") or "").strip() or None | |
| 239 | + proxy = None | |
| 240 | + if not template: | |
| 241 | + proxy = await Actor.create_proxy_configuration( | |
| 242 | + actor_proxy_input=inp.get("proxyConfiguration")) | |
| 243 | + fetcher = Fetcher(proxy, delay=float(inp.get("requestDelay") or 1), | |
| 244 | + proxy_template=template) | |
| 245 | + sem = asyncio.Semaphore(int(inp.get("concurrency") or 8)) | |
| 246 | + | |
| 247 | + # -- phase recherche --------------------------------------------------- | |
| 248 | + found: dict[str, tuple[dict, str]] = {} # id -> (objet, source_url) | |
| 249 | + fails = 0 | |
| 250 | + | |
| 251 | + async def search(url: str) -> None: | |
| 252 | + nonlocal fails | |
| 253 | + async with sem: | |
| 254 | + try: | |
| 255 | + resp = await fetcher.get(url, session_id=f"q{hash(url)}") | |
| 256 | + except Exception as exc: | |
| 257 | + fails += 1 | |
| 258 | + Actor.log.warning(f"recherche KO {url} : {exc}") | |
| 259 | + return | |
| 260 | + if resp.status_code != 200: | |
| 261 | + fails += 1 | |
| 262 | + return | |
| 263 | + for lid, obj in walk_listings(resp.text).items(): | |
| 264 | + found.setdefault(lid, (obj, url)) | |
| 265 | + | |
| 266 | + await asyncio.gather(*[search(u) for u in search_urls]) | |
| 267 | + Actor.log.info(f"recherche : {len(found)} annonces uniques " | |
| 268 | + f"({len(search_urls)} URLs, {fails} échecs)") | |
| 269 | + | |
| 270 | + for lid, (obj, src) in found.items(): | |
| 271 | + photo = ((obj.get("primary_listing_photo") or {}) | |
| 272 | + .get("image") or {}).get("uri") or "" | |
| 273 | + loc = obj.get("location") or {} | |
| 274 | + geo = loc.get("reverse_geocode") or {} | |
| 275 | + await Actor.push_data({ | |
| 276 | + "kind": "listing", | |
| 277 | + "id": lid, | |
| 278 | + "title": (obj.get("marketplace_listing_title") or "")[:300], | |
| 279 | + "price": price_of(obj), | |
| 280 | + "city": (geo.get("city") | |
| 281 | + or (geo.get("city_page") or {}).get("display_name") | |
| 282 | + or ""), | |
| 283 | + "state": geo.get("state") or "", | |
| 284 | + "primary_photo": photo, | |
| 285 | + "is_sold": bool(obj.get("is_sold")), | |
| 286 | + "is_pending": bool(obj.get("is_pending")), | |
| 287 | + "source_url": src, | |
| 288 | + "url": f"{BASE}/item/{lid}/", | |
| 289 | + }) | |
| 290 | + | |
| 291 | + # -- phase détail ------------------------------------------------------ | |
| 292 | + if not get_details or max_details <= 0: | |
| 293 | + return | |
| 294 | + todo: list[str] = [] | |
| 295 | + for lid, (obj, _src) in found.items(): | |
| 296 | + if lid in skip_ids or obj.get("is_sold") or obj.get("is_pending"): | |
| 297 | + continue | |
| 298 | + if price_of(obj) is None: | |
| 299 | + continue # sans prix : jamais publiable, épargner | |
| 300 | + # le flux public glisse des annonces d'autres provinces (suggestions) | |
| 301 | + geo = (obj.get("location") or {}).get("reverse_geocode") or {} | |
| 302 | + st = (geo.get("state") or "").strip().lower() | |
| 303 | + if st and st not in ("qc", "quebec", "québec"): | |
| 304 | + continue | |
| 305 | + todo.append(lid) | |
| 306 | + for lid in extra_ids: # rattrapage : après les nouveautés | |
| 307 | + if lid not in todo and lid not in skip_ids: | |
| 308 | + todo.append(lid) | |
| 309 | + todo = todo[:max_details] | |
| 310 | + | |
| 311 | + async def detail(lid: str) -> None: | |
| 312 | + async with sem: | |
| 313 | + try: | |
| 314 | + resp = await fetcher.get(f"{BASE}/item/{lid}/", | |
| 315 | + session_id=f"d{lid}") | |
| 316 | + payload = parse_detail( | |
| 317 | + resp.text if resp.status_code == 200 else "", lid) | |
| 318 | + except Exception as exc: | |
| 319 | + Actor.log.warning(f"détail KO {lid} : {exc}") | |
| 320 | + payload = {} | |
| 321 | + await Actor.push_data({"kind": "detail", "id": lid, | |
| 322 | + "ok": bool(payload), **payload}) | |
| 323 | + | |
| 324 | + await asyncio.gather(*[detail(lid) for lid in todo]) | |
| 325 | + Actor.log.info(f"détail : {len(todo)} fiches visitées") | |
added
actors/ka-fb-marketplace/src/net.py
+97 −0
@@ -0,0 +1,97 @@ | ||
| 1 | +# ============================================================================== | |
| 2 | +# Author: Simon-Pierre Boucher <contact@spboucher.ai> | |
| 3 | +# File: src/net.py (ka-fb-marketplace) | |
| 4 | +# Desc: Fetch commun des acteurs KA — curl_cffi (empreinte TLS Chrome) + | |
| 5 | +# proxy Apify (résidentiel par défaut) OU gabarit de proxy externe | |
| 6 | +# ({session} → id de session, nouvelle IP par tentative), throttling | |
| 7 | +# poli, retries à backoff exponentiel + jitter sur 403/407/408/425/ | |
| 8 | +# 429/500/502/503/504. | |
| 9 | +# ============================================================================== | |
| 10 | +from __future__ import annotations | |
| 11 | + | |
| 12 | +import asyncio | |
| 13 | +import random | |
| 14 | +import re | |
| 15 | + | |
| 16 | +from apify import Actor | |
| 17 | +from curl_cffi import requests as cffi | |
| 18 | + | |
| 19 | +UA = ("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 " | |
| 20 | + "(KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36") | |
| 21 | + | |
| 22 | +# statuts transitoires : mur anti-bot, proxy, rate-limit, erreurs serveur | |
| 23 | +RETRY_STATUSES = frozenset({403, 407, 408, 425, 429, 500, 502, 503, 504}) | |
| 24 | + | |
| 25 | + | |
| 26 | +def _backoff(attempt: int) -> float: | |
| 27 | + """Backoff exponentiel plafonné + jitter (anti-troupeau).""" | |
| 28 | + return min(1.2 * (2 ** attempt), 12.0) + random.uniform(0.0, 0.8) | |
| 29 | + | |
| 30 | + | |
| 31 | +class Fetcher: | |
| 32 | + """HTTP poli : proxy Apify ou externe + impersonation Chrome + retries.""" | |
| 33 | + | |
| 34 | + def __init__(self, proxy_configuration, delay: float = 1.0, | |
| 35 | + proxy_template: str | None = None) -> None: | |
| 36 | + self.proxy_configuration = proxy_configuration | |
| 37 | + self.proxy_template = proxy_template or None | |
| 38 | + self.delay = delay | |
| 39 | + self._lock = asyncio.Lock() | |
| 40 | + self._last = 0.0 | |
| 41 | + | |
| 42 | + async def _throttle(self) -> None: | |
| 43 | + async with self._lock: | |
| 44 | + now = asyncio.get_event_loop().time() | |
| 45 | + wait = self.delay - (now - self._last) | |
| 46 | + if wait > 0: | |
| 47 | + await asyncio.sleep(wait) | |
| 48 | + self._last = asyncio.get_event_loop().time() | |
| 49 | + | |
| 50 | + async def _proxy_url(self, session_id: str | None, attempt: int) -> str | None: | |
| 51 | + sid = session_id or f"s{random.randint(1, 999_999)}" | |
| 52 | + sid = re.sub(r"[^\w._~]", "", sid)[:40] or "s" | |
| 53 | + # nouvelle session proxy (nouvelle IP) à chaque tentative | |
| 54 | + sid = f"{sid}r{attempt}" | |
| 55 | + if self.proxy_template: | |
| 56 | + return self.proxy_template.replace("{session}", sid) | |
| 57 | + if self.proxy_configuration: | |
| 58 | + return await self.proxy_configuration.new_url(session_id=sid) | |
| 59 | + return None | |
| 60 | + | |
| 61 | + async def request(self, method: str, url: str, | |
| 62 | + headers: dict | None = None, data=None, | |
| 63 | + retries: int = 4, session_id: str | None = None, | |
| 64 | + impersonate: str | None = "chrome"): | |
| 65 | + hdrs = {"User-Agent": UA, | |
| 66 | + "Accept-Language": "fr-CA,fr;q=0.9,en;q=0.8"} | |
| 67 | + if headers: | |
| 68 | + hdrs.update(headers) | |
| 69 | + last_exc: Exception | None = None | |
| 70 | + for attempt in range(retries): | |
| 71 | + await self._throttle() | |
| 72 | + proxy = await self._proxy_url(session_id, attempt) | |
| 73 | + try: | |
| 74 | + resp = await asyncio.to_thread( | |
| 75 | + cffi.request, method, url, headers=hdrs, data=data, | |
| 76 | + impersonate=impersonate, timeout=60, allow_redirects=True, | |
| 77 | + proxies={"http": proxy, "https": proxy} if proxy else None) | |
| 78 | + if resp.status_code in RETRY_STATUSES \ | |
| 79 | + and attempt < retries - 1: | |
| 80 | + Actor.log.warning( | |
| 81 | + f"HTTP {resp.status_code} {url} — retry {attempt + 1}") | |
| 82 | + await asyncio.sleep(_backoff(attempt)) | |
| 83 | + continue | |
| 84 | + return resp | |
| 85 | + except Exception as exc: # réseau/proxy : on retente | |
| 86 | + last_exc = exc | |
| 87 | + await asyncio.sleep(_backoff(attempt)) | |
| 88 | + if last_exc: | |
| 89 | + raise last_exc | |
| 90 | + raise RuntimeError(f"échec après {retries} tentatives : {url}") | |
| 91 | + | |
| 92 | + async def get(self, url: str, headers: dict | None = None, | |
| 93 | + retries: int = 4, session_id: str | None = None, | |
| 94 | + impersonate: str | None = "chrome"): | |
| 95 | + return await self.request("GET", url, headers=headers, | |
| 96 | + retries=retries, session_id=session_id, | |
| 97 | + impersonate=impersonate) | |
modified
data/sources.json
+1 −1
@@ -2724,7 +2724,7 @@ | ||
| 2724 | 2724 | "name": "Facebook Marketplace (location)", |
| 2725 | 2725 | "url": "https://www.facebook.com/marketplace", |
| 2726 | 2726 | "listing_url": "https://www.facebook.com/marketplace/montreal/propertyrentals", |
| 2727 | − "sectors": "Grandes villes QC — annonces de particuliers (Scrapfly)", | |
| 2727 | + "sectors": "Toute la province (33 villes, rayon ~65 km chacune) — annonces de particuliers (acteur Apify maison ka-fb-marketplace)", | |
| 2728 | 2728 | "connector": "fb_marketplace", |
| 2729 | 2729 | "status": "actif", |
| 2730 | 2730 | "region": "Province" |
modified
docs/connecteurs/INDEX.md
+217 −217
@@ -1,228 +1,228 @@ | ||
| 1 | 1 | # Lou-Ka — Index des connecteurs |
| 2 | 2 | |
| 3 | −_Généré automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Généré automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**217 connecteurs documentés** (215 activés, 2 désactivés) · **58112 annonces actives** au total · registre : 281 entrées. | |
| 5 | +**217 connecteurs documentés** (215 activés, 2 désactivés) · **60703 annonces actives** au total · registre : 281 entrées. | |
| 6 | 6 | |
| 7 | 7 | | Connecteur | Nom | Région | Type d'accès | Backend | Actives/Total | GPS | Prix | Photos | État | Dernier sync OK | |
| 8 | 8 | |---|---|---|---|---|---|---|---|---|---|---| |
| 9 | −| [`aalto`](aalto.md) | Aalto Suites (Zibi / Dream) | Outaouais | API JSON interne du site | direct | 26/33 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:00 | | |
| 10 | −| [`acceslogis_gb`](acceslogis_gb.md) | Accès Logis GB | Lanaudière / Mauric… | pages HTML (rendu serveur) | direct | 10/11 | 20 % | 100 % | 100 % | actif | 2026-08-18 06:00 | | |
| 11 | −| [`agence_sherbrooke`](agence_sherbrooke.md) | Agence de location Sherbrooke (groupe P… | Estrie | sitemap XML + pages HTML | direct | 14/18 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:01 | | |
| 12 | −| [`akelius`](akelius.md) | Akelius Montréal | Montréal | pages HTML (rendu serveur) | direct | 242/290 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:01 | | |
| 13 | −| [`alexcellence`](alexcellence.md) | Immeubles Alexcellence | Estrie | pages HTML (rendu serveur) | direct | 6/6 | 50 % | 100 % | 100 % | actif | 2026-08-18 06:01 | | |
| 14 | −| [`alias_appartements`](alias_appartements.md) | Alias Appartements | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:01 | | |
| 15 | −| [`alouer_sherbrooke`](alouer_sherbrooke.md) | À Louer Sherbrooke | Estrie | API admin-ajax (WordPress) | direct | 1/1 | 0 % | 0 % | 100 % | actif | 2026-08-18 06:01 | | |
| 16 | −| [`app_urbains`](app_urbains.md) | Appartements Urbains | Québec | sitemap XML + pages HTML | direct | 18/21 | 100 % | 83 % | 100 % | actif | 2026-08-18 06:01 | | |
| 17 | −| [`appartements_rimouski`](appartements_rimouski.md) | Appartements Rimouski (Immeubles DTM) | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 19/20 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:01 | | |
| 18 | −| [`ascensio`](ascensio.md) | Groupe Ascensio | Estrie | pages HTML (rendu serveur) | direct | 9/10 | 44 % | 100 % | 100 % | actif | 2026-08-18 06:01 | | |
| 19 | −| [`atimco`](atimco.md) | Atimco | Montérégie | sitemap XML + pages HTML | direct | 299/299 | 100 % | 99 % | 96 % | actif | 2026-08-18 06:19 | | |
| 20 | −| [`atlas_immo`](atlas_immo.md) | Atlas société immobilière | Chaudière-Appalaches | pages HTML (rendu serveur) | direct | 0/0 | — | — | — | actif | 2026-08-18 06:01 | | |
| 21 | −| [`aula`](aula.md) | AULA Lévis | Québec | API REST WordPress (wp-json) | direct | 68/70 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:01 | | |
| 22 | −| [`axia`](axia.md) | Axia Appartements | Montréal | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:01 | | |
| 23 | −| [`barnes_quebec`](barnes_quebec.md) | BARNES Québec (location) | Montréal | API JSON interne du site | direct | 101/103 | 99 % | 98 % | 100 % | actif | 2026-08-18 06:01 | | |
| 24 | −| [`beaudoin`](beaudoin.md) | Société Beaudoin Immobilier | Montréal | API REST WordPress (wp-json) | direct | 12/12 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:01 | | |
| 25 | −| [`beaulieu_groupe`](beaulieu_groupe.md) | Beaulieu Groupe Immobilier (BGI) | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 4/4 | 100 % | 0 % | 100 % | actif | 2026-08-18 06:01 | | |
| 26 | −| [`bestlife`](bestlife.md) | Les Gestions Bestlife | Estrie | pages HTML (rendu serveur) | direct | 12/13 | 92 % | 100 % | 100 % | actif | 2026-08-18 06:01 | | |
| 27 | −| [`boardwalk`](boardwalk.md) | Boardwalk REIT | Montréal | pages HTML (rendu serveur) | direct | 100/100 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:02 | | |
| 28 | −| [`bons_locataires`](bons_locataires.md) | Bons Locataires | Grand Montréal | sitemap XML + pages HTML | direct | 14/14 | 100 % | 21 % | 93 % | actif | 2026-08-18 06:03 | | |
| 29 | −| [`boreal_abitibi`](boreal_abitibi.md) | Constructions Boréal Abitibi | Abitibi-Témiscaming… | API admin-ajax (WordPress) | direct | 3/5 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:03 | | |
| 30 | −| [`bribourg`](bribourg.md) | Bribourg | Québec | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:03 | | |
| 31 | −| [`brigil`](brigil.md) | Brigil | Outaouais | API JSON interne du site | direct | 42/42 | 98 % | 24 % | 100 % | actif | 2026-08-18 06:05 | | |
| 32 | −| [`brio`](brio.md) | Les Immeubles Brio | Québec | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:05 | | |
| 33 | −| [`brivia_1sp`](brivia_1sp.md) | Groupe Brivia (1 Square Phillips) | Montréal | API JSON interne du site | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:05 | | |
| 34 | −| [`brochu`](brochu.md) | Groupe Immobilier Brochu | Québec | pages HTML (rendu serveur) | direct | 7/7 | 86 % | 57 % | 100 % | actif | 2026-08-18 06:05 | | |
| 35 | −| [`cap_gestion`](cap_gestion.md) | CAP Gestion (CAP Immobilier) | Laurentides / Lanau… | pages HTML (rendu serveur) | direct | 122/122 | 98 % | 100 % | 100 % | actif | 2026-08-18 06:05 | | |
| 36 | −| [`capital_rdr`](capital_rdr.md) | Gestion Capital RDR | Mauricie | sitemap XML + pages HTML | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:05 | | |
| 37 | −| [`capreit`](capreit.md) | CAPREIT | Québec | API admin-ajax (WordPress) | direct | 117/122 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:05 | | |
| 38 | −| [`carat_immobilier`](carat_immobilier.md) | Carat Immobilier | Abitibi-Témiscaming… | sitemap XML + pages HTML | direct | 3/4 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:05 | | |
| 39 | −| [`centurion`](centurion.md) | Centurion / CP Living (Quartier QB) | Québec | API JSON interne du site | direct | 4/4 | 100 % | 75 % | 100 % | actif | 2026-08-18 06:05 | | |
| 40 | −| [`cite_immobilier`](cite_immobilier.md) | Cité Immobilier | Centre-du-Québec | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 0 % | 0 % | actif | 2026-08-18 06:05 | | |
| 41 | −| [`cogir`](cogir.md) | Cogir Immobilier | Québec | pages HTML (rendu serveur) | direct | 285/300 | 89 % | 96 % | 100 % | actif | 2026-08-18 06:07 | | |
| 42 | −| [`contraste`](contraste.md) | Contraste Immobilier | Québec | pages HTML (rendu serveur) | direct | 221/234 | 100 % | 86 % | 100 % | actif | 2026-08-18 06:07 | | |
| 43 | −| [`copley`](copley.md) | Groupe Copley | Montréal | pages HTML (rendu serveur) | direct | 52/52 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:07 | | |
| 44 | −| [`cosoltec`](cosoltec.md) | Cosoltec (Evado, Le Monroe, Natür) | Laurentides | API JSON interne du site | direct | 44/52 | 98 % | 80 % | 100 % | actif | 2026-08-18 06:07 | | |
| 45 | −| [`courtemanche`](courtemanche.md) | Gestion Immobilière Courtemanche | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 0/0 | — | — | — | actif | 2026-08-18 06:07 | | |
| 46 | −| [`cromwell`](cromwell.md) | Cromwell Management | Montréal | pages HTML (rendu serveur) | direct | 12/12 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:07 | | |
| 47 | −| [`denux`](denux.md) | Groupe Denux | Montréal | API JSON interne du site | direct | 18/18 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:08 | | |
| 48 | −| [`desmarais`](desmarais.md) | Immeubles Desmarais | Outaouais | pages HTML (rendu serveur) | direct | 14/14 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:08 | | |
| 49 | −| [`desroches`](desroches.md) | Immeubles Claude Desroches | Montérégie | pages HTML (rendu serveur) | direct | 6/6 | 100 % | 100 % | 50 % | actif | 2026-08-18 06:08 | | |
| 50 | −| [`devcore`](devcore.md) | Devcore Group | Côte-Nord | API REST WordPress (wp-json) | direct | 14/14 | 0 % | 7 % | 100 % | actif | 2026-08-18 06:08 | | |
| 51 | −| [`devimco`](devimco.md) | Devimco Appartements | Montréal | API JSON interne du site | direct | 480/575 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:09 | | |
| 52 | −| [`dma_locago`](dma_locago.md) | DMA / Locago (Douville, Moffet & Associ… | Québec | pages HTML (rendu serveur) | direct | 118/124 | 29 % | 98 % | 100 % | actif | 2026-08-18 06:09 | | |
| 53 | −| [`duproprio`](duproprio.md) | DuProprio (location) | Province | sitemap XML + pages HTML | direct | 3890/3896 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:10 | | |
| 54 | −| [`dynamic`](dynamic.md) | Gestion immobilière Dynamic | Estrie | pages HTML (rendu serveur) | direct | 48/53 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:01 | | |
| 55 | −| [`edifia`](edifia.md) | Edifia Groupe Immobilier | Québec | pages HTML (rendu serveur) | direct | 180/185 | 100 % | 94 % | 100 % | actif | 2026-08-18 06:10 | | |
| 56 | −| [`elements`](elements.md) | Quartier les Éléments | Québec | pages HTML (rendu serveur) | direct | 2/4 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:10 | | |
| 57 | −| [`elite`](elite.md) | Elite Immobilier | Outaouais | pages HTML (rendu serveur) | direct | 12/12 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:10 | | |
| 58 | −| [`elk`](elk.md) | ELK Property Management | Outaouais | pages HTML (rendu serveur) | direct | 3/3 | 67 % | 100 % | 100 % | actif | 2026-08-18 06:10 | | |
| 59 | −| [`equinoxe_batimo`](equinoxe_batimo.md) | Batimo/EMD — Collection Équinoxe | Montréal | API admin-ajax (WordPress) | direct | 615/662 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:12 | | |
| 60 | −| [`evoludev`](evoludev.md) | Groupe Evoludev | Lanaudière | pages HTML (rendu serveur) | direct | 134/134 | 100 % | 99 % | 100 % | actif | 2026-08-18 06:12 | | |
| 61 | −| [`fb_marketplace`](fb_marketplace.md) | Facebook Marketplace (location) | Province | pages HTML (rendu serveur) | direct | 2270/6308 | 15 % | 100 % | 100 % | actif | 2026-08-18 06:19 | | |
| 62 | −| [`ferrovia`](ferrovia.md) | Ferrovia (condos locatifs Mirabel) | Laurentides | pages HTML (rendu serveur) | direct | 23/24 | 0 % | 0 % | 0 % | actif | 2026-08-18 06:19 | | |
| 63 | −| [`firma`](firma.md) | Groupe Firma | Montréal | API REST WordPress (wp-json) | direct | 12/12 | 75 % | 8 % | 100 % | actif | 2026-08-18 06:20 | | |
| 64 | −| [`floria`](floria.md) | Gestion Floria | Estrie | pages HTML (rendu serveur) | direct | 21/21 | 100 % | 24 % | 95 % | actif | 2026-08-18 06:20 | | |
| 65 | −| [`forsa`](forsa.md) | Gestion immobilière Forsa | Lanaudière | pages HTML (rendu serveur) | direct | 13/13 | 92 % | 100 % | 100 % | actif | 2026-08-18 06:20 | | |
| 66 | −| [`fournelle`](fournelle.md) | Appartements Fournelle (Groupe Fournell… | Centre-du-Québec | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-18 06:20 | | |
| 67 | −| [`garic`](garic.md) | Garic Gestion Immobilière | Outaouais | API admin-ajax (WordPress) | direct | 45/54 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:20 | | |
| 68 | −| [`gesteco`](gesteco.md) | Gesteco | Montérégie | API JSON interne du site | direct | 10/14 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:20 | | |
| 69 | −| [`gestimmo_estrie`](gestimmo_estrie.md) | Gestimmo Estrie | Estrie | pages HTML (rendu serveur) | direct | 41/41 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:20 | | |
| 70 | −| [`gestion_fauvel`](gestion_fauvel.md) | Gestion Fauvel | Centre-du-Québec | pages HTML (rendu serveur) | direct | 11/11 | 91 % | 91 % | 100 % | actif | 2026-08-18 06:20 | | |
| 71 | −| [`gestion_habitation`](gestion_habitation.md) | Gestion Habitation | Abitibi-Témiscaming… | sitemap XML + pages HTML | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-18 06:20 | | |
| 72 | −| [`gestion_isr`](gestion_isr.md) | Gestion ISR | Centre-du-Québec | pages HTML (rendu serveur) | direct | 20/22 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:20 | | |
| 73 | −| [`gestion_jdm`](gestion_jdm.md) | JDM Gestion immobilière | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 2/2 | 100 % | 0 % | 100 % | actif | 2026-08-18 06:20 | | |
| 74 | −| [`gestion_laprise`](gestion_laprise.md) | Gestion Laprise | Côte-Nord | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 50 % | 100 % | actif | 2026-08-18 06:20 | | |
| 75 | −| [`gestion_legrand`](gestion_legrand.md) | Gestion Le Grand | Centre-du-Québec | API REST WordPress (wp-json) | direct | 5/5 | 40 % | 100 % | 100 % | actif | 2026-08-18 06:20 | | |
| 76 | −| [`gestion_montreal`](gestion_montreal.md) | Gestion Montréal | Montréal | pages HTML (rendu serveur) | direct | 22/24 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:20 | | |
| 77 | −| [`gestion_tb`](gestion_tb.md) | Gestion TB (portail Appartements TB) | Centre-du-Québec | pages HTML (rendu serveur) | direct | 31/35 | 0 % | 100 % | 100 % | actif | 2026-08-18 06:20 | | |
| 78 | −| [`gestion_valco`](gestion_valco.md) | Gestion Valco | Mauricie | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 0 % | 50 % | actif | 2026-08-18 06:20 | | |
| 79 | −| [`gestipro`](gestipro.md) | Gestipro | Québec | pages HTML (rendu serveur) | direct | 98/116 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:34 | | |
| 80 | −| [`gia_t`](gia_t.md) | GIA-T — Gestion Immobilière Abitibi-Tém… | Abitibi-Témiscaming… | pages HTML (rendu serveur) | direct | 3/4 | 67 % | 100 % | 100 % | actif | 2026-08-18 03:34 | | |
| 81 | −| [`gimcote`](gimcote.md) | GIM Côté | Québec | pages HTML (rendu serveur) | direct | 85/89 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:35 | | |
| 82 | −| [`gio`](gio.md) | Gestion Immobilière de l'Outaouais (GIO) | Outaouais | pages HTML (rendu serveur) | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:35 | | |
| 83 | −| [`girescom`](girescom.md) | Girescom gestion immobilière | Québec | pages HTML (rendu serveur) | direct | 40/41 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:35 | | |
| 84 | −| [`girs`](girs.md) | GIRS — Gestion Immobilière de la Rive S… | Chaudière-Appalaches | sitemap XML + pages HTML | direct | 8/8 | 100 % | 0 % | 100 % | actif | 2026-08-18 03:35 | | |
| 85 | −| [`gparadis`](gparadis.md) | GParadis | Québec | pages HTML (rendu serveur) | direct | 22/22 | 82 % | 0 % | 100 % | actif | 2026-08-18 03:35 | | |
| 86 | −| [`groupe_dallaire`](groupe_dallaire.md) | Groupe Dallaire (Faubourg du Moulin) | Québec | API admin-ajax (WordPress) | Scrapfly | 255/259 | 100 % | 100 % | 100 % | actif (dégradé) | 2026-08-18 03:41 | | |
| 87 | −| [`groupe_jacques`](groupe_jacques.md) | Groupe Jacques | Centre-du-Québec | pages HTML (rendu serveur) | direct | 10/11 | 100 % | 60 % | 100 % | actif | 2026-08-18 03:41 | | |
| 88 | −| [`groupe_maurice`](groupe_maurice.md) | Le Groupe Maurice | Province | API REST WordPress (wp-json) | direct | 203/203 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:41 | | |
| 89 | −| [`groupe_robin`](groupe_robin.md) | Groupe Robin | Mauricie | API admin-ajax (WordPress) | direct | 72/74 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:41 | | |
| 90 | −| [`groupe_theoret`](groupe_theoret.md) | Groupe Théorêt (Gestion Immobilière) | Mauricie | pages HTML (rendu serveur) | direct | 24/24 | 83 % | 100 % | 0 % | actif | 2026-08-18 03:41 | | |
| 91 | −| [`habitations_jeanne`](habitations_jeanne.md) | Les Habitations Jeanne | Côte-Nord | sitemap XML + pages HTML | direct | 14/14 | 100 % | 0 % | 100 % | actif | 2026-08-18 03:41 | | |
| 92 | −| [`habitations_sf`](habitations_sf.md) | Les Habitations SF (S&F Gestion) | Lanaudière | pages HTML (rendu serveur) | direct | 7/7 | 43 % | 86 % | 100 % | actif | 2026-08-18 03:41 | | |
| 93 | −| [`halfred`](halfred.md) | Halfred | Outaouais | pages HTML (rendu serveur) | direct | 164/169 | 93 % | 100 % | 100 % | actif | 2026-08-18 03:42 | | |
| 94 | −| [`hazelview`](hazelview.md) | Hazelview Properties | Montréal | API JSON interne du site | direct | 6/6 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:42 | | |
| 95 | −| [`headway`](headway.md) | La Corporation Headway | Québec | pages HTML (rendu serveur) | direct | 7/7 | 86 % | 0 % | 100 % | actif | 2026-08-18 03:42 | | |
| 96 | −| [`heafey`](heafey.md) | Groupe Heafey (Le We 2, Le We 3, Loggia… | Outaouais | API JSON interne du site | direct | 246/255 | 15 % | 0 % | 100 % | actif | 2026-08-18 03:43 | | |
| 97 | −| [`hestia`](hestia.md) | Hestia Groupe immobilier | Mauricie | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:43 | | |
| 98 | −| [`huma`](huma.md) | HUMĀ Condos locatifs | Québec | pages HTML (rendu serveur) | direct | 38/38 | 26 % | 0 % | 100 % | actif | 2026-08-18 03:43 | | |
| 99 | −| [`immeubles_aeb`](immeubles_aeb.md) | Immeubles AEB | Saguenay–Lac-Saint-… | pages HTML (rendu serveur) | direct | 26/26 | 100 % | 100 % | 81 % | actif | 2026-08-18 03:43 | | |
| 100 | −| [`immeubles_bc`](immeubles_bc.md) | Les Immeubles Beaulieu et Collin | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 20/26 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:43 | | |
| 101 | −| [`immeubles_bois`](immeubles_bois.md) | Les Immeubles Bois | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 23/23 | 83 % | 0 % | 100 % | actif | 2026-08-18 03:43 | | |
| 102 | −| [`immeubles_db`](immeubles_db.md) | Les Immeubles D.B. Busque-Massé | Estrie | pages HTML (rendu serveur) | direct | 13/13 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:43 | | |
| 103 | −| [`immeubles_dcl`](immeubles_dcl.md) | Les Immeubles DCL | Abitibi-Témiscaming… | pages HTML (rendu serveur) | direct | 8/11 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:43 | | |
| 104 | −| [`immeubles_guillot`](immeubles_guillot.md) | Les Immeubles Guillot | Québec | pages HTML (rendu serveur) | direct | 7/7 | 57 % | 0 % | 100 % | actif | 2026-08-18 03:43 | | |
| 105 | −| [`immeubles_ouellet`](immeubles_ouellet.md) | Les Immeubles Vianney Ouellet & Fils | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:43 | | |
| 106 | −| [`immeubles_pm`](immeubles_pm.md) | Les Immeubles PM | Estrie | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:43 | | |
| 107 | −| [`immnasr`](immnasr.md) | Les Immeubles Michel Nazair | Outaouais | pages HTML (rendu serveur) | direct | 3/3 | 67 % | 100 % | 100 % | actif | 2026-08-18 03:43 | | |
| 108 | −| [`immobilia`](immobilia.md) | Immobilia Rimouski | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 1/2 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:43 | | |
| 109 | −| [`immogex`](immogex.md) | Immogex | Centre-du-Québec | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:43 | | |
| 110 | −| [`immomarketing`](immomarketing.md) | IMMOMARKETING (Immoappart) | Québec | pages HTML (rendu serveur) | direct | 83/90 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:44 | | |
| 111 | −| [`immostar`](immostar.md) | Immostar | Québec | API REST WordPress (wp-json) | direct | 156/165 | 72 % | 99 % | 100 % | actif | 2026-08-18 03:44 | | |
| 112 | −| [`info_logement`](info_logement.md) | Info-Logement | Lanaudière | pages HTML (rendu serveur) | direct | 50/56 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:45 | | |
| 113 | −| [`interrent`](interrent.md) | InterRent REIT (CLV Group) | Montréal | pages HTML (rendu serveur) | direct | 200/211 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:45 | | |
| 114 | −| [`jutras`](jutras.md) | Habitations Jutras | Centre-du-Québec | pages HTML (rendu serveur) | direct | 35/35 | 0 % | 54 % | 100 % | actif | 2026-08-18 03:45 | | |
| 115 | −| [`kangalou`](kangalou.md) | Kangalou | Province | API JSON interne du site | direct | 7916/7916 | 100 % | 100 % | 99 % | actif | 2026-08-18 03:54 | | |
| 116 | −| [`kass`](kass.md) | KASS Property Management | Outaouais | pages HTML (rendu serveur) | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-18 03:54 | | |
| 117 | −| [`katasa`](katasa.md) | Groupe Katasa | Outaouais | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-18 03:54 | | |
| 118 | −| [`kijiji`](kijiji.md) | Kijiji Québec (location) | Province | pages HTML (rendu serveur) | direct | 5251/7409 | 100 % | 97 % | 99 % | actif | 2026-08-18 04:02 | | |
| 119 | −| [`la_cour`](la_cour.md) | La Cour Appartements | Québec | API REST WordPress (wp-json) | direct | 20/21 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:01 | | |
| 120 | −| [`laberge`](laberge.md) | Groupe Laberge | Québec | pages HTML (rendu serveur) | direct | 55/58 | 93 % | 100 % | 100 % | actif | 2026-08-18 04:02 | | |
| 121 | −| [`labonte`](labonte.md) | Gestion Labonté | Estrie | pages HTML (rendu serveur) | direct | 18/18 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:02 | | |
| 122 | −| [`lachance`](lachance.md) | Les Entreprises Lachance | Estrie | sitemap XML + pages HTML | direct | 65/86 | 95 % | 100 % | 100 % | actif | 2026-08-18 04:04 | | |
| 123 | −| [`lacite`](lacite.md) | La Cité Gatineau (Adam Real Estate) | Outaouais | pages HTML (rendu serveur) | direct | 6/7 | 0 % | 0 % | 100 % | actif | 2026-08-18 04:06 | | |
| 124 | −| [`lafrance_mathieu`](lafrance_mathieu.md) | Lafrance & Mathieu | Québec | pages HTML (rendu serveur) | direct | 37/40 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:06 | | |
| 125 | −| [`lakle`](lakle.md) | La Klé | Québec | API REST WordPress (wp-json) | direct | 45/49 | 100 % | 56 % | 96 % | actif | 2026-08-18 04:07 | | |
| 126 | −| [`lambert`](lambert.md) | Société Immobilière Lambert | Mauricie | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 50 % | 100 % | actif | 2026-08-18 04:07 | | |
| 127 | −| [`laureat_richard`](laureat_richard.md) | Logements Lauréat Richard | Estrie | pages HTML (rendu serveur) | direct | 23/23 | 100 % | 0 % | 100 % | actif | 2026-08-18 04:07 | | |
| 128 | −| [`le_baronet`](le_baronet.md) | Le Baronet | Chaudière-Appalaches | sitemap XML + pages HTML | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-18 04:07 | | |
| 129 | −| [`le_st_georges`](le_st_georges.md) | Le St-Georges | Chaudière-Appalaches | API REST WordPress (wp-json) | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:07 | | |
| 130 | −| [`leclif`](leclif.md) | Le Clif | Québec | pages HTML (rendu serveur) | direct | 9/9 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:07 | | |
| 131 | −| [`ledomaine`](ledomaine.md) | Les Habitations Le Domaine | Montréal | pages HTML (rendu serveur) | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:07 | | |
| 132 | −| [`lelaureat`](lelaureat.md) | Résidences Le Lauréat | Estrie | pages HTML (rendu serveur) | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:07 | | |
| 133 | −| [`lequerre`](lequerre.md) | Habitations L'Équerre | Estrie | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:07 | | |
| 134 | −| [`lespac`](lespac.md) | LesPAC (location) | Province | pages HTML (rendu serveur) | direct | 2270/2568 | 47 % | 87 % | 93 % | actif | 2026-08-18 04:10 | | |
| 135 | −| [`leviu`](leviu.md) | Le VIU / VIU2 (Groupe Heafey) | Outaouais | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-18 04:10 | | |
| 136 | −| [`location_di`](location_di.md) | Location DI (Groupe Sphère DI) | Mauricie / Lanaudiè… | pages HTML (rendu serveur) | direct | 9/12 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:10 | | |
| 137 | −| [`location_saguenay`](location_saguenay.md) | Location Saguenay | Saguenay–Lac-Saint-… | pages HTML (rendu serveur) | direct | 21/21 | 76 % | 0 % | 100 % | actif | 2026-08-18 04:10 | | |
| 138 | −| [`loftsmtl`](loftsmtl.md) | Lofts MTL | Montréal | API JSON interne du site | direct | 9/9 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:10 | | |
| 139 | −| [`logement_mauricie`](logement_mauricie.md) | Logement Mauricie (regroupement de prop… | Mauricie | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:10 | | |
| 140 | −| [`logis_experts`](logis_experts.md) | Logis-Experts | Québec | API JSON interne du site | direct | 498/517 | 100 % | 100 % | 39 % | actif | 2026-08-18 04:10 | | |
| 141 | −| [`logisbourg`](logisbourg.md) | Logisbourg | Québec | pages HTML (rendu serveur) | direct | 11/14 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:11 | | |
| 142 | −| [`logisco`](logisco.md) | Logisco | Québec | pages HTML (rendu serveur) | direct | 157/174 | 99 % | 100 % | 100 % | actif | 2026-08-18 04:11 | | |
| 143 | −| [`logisma`](logisma.md) | Logisma | Québec | API REST WordPress (wp-json) | direct | 15/19 | 80 % | 100 % | 100 % | actif | 2026-08-18 04:11 | | |
| 144 | −| [`logispro`](logispro.md) | LogisPro Rimouski | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 4/4 | 100 % | 75 % | 100 % | actif | 2026-08-18 04:11 | | |
| 145 | −| [`logisquebec`](logisquebec.md) | LogisQuébec | Province | sitemap XML + pages HTML | direct | 6791/6794 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:20 | | |
| 146 | −| [`lokalia`](lokalia.md) | Espaces Lokalia | Québec | API admin-ajax (WordPress) | direct | 131/135 | 100 % | 82 % | 100 % | actif | 2026-08-18 04:21 | | |
| 147 | −| [`louer_ca`](louer_ca.md) | Louer.ca | Province | API GraphQL interne | direct | 4576/5357 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:33 | | |
| 148 | −| [`louer_saguenay`](louer_saguenay.md) | Louer Saguenay | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:33 | | |
| 149 | −| [`louis14`](louis14.md) | Quartier Louis Quatorze (Groupe Damco) | Québec | pages HTML (rendu serveur) | direct | 18/18 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:33 | | |
| 150 | −| [`lr_gestion`](lr_gestion.md) | LR Gestion immobilière (LR Location) | Outaouais | pages HTML (rendu serveur) | direct | 111/116 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:33 | | |
| 151 | −| [`luxuor`](luxuor.md) | Les Immeubles Luxuor | Saguenay–Lac-Saint-… | pages HTML (rendu serveur) | direct | 4/4 | 75 % | 0 % | 100 % | actif | 2026-08-18 04:34 | | |
| 152 | −| [`lynk_olymbec`](lynk_olymbec.md) | Lynk (Olymbec) | Montréal | pages HTML (rendu serveur) | Firecrawl | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:34 | | |
| 153 | −| [`m_immobilier`](m_immobilier.md) | M Immobilier (location) | Montréal | pages HTML (rendu serveur) | direct | 193/199 | 59 % | 100 % | 100 % | actif | 2026-08-18 04:34 | | |
| 154 | −| [`majestic`](majestic.md) | Le Majestic du Lac Boivin | Montérégie | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 0 % | actif | 2026-08-18 04:34 | | |
| 155 | −| [`matinale`](matinale.md) | Gestion Matinale | Estrie | pages HTML (rendu serveur) | direct | 44/45 | 57 % | 100 % | 100 % | actif | 2026-08-18 04:35 | | |
| 156 | −| [`may_bourg`](may_bourg.md) | Gestion May Bourg | Centre-du-Québec | API REST WordPress (wp-json) | direct | 6/7 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:35 | | |
| 157 | −| [`medway`](medway.md) | Groupe Medway | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 488/498 | 91 % | 100 % | 100 % | actif | 2026-08-18 04:36 | | |
| 158 | −| [`mellem`](mellem.md) | Mellem (Groupe Mach) | Outaouais | sitemap XML + pages HTML | direct | 78/87 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:36 | | |
| 159 | −| [`mercini`](mercini.md) | Groupe Mercini (Gestion Faleschini Merc… | Québec | pages HTML (rendu serveur) | direct | 47/52 | 94 % | 100 % | 100 % | actif | 2026-08-18 04:37 | | |
| 160 | −| [`metcap`](metcap.md) | MetCap Living | Montréal | pages HTML (rendu serveur) | direct | 8/8 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:37 | | |
| 161 | −| [`minto`](minto.md) | Minto Apartments | Montréal | pages HTML (rendu serveur) | direct | 19/20 | 84 % | 100 % | 100 % | actif | 2026-08-18 04:37 | | |
| 162 | −| [`mkar`](mkar.md) | Gestion Immobilière MKAR | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 5/5 | 100 % | 0 % | 100 % | actif | 2026-08-18 04:37 | | |
| 163 | −| [`moderno`](moderno.md) | Moderno Construction | Lanaudière | pages HTML (rendu serveur) | direct | 7/7 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:37 | | |
| 164 | −| [`mondev`](mondev.md) | Mondev | Montréal | pages HTML (rendu serveur) | direct | 47/49 | 49 % | 100 % | 100 % | actif | 2026-08-18 04:38 | | |
| 165 | −| [`montagnais`](montagnais.md) | Le Montagnais, résidences étudiantes | Estrie | API admin-ajax (WordPress) | direct | 31/31 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:38 | | |
| 166 | −| [`morin`](morin.md) | Constructions Morin | Estrie | pages HTML (rendu serveur) | direct | 6/7 | 83 % | 100 % | 100 % | actif | 2026-08-18 04:38 | | |
| 167 | −| [`msi`](msi.md) | MSI Gestion immobilière | Québec | pages HTML (rendu serveur) | direct | 96/105 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:38 | | |
| 168 | −| [`multi_logis`](multi_logis.md) | Multi-Logis | Côte-Nord | sitemap XML + pages HTML | direct | 27/27 | 100 % | 96 % | 70 % | actif | 2026-08-18 04:38 | | |
| 169 | −| [`niddamour`](niddamour.md) | Nid d'Amour | Montréal | API JSON interne du site | direct | 14/14 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:38 | | |
| 170 | −| [`novelo`](novelo.md) | Les Appartements Novelo | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:38 | | |
| 171 | −| [`oklouer`](oklouer.md) | OK Louer (location temporaire) | Québec | pages HTML (rendu serveur) | direct | 41/41 | 95 % | 100 % | 100 % | actif | 2026-08-18 04:39 | | |
| 172 | −| [`omhm`](omhm.md) | OMHM — logements abordables | Montréal | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 100 % | 0 % | actif | 2026-08-18 04:39 | | |
| 173 | −| [`osgoode`](osgoode.md) | Osgoode Properties | Outaouais | API JSON interne du site | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:39 | | |
| 174 | −| [`oxford`](oxford.md) | Appartements Oxford | Estrie | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-18 04:39 | | |
| 175 | −| [`per`](per.md) | Les Immeubles Paul-E. Richard | Québec | pages HTML (rendu serveur) | direct | 3/3 | 67 % | 100 % | 100 % | actif | 2026-08-18 04:39 | | |
| 176 | −| [`picard`](picard.md) | Picard Immobilier | Québec | pages HTML (rendu serveur) | direct | 34/34 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:39 | | |
| 177 | −| [`place_florimay`](place_florimay.md) | Place Florimay | Chaudière-Appalaches | API REST WordPress (wp-json) | direct | 0/0 | — | — | — | actif | 2026-08-18 04:39 | | |
| 178 | −| [`plan_a`](plan_a.md) | Plan A Immobilier | Montréal | pages HTML (rendu serveur) | direct | 11/11 | 91 % | 91 % | 100 % | actif | 2026-08-18 04:39 | | |
| 179 | −| [`progim`](progim.md) | Progim | Montréal | pages HTML (rendu serveur) | direct | 62/68 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:39 | | |
| 180 | −| [`projection_immo`](projection_immo.md) | Projection Immobilière | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 1/1 | 100 % | 0 % | 100 % | actif | 2026-08-18 04:40 | | |
| 181 | −| [`promenade_des_forts`](promenade_des_forts.md) | Promenade des Forts | Québec | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:40 | | |
| 182 | −| [`proprio_direct`](proprio_direct.md) | Proprio Direct (location) | Province | API JSON interne du site | direct | 190/190 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:40 | | |
| 183 | −| [`quanta`](quanta.md) | Gestion Quanta | Outaouais | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-18 04:40 | | |
| 184 | −| [`quartier_mosaique`](quartier_mosaique.md) | Quartier Mosaïque (Constrobourg) | Québec | pages HTML (rendu serveur) | direct | 24/24 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:40 | | |
| 185 | −| [`quartier_oree`](quartier_oree.md) | Quartier Orée | Chaudière-Appalaches | pages HTML (rendu serveur) | direct | 31/31 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:40 | | |
| 186 | −| [`quartier_plus`](quartier_plus.md) | Le Quartier Plus | Chaudière-Appalaches | sitemap XML + pages HTML | direct | 59/59 | 100 % | 0 % | 100 % | actif | 2026-08-18 04:40 | | |
| 187 | −| [`quartier_sila`](quartier_sila.md) | Quartier Sila | Québec | pages HTML (rendu serveur) | direct | 199/200 | 100 % | 26 % | 100 % | actif | 2026-08-18 04:40 | | |
| 188 | −| [`realstar`](realstar.md) | Realstar | Montréal | API JSON interne du site | direct | 9/9 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:40 | | |
| 189 | −| [`remax_quebec`](remax_quebec.md) | RE/MAX Québec (location) | Province | pages HTML (rendu serveur) | direct | 3237/3379 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:43 | | |
| 190 | −| [`rentals_ca`](rentals_ca.md) | Rentals.ca (Québec) | Province | API GraphQL interne | Scrapfly | 4906/4906 | 100 % | 100 % | 90 % | actif | 2026-08-18 04:49 | | |
| 191 | −| [`rentalys`](rentalys.md) | Rentalys | Montréal | pages HTML (rendu serveur) | direct | 10/10 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:49 | | |
| 9 | +| [`aalto`](aalto.md) | Aalto Suites (Zibi / Dream) | Outaouais | API JSON interne du site | direct | 24/35 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:18 | | |
| 10 | +| [`acceslogis_gb`](acceslogis_gb.md) | Accès Logis GB | Lanaudière / Mauric… | pages HTML (rendu serveur) | direct | 10/11 | 20 % | 100 % | 100 % | actif | 2026-08-22 17:18 | | |
| 11 | +| [`agence_sherbrooke`](agence_sherbrooke.md) | Agence de location Sherbrooke (groupe P… | Estrie | sitemap XML + pages HTML | direct | 13/19 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:18 | | |
| 12 | +| [`akelius`](akelius.md) | Akelius Montréal | Montréal | pages HTML (rendu serveur) | direct | 231/302 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:18 | | |
| 13 | +| [`alexcellence`](alexcellence.md) | Immeubles Alexcellence | Estrie | pages HTML (rendu serveur) | direct | 6/6 | 50 % | 100 % | 100 % | actif | 2026-08-22 17:18 | | |
| 14 | +| [`alias_appartements`](alias_appartements.md) | Alias Appartements | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:18 | | |
| 15 | +| [`alouer_sherbrooke`](alouer_sherbrooke.md) | À Louer Sherbrooke | Estrie | API admin-ajax (WordPress) | direct | 1/1 | 0 % | 0 % | 100 % | actif | 2026-08-22 17:18 | | |
| 16 | +| [`app_urbains`](app_urbains.md) | Appartements Urbains | Québec | sitemap XML + pages HTML | direct | 17/21 | 100 % | 82 % | 100 % | actif | 2026-08-22 17:18 | | |
| 17 | +| [`appartements_rimouski`](appartements_rimouski.md) | Appartements Rimouski (Immeubles DTM) | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 20/24 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:18 | | |
| 18 | +| [`ascensio`](ascensio.md) | Groupe Ascensio | Estrie | pages HTML (rendu serveur) | direct | 9/10 | 44 % | 100 % | 100 % | actif | 2026-08-22 17:18 | | |
| 19 | +| [`atimco`](atimco.md) | Atimco | Montérégie | sitemap XML + pages HTML | direct | 299/299 | 100 % | 99 % | 96 % | actif | 2026-08-22 17:19 | | |
| 20 | +| [`atlas_immo`](atlas_immo.md) | Atlas société immobilière | Chaudière-Appalaches | pages HTML (rendu serveur) | direct | 0/0 | — | — | — | actif | 2026-08-22 17:19 | | |
| 21 | +| [`aula`](aula.md) | AULA Lévis | Québec | API REST WordPress (wp-json) | direct | 68/70 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:19 | | |
| 22 | +| [`axia`](axia.md) | Axia Appartements | Montréal | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:19 | | |
| 23 | +| [`barnes_quebec`](barnes_quebec.md) | BARNES Québec (location) | Montréal | API JSON interne du site | direct | 101/110 | 100 % | 99 % | 100 % | actif | 2026-08-22 17:19 | | |
| 24 | +| [`beaudoin`](beaudoin.md) | Société Beaudoin Immobilier | Montréal | API REST WordPress (wp-json) | direct | 12/12 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:19 | | |
| 25 | +| [`beaulieu_groupe`](beaulieu_groupe.md) | Beaulieu Groupe Immobilier (BGI) | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 5/5 | 100 % | 0 % | 100 % | actif | 2026-08-22 17:19 | | |
| 26 | +| [`bestlife`](bestlife.md) | Les Gestions Bestlife | Estrie | pages HTML (rendu serveur) | direct | 15/16 | 87 % | 100 % | 100 % | actif | 2026-08-22 17:19 | | |
| 27 | +| [`boardwalk`](boardwalk.md) | Boardwalk REIT | Montréal | pages HTML (rendu serveur) | direct | 100/100 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:20 | | |
| 28 | +| [`bons_locataires`](bons_locataires.md) | Bons Locataires | Grand Montréal | sitemap XML + pages HTML | direct | 17/17 | 100 % | 35 % | 94 % | actif | 2026-08-22 17:24 | | |
| 29 | +| [`boreal_abitibi`](boreal_abitibi.md) | Constructions Boréal Abitibi | Abitibi-Témiscaming… | API admin-ajax (WordPress) | direct | 3/6 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:24 | | |
| 30 | +| [`bribourg`](bribourg.md) | Bribourg | Québec | pages HTML (rendu serveur) | direct | 2/5 | 0 % | 0 % | 100 % | actif | 2026-08-22 17:24 | | |
| 31 | +| [`brigil`](brigil.md) | Brigil | Outaouais | API JSON interne du site | direct | 42/42 | 98 % | 24 % | 100 % | actif | 2026-08-22 17:24 | | |
| 32 | +| [`brio`](brio.md) | Les Immeubles Brio | Québec | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:24 | | |
| 33 | +| [`brivia_1sp`](brivia_1sp.md) | Groupe Brivia (1 Square Phillips) | Montréal | API JSON interne du site | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:24 | | |
| 34 | +| [`brochu`](brochu.md) | Groupe Immobilier Brochu | Québec | pages HTML (rendu serveur) | direct | 7/7 | 86 % | 57 % | 100 % | actif | 2026-08-22 17:24 | | |
| 35 | +| [`cap_gestion`](cap_gestion.md) | CAP Gestion (CAP Immobilier) | Laurentides / Lanau… | pages HTML (rendu serveur) | direct | 122/123 | 98 % | 100 % | 100 % | actif | 2026-08-22 17:25 | | |
| 36 | +| [`capital_rdr`](capital_rdr.md) | Gestion Capital RDR | Mauricie | sitemap XML + pages HTML | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:25 | | |
| 37 | +| [`capreit`](capreit.md) | CAPREIT | Québec | API admin-ajax (WordPress) | direct | 116/123 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:25 | | |
| 38 | +| [`carat_immobilier`](carat_immobilier.md) | Carat Immobilier | Abitibi-Témiscaming… | sitemap XML + pages HTML | direct | 3/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:25 | | |
| 39 | +| [`centurion`](centurion.md) | Centurion / CP Living (Quartier QB) | Québec | API JSON interne du site | direct | 4/4 | 100 % | 75 % | 100 % | actif | 2026-08-22 17:25 | | |
| 40 | +| [`cite_immobilier`](cite_immobilier.md) | Cité Immobilier | Centre-du-Québec | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 0 % | 0 % | actif | 2026-08-22 17:25 | | |
| 41 | +| [`cogir`](cogir.md) | Cogir Immobilier | Québec | pages HTML (rendu serveur) | direct | 282/300 | 92 % | 96 % | 100 % | actif | 2026-08-22 17:26 | | |
| 42 | +| [`contraste`](contraste.md) | Contraste Immobilier | Québec | pages HTML (rendu serveur) | direct | 208/234 | 100 % | 86 % | 100 % | actif | 2026-08-22 17:27 | | |
| 43 | +| [`copley`](copley.md) | Groupe Copley | Montréal | pages HTML (rendu serveur) | direct | 52/52 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:27 | | |
| 44 | +| [`cosoltec`](cosoltec.md) | Cosoltec (Evado, Le Monroe, Natür) | Laurentides | API JSON interne du site | direct | 44/57 | 100 % | 80 % | 100 % | actif | 2026-08-22 17:27 | | |
| 45 | +| [`courtemanche`](courtemanche.md) | Gestion Immobilière Courtemanche | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 0/0 | — | — | — | actif | 2026-08-22 17:27 | | |
| 46 | +| [`cromwell`](cromwell.md) | Cromwell Management | Montréal | pages HTML (rendu serveur) | direct | 12/12 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:27 | | |
| 47 | +| [`denux`](denux.md) | Groupe Denux | Montréal | API JSON interne du site | direct | 20/20 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:27 | | |
| 48 | +| [`desmarais`](desmarais.md) | Immeubles Desmarais | Outaouais | pages HTML (rendu serveur) | direct | 14/14 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:27 | | |
| 49 | +| [`desroches`](desroches.md) | Immeubles Claude Desroches | Montérégie | pages HTML (rendu serveur) | direct | 6/6 | 100 % | 100 % | 50 % | actif | 2026-08-22 17:28 | | |
| 50 | +| [`devcore`](devcore.md) | Devcore Group | Côte-Nord | API REST WordPress (wp-json) | direct | 14/14 | 0 % | 7 % | 100 % | actif | 2026-08-22 14:28 | | |
| 51 | +| [`devimco`](devimco.md) | Devimco Appartements | Montréal | API JSON interne du site | direct | 238/576 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:28 | | |
| 52 | +| [`dma_locago`](dma_locago.md) | DMA / Locago (Douville, Moffet & Associ… | Québec | pages HTML (rendu serveur) | direct | 116/126 | 28 % | 98 % | 100 % | actif | 2026-08-22 14:29 | | |
| 53 | +| [`duproprio`](duproprio.md) | DuProprio (location) | Province | sitemap XML + pages HTML | direct | 3894/4109 | 100 % | 100 % | 99 % | actif | 2026-08-22 14:29 | | |
| 54 | +| [`dynamic`](dynamic.md) | Gestion immobilière Dynamic | Estrie | pages HTML (rendu serveur) | direct | 44/55 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:18 | | |
| 55 | +| [`edifia`](edifia.md) | Edifia Groupe Immobilier | Québec | pages HTML (rendu serveur) | direct | 177/185 | 100 % | 94 % | 100 % | actif | 2026-08-22 14:29 | | |
| 56 | +| [`elements`](elements.md) | Quartier les Éléments | Québec | pages HTML (rendu serveur) | direct | 2/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:30 | | |
| 57 | +| [`elite`](elite.md) | Elite Immobilier | Outaouais | pages HTML (rendu serveur) | direct | 12/12 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:30 | | |
| 58 | +| [`elk`](elk.md) | ELK Property Management | Outaouais | pages HTML (rendu serveur) | direct | 3/3 | 67 % | 100 % | 100 % | actif | 2026-08-22 14:30 | | |
| 59 | +| [`equinoxe_batimo`](equinoxe_batimo.md) | Batimo/EMD — Collection Équinoxe | Montréal | API admin-ajax (WordPress) | direct | 616/662 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:32 | | |
| 60 | +| [`evoludev`](evoludev.md) | Groupe Evoludev | Lanaudière | pages HTML (rendu serveur) | direct | 134/134 | 100 % | 99 % | 100 % | actif | 2026-08-22 14:32 | | |
| 61 | +| [`fb_marketplace`](fb_marketplace.md) | Facebook Marketplace (location) | Province | API JSON interne du site | direct | 2387/22526 | 23 % | 100 % | 100 % | actif | 2026-08-22 17:23 | | |
| 62 | +| [`ferrovia`](ferrovia.md) | Ferrovia (condos locatifs Mirabel) | Laurentides | pages HTML (rendu serveur) | direct | 22/24 | 100 % | 0 % | 100 % | actif | 2026-08-22 14:42 | | |
| 63 | +| [`firma`](firma.md) | Groupe Firma | Montréal | API REST WordPress (wp-json) | direct | 12/12 | 75 % | 8 % | 100 % | actif | 2026-08-22 14:42 | | |
| 64 | +| [`floria`](floria.md) | Gestion Floria | Estrie | pages HTML (rendu serveur) | direct | 21/21 | 100 % | 24 % | 95 % | actif | 2026-08-22 14:42 | | |
| 65 | +| [`forsa`](forsa.md) | Gestion immobilière Forsa | Lanaudière | pages HTML (rendu serveur) | direct | 10/13 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:42 | | |
| 66 | +| [`fournelle`](fournelle.md) | Appartements Fournelle (Groupe Fournell… | Centre-du-Québec | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-22 14:42 | | |
| 67 | +| [`garic`](garic.md) | Garic Gestion Immobilière | Outaouais | API admin-ajax (WordPress) | direct | 45/54 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:42 | | |
| 68 | +| [`gesteco`](gesteco.md) | Gesteco | Montérégie | API JSON interne du site | direct | 9/15 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:42 | | |
| 69 | +| [`gestimmo_estrie`](gestimmo_estrie.md) | Gestimmo Estrie | Estrie | pages HTML (rendu serveur) | direct | 41/41 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:43 | | |
| 70 | +| [`gestion_fauvel`](gestion_fauvel.md) | Gestion Fauvel | Centre-du-Québec | pages HTML (rendu serveur) | direct | 11/11 | 91 % | 91 % | 100 % | actif | 2026-08-22 14:43 | | |
| 71 | +| [`gestion_habitation`](gestion_habitation.md) | Gestion Habitation | Abitibi-Témiscaming… | sitemap XML + pages HTML | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-22 14:43 | | |
| 72 | +| [`gestion_isr`](gestion_isr.md) | Gestion ISR | Centre-du-Québec | pages HTML (rendu serveur) | direct | 20/22 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:43 | | |
| 73 | +| [`gestion_jdm`](gestion_jdm.md) | JDM Gestion immobilière | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 2/2 | 100 % | 0 % | 100 % | actif | 2026-08-22 14:43 | | |
| 74 | +| [`gestion_laprise`](gestion_laprise.md) | Gestion Laprise | Côte-Nord | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 50 % | 100 % | actif | 2026-08-22 14:43 | | |
| 75 | +| [`gestion_legrand`](gestion_legrand.md) | Gestion Le Grand | Centre-du-Québec | API REST WordPress (wp-json) | direct | 5/5 | 40 % | 100 % | 100 % | actif | 2026-08-22 14:43 | | |
| 76 | +| [`gestion_montreal`](gestion_montreal.md) | Gestion Montréal | Montréal | pages HTML (rendu serveur) | direct | 23/26 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:43 | | |
| 77 | +| [`gestion_tb`](gestion_tb.md) | Gestion TB (portail Appartements TB) | Centre-du-Québec | pages HTML (rendu serveur) | direct | 30/36 | 0 % | 100 % | 100 % | actif | 2026-08-22 14:43 | | |
| 78 | +| [`gestion_valco`](gestion_valco.md) | Gestion Valco | Mauricie | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 0 % | 50 % | actif | 2026-08-22 14:43 | | |
| 79 | +| [`gestipro`](gestipro.md) | Gestipro | Québec | pages HTML (rendu serveur) | direct | 103/124 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:43 | | |
| 80 | +| [`gia_t`](gia_t.md) | GIA-T — Gestion Immobilière Abitibi-Tém… | Abitibi-Témiscaming… | pages HTML (rendu serveur) | direct | 5/7 | 80 % | 100 % | 100 % | actif | 2026-08-22 14:43 | | |
| 81 | +| [`gimcote`](gimcote.md) | GIM Côté | Québec | pages HTML (rendu serveur) | direct | 86/91 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:43 | | |
| 82 | +| [`gio`](gio.md) | Gestion Immobilière de l'Outaouais (GIO) | Outaouais | pages HTML (rendu serveur) | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:43 | | |
| 83 | +| [`girescom`](girescom.md) | Girescom gestion immobilière | Québec | pages HTML (rendu serveur) | direct | 40/41 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:43 | | |
| 84 | +| [`girs`](girs.md) | GIRS — Gestion Immobilière de la Rive S… | Chaudière-Appalaches | sitemap XML + pages HTML | direct | 8/8 | 100 % | 0 % | 100 % | actif | 2026-08-22 14:43 | | |
| 85 | +| [`gparadis`](gparadis.md) | GParadis | Québec | pages HTML (rendu serveur) | direct | 22/22 | 82 % | 0 % | 100 % | actif | 2026-08-22 14:43 | | |
| 86 | +| [`groupe_dallaire`](groupe_dallaire.md) | Groupe Dallaire (Faubourg du Moulin) | Québec | API admin-ajax (WordPress) | Scrapfly | 255/259 | 100 % | 100 % | 100 % | actif (dégradé) | 2026-08-22 14:44 | | |
| 87 | +| [`groupe_jacques`](groupe_jacques.md) | Groupe Jacques | Centre-du-Québec | pages HTML (rendu serveur) | direct | 10/11 | 100 % | 60 % | 100 % | actif | 2026-08-22 14:44 | | |
| 88 | +| [`groupe_maurice`](groupe_maurice.md) | Le Groupe Maurice | Province | API REST WordPress (wp-json) | direct | 203/203 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:45 | | |
| 89 | +| [`groupe_robin`](groupe_robin.md) | Groupe Robin | Mauricie | API admin-ajax (WordPress) | direct | 71/76 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:45 | | |
| 90 | +| [`groupe_theoret`](groupe_theoret.md) | Groupe Théorêt (Gestion Immobilière) | Mauricie | pages HTML (rendu serveur) | direct | 24/24 | 83 % | 100 % | 0 % | actif | 2026-08-22 14:45 | | |
| 91 | +| [`habitations_jeanne`](habitations_jeanne.md) | Les Habitations Jeanne | Côte-Nord | sitemap XML + pages HTML | direct | 14/14 | 100 % | 0 % | 100 % | actif | 2026-08-22 14:45 | | |
| 92 | +| [`habitations_sf`](habitations_sf.md) | Les Habitations SF (S&F Gestion) | Lanaudière | pages HTML (rendu serveur) | direct | 7/7 | 43 % | 86 % | 100 % | actif | 2026-08-22 14:45 | | |
| 93 | +| [`halfred`](halfred.md) | Halfred | Outaouais | pages HTML (rendu serveur) | direct | 165/171 | 93 % | 100 % | 100 % | actif | 2026-08-22 14:46 | | |
| 94 | +| [`hazelview`](hazelview.md) | Hazelview Properties | Montréal | API JSON interne du site | direct | 6/6 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:46 | | |
| 95 | +| [`headway`](headway.md) | La Corporation Headway | Québec | pages HTML (rendu serveur) | direct | 7/7 | 100 % | 0 % | 100 % | actif | 2026-08-22 14:46 | | |
| 96 | +| [`heafey`](heafey.md) | Groupe Heafey (Le We 2, Le We 3, Loggia… | Outaouais | API JSON interne du site | direct | 246/261 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:46 | | |
| 97 | +| [`hestia`](hestia.md) | Hestia Groupe immobilier | Mauricie | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:46 | | |
| 98 | +| [`huma`](huma.md) | HUMĀ Condos locatifs | Québec | pages HTML (rendu serveur) | direct | 38/38 | 100 % | 0 % | 100 % | actif | 2026-08-22 14:47 | | |
| 99 | +| [`immeubles_aeb`](immeubles_aeb.md) | Immeubles AEB | Saguenay–Lac-Saint-… | pages HTML (rendu serveur) | direct | 26/26 | 100 % | 100 % | 81 % | actif | 2026-08-22 14:47 | | |
| 100 | +| [`immeubles_bc`](immeubles_bc.md) | Les Immeubles Beaulieu et Collin | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 20/30 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:47 | | |
| 101 | +| [`immeubles_bois`](immeubles_bois.md) | Les Immeubles Bois | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 23/23 | 87 % | 0 % | 100 % | actif | 2026-08-22 14:47 | | |
| 102 | +| [`immeubles_db`](immeubles_db.md) | Les Immeubles D.B. Busque-Massé | Estrie | pages HTML (rendu serveur) | direct | 13/13 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:47 | | |
| 103 | +| [`immeubles_dcl`](immeubles_dcl.md) | Les Immeubles DCL | Abitibi-Témiscaming… | pages HTML (rendu serveur) | direct | 7/11 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:47 | | |
| 104 | +| [`immeubles_guillot`](immeubles_guillot.md) | Les Immeubles Guillot | Québec | pages HTML (rendu serveur) | direct | 7/7 | 57 % | 0 % | 100 % | actif | 2026-08-22 14:47 | | |
| 105 | +| [`immeubles_ouellet`](immeubles_ouellet.md) | Les Immeubles Vianney Ouellet & Fils | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:47 | | |
| 106 | +| [`immeubles_pm`](immeubles_pm.md) | Les Immeubles PM | Estrie | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:47 | | |
| 107 | +| [`immnasr`](immnasr.md) | Les Immeubles Michel Nazair | Outaouais | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:47 | | |
| 108 | +| [`immobilia`](immobilia.md) | Immobilia Rimouski | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 1/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:47 | | |
| 109 | +| [`immogex`](immogex.md) | Immogex | Centre-du-Québec | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:47 | | |
| 110 | +| [`immomarketing`](immomarketing.md) | IMMOMARKETING (Immoappart) | Québec | pages HTML (rendu serveur) | direct | 83/94 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:47 | | |
| 111 | +| [`immostar`](immostar.md) | Immostar | Québec | API REST WordPress (wp-json) | direct | 156/165 | 78 % | 99 % | 100 % | actif | 2026-08-22 14:48 | | |
| 112 | +| [`info_logement`](info_logement.md) | Info-Logement | Lanaudière | pages HTML (rendu serveur) | direct | 56/64 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:48 | | |
| 113 | +| [`interrent`](interrent.md) | InterRent REIT (CLV Group) | Montréal | pages HTML (rendu serveur) | direct | 194/215 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:48 | | |
| 114 | +| [`jutras`](jutras.md) | Habitations Jutras | Centre-du-Québec | pages HTML (rendu serveur) | direct | 35/35 | 0 % | 60 % | 100 % | actif | 2026-08-22 14:48 | | |
| 115 | +| [`kangalou`](kangalou.md) | Kangalou | Province | API JSON interne du site | direct | 7774/8413 | 100 % | 100 % | 99 % | actif | 2026-08-22 14:50 | | |
| 116 | +| [`kass`](kass.md) | KASS Property Management | Outaouais | pages HTML (rendu serveur) | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 14:51 | | |
| 117 | +| [`katasa`](katasa.md) | Groupe Katasa | Outaouais | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-22 14:51 | | |
| 118 | +| [`kijiji`](kijiji.md) | Kijiji Québec (location) | Province | pages HTML (rendu serveur) | direct | 5314/9379 | 100 % | 97 % | 99 % | actif | 2026-08-22 15:00 | | |
| 119 | +| [`la_cour`](la_cour.md) | La Cour Appartements | Québec | API REST WordPress (wp-json) | direct | 19/21 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:19 | | |
| 120 | +| [`laberge`](laberge.md) | Groupe Laberge | Québec | pages HTML (rendu serveur) | direct | 57/62 | 93 % | 100 % | 100 % | actif | 2026-08-22 15:00 | | |
| 121 | +| [`labonte`](labonte.md) | Gestion Labonté | Estrie | pages HTML (rendu serveur) | direct | 18/18 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:00 | | |
| 122 | +| [`lachance`](lachance.md) | Les Entreprises Lachance | Estrie | sitemap XML + pages HTML | direct | 75/98 | 93 % | 100 % | 100 % | actif | 2026-08-22 15:02 | | |
| 123 | +| [`lacite`](lacite.md) | La Cité Gatineau (Adam Real Estate) | Outaouais | pages HTML (rendu serveur) | direct | 6/7 | 100 % | 0 % | 100 % | actif | 2026-08-22 15:04 | | |
| 124 | +| [`lafrance_mathieu`](lafrance_mathieu.md) | Lafrance & Mathieu | Québec | pages HTML (rendu serveur) | direct | 37/41 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:04 | | |
| 125 | +| [`lakle`](lakle.md) | La Klé | Québec | API REST WordPress (wp-json) | direct | 43/49 | 100 % | 53 % | 100 % | actif | 2026-08-22 15:05 | | |
| 126 | +| [`lambert`](lambert.md) | Société Immobilière Lambert | Mauricie | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 50 % | 100 % | actif | 2026-08-22 15:05 | | |
| 127 | +| [`laureat_richard`](laureat_richard.md) | Logements Lauréat Richard | Estrie | pages HTML (rendu serveur) | direct | 23/23 | 100 % | 0 % | 100 % | actif | 2026-08-22 15:05 | | |
| 128 | +| [`le_baronet`](le_baronet.md) | Le Baronet | Chaudière-Appalaches | sitemap XML + pages HTML | direct | 4/6 | 0 % | 100 % | 100 % | actif | 2026-08-22 15:05 | | |
| 129 | +| [`le_st_georges`](le_st_georges.md) | Le St-Georges | Chaudière-Appalaches | API REST WordPress (wp-json) | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:05 | | |
| 130 | +| [`leclif`](leclif.md) | Le Clif | Québec | pages HTML (rendu serveur) | direct | 10/10 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:05 | | |
| 131 | +| [`ledomaine`](ledomaine.md) | Les Habitations Le Domaine | Montréal | pages HTML (rendu serveur) | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:05 | | |
| 132 | +| [`lelaureat`](lelaureat.md) | Résidences Le Lauréat | Estrie | pages HTML (rendu serveur) | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:05 | | |
| 133 | +| [`lequerre`](lequerre.md) | Habitations L'Équerre | Estrie | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:05 | | |
| 134 | +| [`lespac`](lespac.md) | LesPAC (location) | Province | pages HTML (rendu serveur) | direct | 2242/2882 | 100 % | 97 % | 93 % | actif | 2026-08-22 15:08 | | |
| 135 | +| [`leviu`](leviu.md) | Le VIU / VIU2 (Groupe Heafey) | Outaouais | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-22 15:08 | | |
| 136 | +| [`location_di`](location_di.md) | Location DI (Groupe Sphère DI) | Mauricie / Lanaudiè… | pages HTML (rendu serveur) | direct | 9/16 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:08 | | |
| 137 | +| [`location_saguenay`](location_saguenay.md) | Location Saguenay | Saguenay–Lac-Saint-… | pages HTML (rendu serveur) | direct | 21/21 | 76 % | 0 % | 100 % | actif | 2026-08-22 15:08 | | |
| 138 | +| [`loftsmtl`](loftsmtl.md) | Lofts MTL | Montréal | API JSON interne du site | direct | 9/9 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:09 | | |
| 139 | +| [`logement_mauricie`](logement_mauricie.md) | Logement Mauricie (regroupement de prop… | Mauricie | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:09 | | |
| 140 | +| [`logis_experts`](logis_experts.md) | Logis-Experts | Québec | API JSON interne du site | direct | 487/519 | 100 % | 100 % | 38 % | actif | 2026-08-22 15:09 | | |
| 141 | +| [`logisbourg`](logisbourg.md) | Logisbourg | Québec | pages HTML (rendu serveur) | direct | 11/14 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:09 | | |
| 142 | +| [`logisco`](logisco.md) | Logisco | Québec | pages HTML (rendu serveur) | direct | 160/184 | 99 % | 100 % | 100 % | actif | 2026-08-22 15:09 | | |
| 143 | +| [`logisma`](logisma.md) | Logisma | Québec | API REST WordPress (wp-json) | direct | 12/20 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:09 | | |
| 144 | +| [`logispro`](logispro.md) | LogisPro Rimouski | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 4/4 | 100 % | 75 % | 100 % | actif | 2026-08-22 15:09 | | |
| 145 | +| [`logisquebec`](logisquebec.md) | LogisQuébec | Province | sitemap XML + pages HTML | direct | 9668/10178 | 100 % | 99 % | 100 % | actif | 2026-08-22 15:14 | | |
| 146 | +| [`lokalia`](lokalia.md) | Espaces Lokalia | Québec | API admin-ajax (WordPress) | direct | 130/141 | 100 % | 82 % | 100 % | actif | 2026-08-22 15:15 | | |
| 147 | +| [`louer_ca`](louer_ca.md) | Louer.ca | Province | API GraphQL interne | direct | 4613/5908 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:21 | | |
| 148 | +| [`louer_saguenay`](louer_saguenay.md) | Louer Saguenay | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:21 | | |
| 149 | +| [`louis14`](louis14.md) | Quartier Louis Quatorze (Groupe Damco) | Québec | pages HTML (rendu serveur) | direct | 17/18 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:21 | | |
| 150 | +| [`lr_gestion`](lr_gestion.md) | LR Gestion immobilière (LR Location) | Outaouais | pages HTML (rendu serveur) | direct | 106/116 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:21 | | |
| 151 | +| [`luxuor`](luxuor.md) | Les Immeubles Luxuor | Saguenay–Lac-Saint-… | pages HTML (rendu serveur) | direct | 4/4 | 75 % | 0 % | 100 % | actif | 2026-08-22 15:22 | | |
| 152 | +| [`lynk_olymbec`](lynk_olymbec.md) | Lynk (Olymbec) | Montréal | pages HTML (rendu serveur) | Firecrawl | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:22 | | |
| 153 | +| [`m_immobilier`](m_immobilier.md) | M Immobilier (location) | Montréal | pages HTML (rendu serveur) | direct | 186/207 | 58 % | 100 % | 100 % | actif | 2026-08-22 15:22 | | |
| 154 | +| [`majestic`](majestic.md) | Le Majestic du Lac Boivin | Montérégie | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 0 % | actif | 2026-08-22 15:22 | | |
| 155 | +| [`matinale`](matinale.md) | Gestion Matinale | Estrie | pages HTML (rendu serveur) | direct | 44/46 | 59 % | 100 % | 100 % | actif | 2026-08-22 15:23 | | |
| 156 | +| [`may_bourg`](may_bourg.md) | Gestion May Bourg | Centre-du-Québec | API REST WordPress (wp-json) | direct | 6/7 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:23 | | |
| 157 | +| [`medway`](medway.md) | Groupe Medway | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 482/499 | 91 % | 100 % | 100 % | actif | 2026-08-22 15:24 | | |
| 158 | +| [`mellem`](mellem.md) | Mellem (Groupe Mach) | Outaouais | sitemap XML + pages HTML | direct | 79/90 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:24 | | |
| 159 | +| [`mercini`](mercini.md) | Groupe Mercini (Gestion Faleschini Merc… | Québec | pages HTML (rendu serveur) | direct | 45/53 | 96 % | 100 % | 100 % | actif | 2026-08-22 15:24 | | |
| 160 | +| [`metcap`](metcap.md) | MetCap Living | Montréal | pages HTML (rendu serveur) | direct | 8/8 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:25 | | |
| 161 | +| [`minto`](minto.md) | Minto Apartments | Montréal | pages HTML (rendu serveur) | direct | 19/20 | 84 % | 100 % | 100 % | actif | 2026-08-22 15:25 | | |
| 162 | +| [`mkar`](mkar.md) | Gestion Immobilière MKAR | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 5/5 | 100 % | 0 % | 100 % | actif | 2026-08-22 15:25 | | |
| 163 | +| [`moderno`](moderno.md) | Moderno Construction | Lanaudière | pages HTML (rendu serveur) | direct | 7/7 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:25 | | |
| 164 | +| [`mondev`](mondev.md) | Mondev | Montréal | pages HTML (rendu serveur) | direct | 43/49 | 47 % | 100 % | 100 % | actif | 2026-08-22 15:26 | | |
| 165 | +| [`montagnais`](montagnais.md) | Le Montagnais, résidences étudiantes | Estrie | API admin-ajax (WordPress) | direct | 31/31 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:26 | | |
| 166 | +| [`morin`](morin.md) | Constructions Morin | Estrie | pages HTML (rendu serveur) | direct | 6/7 | 83 % | 100 % | 100 % | actif | 2026-08-22 15:26 | | |
| 167 | +| [`msi`](msi.md) | MSI Gestion immobilière | Québec | pages HTML (rendu serveur) | direct | 96/109 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:27 | | |
| 168 | +| [`multi_logis`](multi_logis.md) | Multi-Logis | Côte-Nord | sitemap XML + pages HTML | direct | 27/27 | 100 % | 96 % | 70 % | actif | 2026-08-22 15:27 | | |
| 169 | +| [`niddamour`](niddamour.md) | Nid d'Amour | Montréal | API JSON interne du site | direct | 14/14 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:27 | | |
| 170 | +| [`novelo`](novelo.md) | Les Appartements Novelo | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:27 | | |
| 171 | +| [`oklouer`](oklouer.md) | OK Louer (location temporaire) | Québec | pages HTML (rendu serveur) | direct | 41/41 | 98 % | 100 % | 100 % | actif | 2026-08-22 15:27 | | |
| 172 | +| [`omhm`](omhm.md) | OMHM — logements abordables | Montréal | pages HTML (rendu serveur) | direct | 3/4 | 67 % | 100 % | 0 % | actif | 2026-08-22 15:27 | | |
| 173 | +| [`osgoode`](osgoode.md) | Osgoode Properties | Outaouais | API JSON interne du site | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:28 | | |
| 174 | +| [`oxford`](oxford.md) | Appartements Oxford | Estrie | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-22 15:28 | | |
| 175 | +| [`per`](per.md) | Les Immeubles Paul-E. Richard | Québec | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:28 | | |
| 176 | +| [`picard`](picard.md) | Picard Immobilier | Québec | pages HTML (rendu serveur) | direct | 29/34 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:28 | | |
| 177 | +| [`place_florimay`](place_florimay.md) | Place Florimay | Chaudière-Appalaches | API REST WordPress (wp-json) | direct | 0/0 | — | — | — | actif | 2026-08-22 15:28 | | |
| 178 | +| [`plan_a`](plan_a.md) | Plan A Immobilier | Montréal | pages HTML (rendu serveur) | direct | 11/11 | 91 % | 91 % | 100 % | actif | 2026-08-22 15:28 | | |
| 179 | +| [`progim`](progim.md) | Progim | Montréal | pages HTML (rendu serveur) | direct | 65/73 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:28 | | |
| 180 | +| [`projection_immo`](projection_immo.md) | Projection Immobilière | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 1/1 | 100 % | 0 % | 100 % | actif | 2026-08-22 15:28 | | |
| 181 | +| [`promenade_des_forts`](promenade_des_forts.md) | Promenade des Forts | Québec | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:29 | | |
| 182 | +| [`proprio_direct`](proprio_direct.md) | Proprio Direct (location) | Province | API JSON interne du site | direct | 183/193 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:29 | | |
| 183 | +| [`quanta`](quanta.md) | Gestion Quanta | Outaouais | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-22 15:29 | | |
| 184 | +| [`quartier_mosaique`](quartier_mosaique.md) | Quartier Mosaïque (Constrobourg) | Québec | pages HTML (rendu serveur) | direct | 24/24 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:29 | | |
| 185 | +| [`quartier_oree`](quartier_oree.md) | Quartier Orée | Chaudière-Appalaches | pages HTML (rendu serveur) | direct | 28/31 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:29 | | |
| 186 | +| [`quartier_plus`](quartier_plus.md) | Le Quartier Plus | Chaudière-Appalaches | sitemap XML + pages HTML | direct | 59/59 | 100 % | 97 % | 100 % | actif | 2026-08-22 15:29 | | |
| 187 | +| [`quartier_sila`](quartier_sila.md) | Quartier Sila | Québec | pages HTML (rendu serveur) | direct | 198/200 | 100 % | 26 % | 100 % | actif | 2026-08-22 15:29 | | |
| 188 | +| [`realstar`](realstar.md) | Realstar | Montréal | API JSON interne du site | direct | 9/9 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:29 | | |
| 189 | +| [`remax_quebec`](remax_quebec.md) | RE/MAX Québec (location) | Province | pages HTML (rendu serveur) | direct | 3227/3518 | 100 % | 100 % | 99 % | actif | 2026-08-22 15:35 | | |
| 190 | +| [`rentals_ca`](rentals_ca.md) | Rentals.ca (Québec) | Province | API GraphQL interne | Scrapfly | 4439/5654 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:40 | | |
| 191 | +| [`rentalys`](rentalys.md) | Rentalys | Montréal | pages HTML (rendu serveur) | direct | 10/10 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:41 | | |
| 192 | 192 | | [`rivero`](rivero.md) | Le Rivero | Québec | pages HTML (rendu serveur) | direct | 0/214 | — | — | — | désactivé (disabled=True) | — | |
| 193 | −| [`roomies`](roomies.md) | Roomies.ca | Province | sitemap XML + pages HTML | direct | 277/278 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:50 | | |
| 194 | −| [`roussin`](roussin.md) | Immeubles Roussin | Québec | pages HTML (rendu serveur) | direct | 36/36 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:50 | | |
| 195 | −| [`royal_lepage`](royal_lepage.md) | Royal LePage (location) | Province | pages HTML (rendu serveur) | direct | 951/1043 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:53 | | |
| 196 | −| [`savouet`](savouet.md) | Groupe Savouet | Estrie | pages HTML (rendu serveur) | direct | 15/17 | 93 % | 100 % | 100 % | actif | 2026-08-18 04:53 | | |
| 197 | −| [`sdg`](sdg.md) | SDG Immobilier | Québec | pages HTML (rendu serveur) | direct | 9/11 | 89 % | 0 % | 100 % | actif | 2026-08-18 04:53 | | |
| 198 | −| [`sentinelle`](sentinelle.md) | La Sentinelle (Groupe Immobilier Brochu) | Québec | pages HTML (rendu serveur) | direct | 10/11 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:53 | | |
| 199 | −| [`sgiq`](sgiq.md) | SGIQ (Société de gestion immobilière du… | Québec | pages HTML (rendu serveur) | direct | 147/147 | 99 % | 100 % | 100 % | actif | 2026-08-18 04:53 | | |
| 200 | −| [`shdm`](shdm.md) | SHDM | Montréal | API GraphQL interne | direct | 2/21 | 50 % | 100 % | 100 % | actif | 2026-08-18 04:53 | | |
| 201 | −| [`siagi`](siagi.md) | SIA Gestion Immobilière | Estrie | pages HTML (rendu serveur) | direct | 6/6 | 100 % | 100 % | 0 % | actif | 2026-08-18 04:53 | | |
| 202 | −| [`sibelanger`](sibelanger.md) | Société immobilière Bélanger | Québec | pages HTML (rendu serveur) | direct | 12/19 | 83 % | 100 % | 100 % | actif | 2026-08-18 04:53 | | |
| 203 | −| [`sig`](sig.md) | Société d'investissement Gilbert (résid… | Québec | pages HTML (rendu serveur) | direct | 4/4 | 75 % | 100 % | 100 % | actif | 2026-08-18 04:53 | | |
| 204 | −| [`simard`](simard.md) | Immeubles Simard | Québec | pages HTML (rendu serveur) | direct | 5/5 | 20 % | 40 % | 100 % | actif | 2026-08-18 04:53 | | |
| 205 | −| [`simplex`](simplex.md) | Simplex Immobilier | Mauricie | API JSON interne du site | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-18 06:19 | | |
| 206 | −| [`somex_saintnicolas`](somex_saintnicolas.md) | Somex Saint-Nicolas | Québec | pages HTML (rendu serveur) | direct | 145/145 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:53 | | |
| 207 | −| [`souleymane`](souleymane.md) | Gestion Souleymane | Outaouais | pages HTML (rendu serveur) | direct | 13/14 | 92 % | 100 % | 100 % | actif | 2026-08-18 04:53 | | |
| 208 | −| [`stb_immobilier`](stb_immobilier.md) | STB Immobilier | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 11/11 | 91 % | 73 % | 100 % | actif | 2026-08-18 04:53 | | |
| 209 | −| [`summum`](summum.md) | Gestion immobilière Summum | Laurentides | pages HTML (rendu serveur) | direct | 89/95 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:53 | | |
| 210 | −| [`sutton`](sutton.md) | Groupe Sutton Québec (location) | Province | sitemap XML + pages HTML | direct | 1226/1393 | 70 % | 73 % | 73 % | actif | 2026-08-18 04:54 | | |
| 211 | −| [`terater`](terater.md) | Les Constructions Tèratèr | Estrie | pages HTML (rendu serveur) | direct | 12/14 | 67 % | 100 % | 100 % | actif | 2026-08-18 04:54 | | |
| 212 | −| [`terra`](terra.md) | Terra Condos locatifs | Québec | pages HTML (rendu serveur) | direct | 29/51 | 100 % | 90 % | 100 % | actif | 2026-08-18 04:54 | | |
| 213 | −| [`thrace`](thrace.md) | Gestions Thrace | Mauricie | sitemap XML + pages HTML | direct | 172/182 | 100 % | 66 % | 100 % | actif | 2026-08-18 04:54 | | |
| 214 | −| [`tri_logis`](tri_logis.md) | Société immobilière Tri-Logis | Abitibi-Témiscaming… | pages HTML (rendu serveur) | direct | 0/1 | — | — | — | actif | 2026-08-18 04:54 | | |
| 193 | +| [`roomies`](roomies.md) | Roomies.ca | Province | sitemap XML + pages HTML | direct | 281/306 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:46 | | |
| 194 | +| [`roussin`](roussin.md) | Immeubles Roussin | Québec | pages HTML (rendu serveur) | direct | 36/36 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:46 | | |
| 195 | +| [`royal_lepage`](royal_lepage.md) | Royal LePage (location) | Province | pages HTML (rendu serveur) | direct | 954/1138 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:48 | | |
| 196 | +| [`savouet`](savouet.md) | Groupe Savouet | Estrie | pages HTML (rendu serveur) | direct | 15/17 | 93 % | 100 % | 100 % | actif | 2026-08-22 15:48 | | |
| 197 | +| [`sdg`](sdg.md) | SDG Immobilier | Québec | pages HTML (rendu serveur) | direct | 9/11 | 89 % | 0 % | 100 % | actif | 2026-08-22 15:48 | | |
| 198 | +| [`sentinelle`](sentinelle.md) | La Sentinelle (Groupe Immobilier Brochu) | Québec | pages HTML (rendu serveur) | direct | 9/11 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:48 | | |
| 199 | +| [`sgiq`](sgiq.md) | SGIQ (Société de gestion immobilière du… | Québec | pages HTML (rendu serveur) | direct | 147/147 | 99 % | 100 % | 100 % | actif | 2026-08-22 15:48 | | |
| 200 | +| [`shdm`](shdm.md) | SHDM | Montréal | API GraphQL interne | direct | 1/23 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:48 | | |
| 201 | +| [`siagi`](siagi.md) | SIA Gestion Immobilière | Estrie | pages HTML (rendu serveur) | direct | 6/6 | 100 % | 100 % | 0 % | actif | 2026-08-22 15:48 | | |
| 202 | +| [`sibelanger`](sibelanger.md) | Société immobilière Bélanger | Québec | pages HTML (rendu serveur) | direct | 12/22 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:48 | | |
| 203 | +| [`sig`](sig.md) | Société d'investissement Gilbert (résid… | Québec | pages HTML (rendu serveur) | direct | 4/4 | 75 % | 100 % | 100 % | actif | 2026-08-22 15:48 | | |
| 204 | +| [`simard`](simard.md) | Immeubles Simard | Québec | pages HTML (rendu serveur) | direct | 5/5 | 20 % | 40 % | 100 % | actif | 2026-08-22 15:48 | | |
| 205 | +| [`simplex`](simplex.md) | Simplex Immobilier | Mauricie | API JSON interne du site | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-22 15:48 | | |
| 206 | +| [`somex_saintnicolas`](somex_saintnicolas.md) | Somex Saint-Nicolas | Québec | pages HTML (rendu serveur) | direct | 145/145 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:48 | | |
| 207 | +| [`souleymane`](souleymane.md) | Gestion Souleymane | Outaouais | pages HTML (rendu serveur) | direct | 13/14 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:48 | | |
| 208 | +| [`stb_immobilier`](stb_immobilier.md) | STB Immobilier | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 11/11 | 91 % | 73 % | 100 % | actif | 2026-08-22 15:48 | | |
| 209 | +| [`summum`](summum.md) | Gestion immobilière Summum | Laurentides | pages HTML (rendu serveur) | direct | 89/97 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:48 | | |
| 210 | +| [`sutton`](sutton.md) | Groupe Sutton Québec (location) | Province | sitemap XML + pages HTML | direct | 1200/1490 | 99 % | 100 % | 100 % | actif | 2026-08-22 15:49 | | |
| 211 | +| [`terater`](terater.md) | Les Constructions Tèratèr | Estrie | pages HTML (rendu serveur) | direct | 12/14 | 67 % | 100 % | 100 % | actif | 2026-08-22 15:49 | | |
| 212 | +| [`terra`](terra.md) | Terra Condos locatifs | Québec | pages HTML (rendu serveur) | direct | 28/51 | 100 % | 89 % | 100 % | actif | 2026-08-22 15:49 | | |
| 213 | +| [`thrace`](thrace.md) | Gestions Thrace | Mauricie | sitemap XML + pages HTML | direct | 162/182 | 100 % | 65 % | 100 % | actif | 2026-08-22 15:49 | | |
| 214 | +| [`tri_logis`](tri_logis.md) | Société immobilière Tri-Logis | Abitibi-Témiscaming… | pages HTML (rendu serveur) | direct | 0/1 | — | — | — | actif | 2026-08-22 15:49 | | |
| 215 | 215 | | [`trudel`](trudel.md) | Trudel (Fleur de Lys, LGC) | Québec | pages HTML (rendu serveur) | direct | 0/30 | — | — | — | désactivé (disabled=True) | — | |
| 216 | −| [`trylon`](trylon.md) | Trylon Apartments | Montréal | pages HTML (rendu serveur) | direct | 7/7 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:54 | | |
| 217 | −| [`ubee`](ubee.md) | Ubee (location) | Province | API JSON interne du site | direct | 243/246 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:55 | | |
| 218 | −| [`uptimo`](uptimo.md) | Uptimo Gestion immobilière | Estrie | pages HTML (rendu serveur) | direct | 63/78 | 98 % | 98 % | 100 % | actif | 2026-08-18 04:55 | | |
| 219 | −| [`urban_services`](urban_services.md) | Urban Services (Urban Tenant Solutions) | Outaouais | pages HTML (rendu serveur) | direct | 52/56 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:55 | | |
| 220 | −| [`utile`](utile.md) | UTILE (logement étudiant) | Montréal | pages HTML (rendu serveur) | direct | 28/28 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:55 | | |
| 221 | −| [`via_capitale`](via_capitale.md) | Via Capitale (location) | Province | pages HTML (rendu serveur) | Firecrawl | 196/213 | 55 % | 100 % | 100 % | actif | 2026-08-18 04:56 | | |
| 222 | −| [`viridi`](viridi.md) | Le Viridi | Québec | pages HTML (rendu serveur) | direct | 16/17 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:56 | | |
| 223 | −| [`wandji`](wandji.md) | Gestion Immobilière Wandji | Outaouais | API JSON interne du site | direct | 26/31 | 100 % | 100 % | 100 % | actif | 2026-08-18 04:56 | | |
| 224 | −| [`werkliv`](werkliv.md) | Werkliv | Montréal | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-18 04:56 | | |
| 225 | −| [`zumper`](zumper.md) | Zumper (Québec) | Province | API JSON interne du site | direct | 4345/4345 | 100 % | 100 % | 100 % | actif | 2026-08-18 06:19 | | |
| 216 | +| [`trylon`](trylon.md) | Trylon Apartments | Montréal | pages HTML (rendu serveur) | direct | 7/7 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:49 | | |
| 217 | +| [`ubee`](ubee.md) | Ubee (location) | Province | API JSON interne du site | direct | 243/249 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:49 | | |
| 218 | +| [`uptimo`](uptimo.md) | Uptimo Gestion immobilière | Estrie | pages HTML (rendu serveur) | direct | 62/78 | 98 % | 98 % | 100 % | actif | 2026-08-22 15:50 | | |
| 219 | +| [`urban_services`](urban_services.md) | Urban Services (Urban Tenant Solutions) | Outaouais | pages HTML (rendu serveur) | direct | 44/56 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:50 | | |
| 220 | +| [`utile`](utile.md) | UTILE (logement étudiant) | Montréal | pages HTML (rendu serveur) | direct | 28/28 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:50 | | |
| 221 | +| [`via_capitale`](via_capitale.md) | Via Capitale (location) | Province | pages HTML (rendu serveur) | Firecrawl | 192/217 | 54 % | 100 % | 100 % | actif | 2026-08-22 15:50 | | |
| 222 | +| [`viridi`](viridi.md) | Le Viridi | Québec | pages HTML (rendu serveur) | direct | 16/17 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:50 | | |
| 223 | +| [`wandji`](wandji.md) | Gestion Immobilière Wandji | Outaouais | API JSON interne du site | direct | 26/31 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:50 | | |
| 224 | +| [`werkliv`](werkliv.md) | Werkliv | Montréal | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-22 15:50 | | |
| 225 | +| [`zumper`](zumper.md) | Zumper (Québec) | Province | API JSON interne du site | direct | 4837/5095 | 100 % | 100 % | 100 % | actif | 2026-08-22 15:54 | | |
| 226 | 226 | |
| 227 | 227 | ## Entrées du registre sans module connecteur |
| 228 | 228 | |
modified
docs/connecteurs/aalto.md
+15 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Aalto Suites (Zibi / Dream) — connecteur `aalto` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 26/33 | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 24/35 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Aalto Suites (aaltosuites.ca — Zibi, Hull) Tours locatives Aalto et | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 26 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 24 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,21 +48,27 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:00 — 26 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:18 — 24 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 2.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 33 au total, **26 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 35 au total, **24 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 5 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-18 15:44 | database is locked | | |
| 68 | +| 2026-08-18 15:37 | database is locked | | |
| 69 | +| 2026-08-18 15:35 | database is locked | | |
| 70 | +| 2026-08-18 15:28 | database is locked | | |
| 71 | +| 2026-08-18 15:25 | database is locked | | |
| 66 | 72 | |
| 67 | 73 | Rejouer la source seule : `python3 run.py sync aalto` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='aalto' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 74 | |
modified
docs/connecteurs/acceslogis_gb.md
+6 −5
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Accès Logis GB — connecteur `acceslogis_gb` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Lanaudière / Mauricie · Backend : direct · Annonces actives : 10/11 |
| 6 | 6 | |
@@ -48,22 +48,23 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:00 — 10 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:18 — 10 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 11 au total, **10 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 20 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 2 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | 65 | | Date | Message (sync_log) | |
| 66 | 66 | |---|---| |
| 67 | +| 2026-08-18 15:29 | database is locked | | |
| 67 | 68 | | 2026-08-17 17:46 | HTTPSConnectionPool(host='acceslogisgb.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError("HTTPSConnection(host='acceslogisgb.com'… | |
| 68 | 69 | |
| 69 | 70 | Rejouer la source seule : `python3 run.py sync acceslogis_gb` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='acceslogis_gb' ORDER BY ts DESC LIMIT 5;`). |
modified
docs/connecteurs/agence_sherbrooke.md
+27 −23
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Agence de location Sherbrooke (groupe Prestiplex) — connecteur `agence_sherbrooke` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 14/18 | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 13/19 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,44 +25,48 @@ connecteur Agence de location Sherbrooke (agencedelocationsherbrooke.com) — le | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 14 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 13 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | 905 Courcelette | | |
| 33 | −| `address` | Adresse civique | 100 % | Rue de Courcelette, Mont-Bellevue | | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Sherbrooke | | |
| 35 | −| `sector` | Secteur / quartier | 79 % | Les Nations | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 795 $ | | |
| 38 | −| `bedrooms` | Chambres | 100 % | 1 | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 89 des pins #4, East Angus | | |
| 33 | +| `address` | Adresse civique | 100 % | 89, Rue des Pins | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | East Angus | | |
| 35 | +| `sector` | Secteur / quartier | 69 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 895 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 7 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 8 % | — | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 100 % | 45.388177 | | |
| 43 | −| `description` | Description | 100 % | 3 ½ à louer – Disponible dès maintenant! Caractéristiques : 1 espace de stationnement inc… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 8 photo(s) — https://agencedelocationsherbrooke.com/wp-content/uploads/2026/07/image-2026… | | |
| 45 | −| `amenities` | Commodités (JSON) | 100 % | ["1 Chambre", "1 Salle de bain", "Chat permis", "Déneigement", "Entré laveuse/sécheuse"] | | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true}, "appliances": {"washer_dryer": tru… | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://agencedelocationsherbrooke.com/property/905-courcelette/ | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.4879551 | | |
| 43 | +| `description` | Description | 100 % | À louer – 4 ½ au 89 des pins, East Angus Disponible dès maintenant – logement situé au 1e… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 8 photo(s) — https://agencedelocationsherbrooke.com/wp-content/uploads/2026/04/image-2026… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["2 Chambres", "1 Salle de bain", "Chat permis", "Déneigement", "Entré lave-vaisselle", "… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": false, "electricity": false, "hot_water": false}, "appliances"… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://agencedelocationsherbrooke.com/property/89-des-pins-4-east-angus/ | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 14 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:18 — 13 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 18 au total, **14 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 19 au total, **13 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 3 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-18 16:05 | database is locked | | |
| 68 | +| 2026-08-18 15:42 | database is locked | | |
| 69 | +| 2026-08-18 15:38 | database is locked | | |
| 66 | 70 | |
| 67 | 71 | Rejouer la source seule : `python3 run.py sync agence_sherbrooke` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='agence_sherbrooke' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 72 | |
modified
docs/connecteurs/akelius.md
+11 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Akelius Montréal — connecteur `akelius` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 242/290 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 231/302 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Akelius Residential (rent.akelius.com) Page de recherche Canada rendu | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 242 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 231 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,21 +48,23 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 242 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:18 — 231 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 290 au total, **242 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 302 au total, **231 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-18 16:06 | database is locked | | |
| 66 | 68 | |
| 67 | 69 | Rejouer la source seule : `python3 run.py sync akelius` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='akelius' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 70 | |
modified
docs/connecteurs/alexcellence.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immeubles Alexcellence — connecteur `alexcellence` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 6/6 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 6 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:18 — 6 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 6 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 50 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/alias_appartements.md
+8 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Alias Appartements — connecteur `alias_appartements` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -48,21 +48,23 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 1 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:18 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-18 15:30 | HTTPSConnectionPool(host='www.aliasappartements.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError("HTTPSConnection(host='www.alia… | | |
| 66 | 68 | |
| 67 | 69 | **Note du registre** : actif — 1 annonce « catalogue » à granularité projet (type 4½, à partir de 1575 $, caractéristiques, photos) ; disponibilités par formulaire seulement |
| 68 | 70 | |
modified
docs/connecteurs/alouer_sherbrooke.md
+8 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # À Louer Sherbrooke — connecteur `alouer_sherbrooke` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -48,21 +48,23 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 1 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:18 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-18 15:49 | database is locked | | |
| 66 | 68 | |
| 67 | 69 | Rejouer la source seule : `python3 run.py sync alouer_sherbrooke` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='alouer_sherbrooke' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 70 | |
modified
docs/connecteurs/app_urbains.md
+13 −13
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Appartements Urbains — connecteur `app_urbains` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 18/21 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 17/21 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Appartements Urbains (appartementsurbains.ca — Ste-Foy, Montcalm, L | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 18 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 17 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -33,12 +33,12 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 33 | 33 | | `address` | Adresse civique | 100 % | 1385 Rue Monseigneur-Plessis, Québec, QC | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Québec | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Limoilou | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 89 % | 3½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 83 % | 1 630 $ | | |
| 38 | −| `bedrooms` | Chambres | 89 % | 1 | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 88 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 82 % | 1 630 $ | | |
| 38 | +| `bedrooms` | Chambres | 88 % | 1 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 89 % | 915 | | |
| 41 | −| `availability_date` | Date de disponibilité | 33 % | now | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 88 % | 915 | | |
| 41 | +| `availability_date` | Date de disponibilité | 29 % | now | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.8175411 | |
| 43 | 43 | | `description` | Description | 100 % | Le Charlie est un projet de condos locatifs modernes et branchés. 90 unités construites p… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 16 photo(s) — https://lecharlie.ca/wp-content/uploads/vf-off-caneva-charlie-condo.jpg | |
@@ -48,16 +48,16 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 18 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:18 — 17 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 21 au total, **18 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 83 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 21 au total, **17 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 82 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/appartements_rimouski.md
+17 −11
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Appartements Rimouski (Immeubles DTM) — connecteur `appartements_rimouski` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 19/20 | |
| 5 | +**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 20/24 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Appartements Rimouski (Immeubles DTM — appartementsrimouski.com, Ri | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 19 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 20 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -36,33 +36,39 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 95 % | 5½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 750 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 3 | |
| 39 | −| `bathrooms` | Salles de bain | 89 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 85 % | 1 | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 48.3760046 | |
| 43 | 43 | | `description` | Description | 100 % | Nous avons un beau logement 5 1/2 neuf de qualité supérieure à vous proposer, parfait pou… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 13 photo(s) — https://www.appartementsrimouski.com/wp-content/uploads/sites/334/2026/08/i… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["3 chambre(s)", "1 SDB"] | |
| 46 | −| `details` | Détails additionnels (JSON) | 89 % | {"inclusions": {"heating": false, "electricity": false, "internet": true}, "appliances": … | | |
| 46 | +| `details` | Détails additionnels (JSON) | 85 % | {"inclusions": {"heating": false, "electricity": false, "internet": true}, "appliances": … | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.appartementsrimouski.com/logements/5-1-2-neuf-dans-le-secteur-du-bic | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 19 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:18 — 20 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 20 au total, **19 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 24 au total, **20 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 8 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-22 13:06 | HTTPSConnectionPool(host='www.appartementsrimouski.com', port=443): Max retries exceeded with url: /choisir-mon-logement (Caused by SSLError(SSLEOFError(8, '[S… | | |
| 68 | +| 2026-08-22 04:40 | HTTPSConnectionPool(host='www.appartementsrimouski.com', port=443): Max retries exceeded with url: /choisir-mon-logement (Caused by SSLError(SSLEOFError(8, '[S… | | |
| 69 | +| 2026-08-21 11:30 | HTTPSConnectionPool(host='www.appartementsrimouski.com', port=443): Max retries exceeded with url: /choisir-mon-logement (Caused by SSLError(SSLEOFError(8, '[S… | | |
| 70 | +| 2026-08-21 08:34 | HTTPSConnectionPool(host='www.appartementsrimouski.com', port=443): Max retries exceeded with url: /choisir-mon-logement (Caused by SSLError(SSLEOFError(8, '[S… | | |
| 71 | +| 2026-08-20 21:18 | HTTPSConnectionPool(host='www.appartementsrimouski.com', port=443): Max retries exceeded with url: /choisir-mon-logement (Caused by SSLError(SSLEOFError(8, '[S… | | |
| 66 | 72 | |
| 67 | 73 | Rejouer la source seule : `python3 run.py sync appartements_rimouski` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='appartements_rimouski' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 74 | |
modified
docs/connecteurs/ascensio.md
+5 −5
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Ascensio — connecteur `ascensio` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 9/10 |
| 6 | 6 | |
@@ -32,7 +32,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 3½ Logement 301 — 20 Bryant | |
| 33 | 33 | | `address` | Adresse civique | 44 % | 20 Bryant | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Sherbrooke | |
| 35 | −| `sector` | Secteur / quartier | 100 % | Les Nations - Arrondissement Jacques-Cartier (Nord) | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 425 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 9 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:18 — 9 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 10 au total, **9 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 44 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/atimco.md
+5 −5
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Atimco — connecteur `atimco` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 299/299 |
| 6 | 6 | |
@@ -48,17 +48,17 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:19 — 299 trouvées, +299 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:19 — 299 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 299 au total, **299 actives** |
| 59 | −- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 99 % · photos 96 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 45, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/atlas_immo.md
+8 −5
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Atlas société immobilière — connecteur `atlas_immo` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 0/0 |
| 6 | 6 | |
@@ -48,8 +48,8 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 0 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:19 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
@@ -58,11 +58,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 58 | 58 | - **Annonces en BD** : 0 au total, **0 actives** |
| 59 | 59 | - **Première ingestion** : — · **Dernière observation** : — |
| 60 | 60 | - **Complétude clé (actives)** : GPS — · prix — · photos — · description — |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 2 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-19 08:08 | HTTPConnectionPool(host='www.atlasimmo.ca', port=80): Read timed out. (read timeout=30) | | |
| 68 | +| 2026-08-18 15:32 | HTTPConnectionPool(host='www.atlasimmo.ca', port=80): Read timed out. (read timeout=30) | | |
| 66 | 69 | |
| 67 | 70 | **Note du registre** : actif — inventaire à 0 le 2026-08-09 (parc plein, le site ne rend des cartes que pour les logements libres) ; fixture rejouant l'état réel du 2023-02-24 via la Wayback Machine |
| 68 | 71 | |
modified
docs/connecteurs/aula.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # AULA Lévis — connecteur `aula` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 68/70 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 68 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:19 — 68 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 70 au total, **68 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/axia.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Axia Appartements — connecteur `axia` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:19 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/barnes_quebec.md
+16 −22
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # BARNES Québec (location) — connecteur `barnes_quebec` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 101/103 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 101/110 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -31,15 +31,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 6675 Rue St-Urbain #302 Montréal (Rosemont/La Petite-Patrie) (Montréal) | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 6675 Rue St-Urbain #302 | |
| 34 | −| `city` | Ville (normalisée) | 99 % | Montréal | | |
| 35 | −| `sector` | Secteur / quartier | 72 % | Rosemont/La Petite-Patrie | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 96 % | 4½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 98 % | 2 600 $ | | |
| 38 | −| `bedrooms` | Chambres | 96 % | 2 | | |
| 39 | −| `bathrooms` | Salles de bain | 97 % | 1 | | |
| 34 | +| `city` | Ville (normalisée) | 96 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 73 % | Rosemont/La Petite-Patrie | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 97 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 99 % | 2 600 $ | | |
| 38 | +| `bedrooms` | Chambres | 97 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 98 % | 1 | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 71 % | 775 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 99 % | 45.53074 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.53074 | | |
| 43 | 43 | | `description` | Description | 100 % | La PETITE-ITALIE et un dernier étage !! Face aux studios Mila et Behaviour Interactive, c… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 42 photo(s) — https://barnes-quebec.com/wp-content/uploads/2026/08/24043507-addcb7eda4967… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
@@ -48,28 +48,22 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 101 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:19 — 101 trouvées, +0 / ~2 / -0 | |
| 53 | 53 | - **Throttling** : 0.25 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `HITS_PER_PAGE` = 100, `MAX_PAGES` = 40 |
| 56 | 56 | |
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | −- **Annonces en BD** : 103 au total, **101 actives** | |
| 60 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-18 | |
| 61 | −- **Complétude clé (actives)** : GPS 99 % · prix 98 % · photos 100 % · description 100 % | |
| 62 | −- **Runs journalisés (60 derniers)** : 60, dont 12 en erreur | |
| 59 | +- **Annonces en BD** : 110 au total, **101 actives** | |
| 60 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 61 | +- **Complétude clé (actives)** : GPS 100 % · prix 99 % · photos 100 % · description 100 % | |
| 62 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 63 | 63 | |
| 64 | 64 | ## Erreurs connues & dépannage |
| 65 | 65 | |
| 66 | −| Date | Message (sync_log) | | |
| 67 | −|---|---| | |
| 68 | −| 2026-08-15 19:18 | 403 Client Error: Forbidden for url: https://hcw55viqnm-dsn.algolia.net/1/indexes/quebec_all/query | | |
| 69 | −| 2026-08-15 17:25 | 403 Client Error: Forbidden for url: https://hcw55viqnm-dsn.algolia.net/1/indexes/quebec_all/query | | |
| 70 | −| 2026-08-15 15:31 | 403 Client Error: Forbidden for url: https://hcw55viqnm-dsn.algolia.net/1/indexes/quebec_all/query | | |
| 71 | −| 2026-08-15 14:56 | 403 Client Error: Forbidden for url: https://hcw55viqnm-dsn.algolia.net/1/indexes/quebec_all/query | | |
| 72 | −| 2026-08-15 12:58 | 403 Client Error: Forbidden for url: https://hcw55viqnm-dsn.algolia.net/1/indexes/quebec_all/query | | |
| 66 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 73 | 67 | |
| 74 | 68 | Rejouer la source seule : `python3 run.py sync barnes_quebec` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='barnes_quebec' ORDER BY ts DESC LIMIT 5;`). |
| 75 | 69 | |
modified
docs/connecteurs/beaudoin.md
+8 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Société Beaudoin Immobilier — connecteur `beaudoin` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 12/12 |
| 6 | 6 | |
@@ -48,21 +48,23 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 12 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:19 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 12 au total, **12 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-18 15:54 | database is locked | | |
| 66 | 68 | |
| 67 | 69 | Rejouer la source seule : `python3 run.py sync beaudoin` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='beaudoin' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 70 | |
modified
docs/connecteurs/beaulieu_groupe.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Beaulieu Groupe Immobilier (BGI) — connecteur `beaulieu_groupe` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 4/4 | |
| 5 | +**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 5/5 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Beaulieu Groupe Immobilier / BGI (beaulieugroupeimmobilier.com — Ri | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 5 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:19 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 4 au total, **4 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 5 au total, **5 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/bestlife.md
+12 −12
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Les Gestions Bestlife — connecteur `bestlife` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 12/13 | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 15/16 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Les Gestions Bestlife (lesgestionsbestlife.com) — 500+ portes en ge | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 12 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 15 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -36,10 +36,10 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 150 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | −| `bathrooms` | Salles de bain | 8 % | — | | |
| 40 | −| `area_sqft` | Superficie (pi²) | 8 % | — | | |
| 41 | −| `availability_date` | Date de disponibilité | 92 % | now | | |
| 42 | −| `lat` | GPS (lat/lng) | 92 % | 45.3896965 | | |
| 39 | +| `bathrooms` | Salles de bain | 7 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 20 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 93 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 87 % | 45.3896965 | | |
| 43 | 43 | | `description` | Description | 0 % | — | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 7 photo(s) — https://i0.wp.com/lesgestionsbestlife.com/wp-content/uploads/2026/08/exposio… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["1 stationnement", "Entrée lave-vaisselle", "Entrée laveuse/sécheuse", "Thermopompe", "C… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 12 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:19 — 15 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 13 au total, **12 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 92 % · prix 100 % · photos 100 % · description 0 % | |
| 58 | +- **Annonces en BD** : 16 au total, **15 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 87 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/boardwalk.md
+5 −5
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Boardwalk REIT — connecteur `boardwalk` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 100/100 |
| 6 | 6 | |
@@ -38,7 +38,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 97 % | — | |
| 41 | −| `availability_date` | Date de disponibilité | 53 % | now | | |
| 41 | +| `availability_date` | Date de disponibilité | 52 % | now | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.531969 | |
| 43 | 43 | | `description` | Description | 100 % | Située sur la rive sud du fleuve Saint-Laurent en face du centre-ville de Montréal, la pr… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 7 photo(s) — https://www.bwalk.com/hubfs/001%20Organized%20Web%20Photos/Domaine%20dIbervi… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:02 — 100 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:20 — 100 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 100 au total, **100 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/bons_locataires.md
+17 −15
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Bons Locataires — connecteur `bons_locataires` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Grand Montréal · Backend : direct · Annonces actives : 14/14 | |
| 5 | +**État : actif** · Région : Grand Montréal · Backend : direct · Annonces actives : 17/17 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ Bons Locataires (bonslocataires.com) — agence de location Montréal/Laval/Long | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 14 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 17 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -34,35 +34,37 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Laval | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Laval-des-Rapides | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 1½ | |
| 37 | −| `price` | Loyer mensuel ($) | 21 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 35 % | — | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 0 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | −| `availability_date` | Date de disponibilité | 36 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 47 % | — | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.5498359 | |
| 43 | −| `description` | Description | 93 % | — | | |
| 44 | −| `images` | Photos (JSON) | 93 % | 1 photo(s) — https://www.bonslocataires.com/wp-content/uploads/2015/03/laval-1.jpg | | |
| 43 | +| `description` | Description | 94 % | — | | |
| 44 | +| `images` | Photos (JSON) | 94 % | 1 photo(s) — https://www.bonslocataires.com/wp-content/uploads/2015/03/laval-1.jpg | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
| 46 | −| `details` | Détails additionnels (JSON) | 93 % | {} | | |
| 46 | +| `details` | Détails additionnels (JSON) | 94 % | {} | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.bonslocataires.com/laval-des-rapides-1½-600 | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 3.3 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:03 — 14 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:24 — 17 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 14 au total, **14 actives** | |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 21 % · photos 93 % · description 93 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 8, dont 0 en erreur | |
| 58 | +- **Annonces en BD** : 17 au total, **17 actives** | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 35 % · photos 94 % · description 94 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 51, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-18 15:59 | database is locked | | |
| 66 | 68 | |
| 67 | 69 | Rejouer la source seule : `python3 run.py sync bons_locataires` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='bons_locataires' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 70 | |
modified
docs/connecteurs/boreal_abitibi.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Constructions Boréal Abitibi — connecteur `boreal_abitibi` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 3/5 | |
| 5 | +**État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 3/6 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -37,10 +37,10 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 550 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 33 % | — | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 48.0977193 | |
| 43 | −| `description` | Description | 100 % | Proximité des écoles, des épiceries, des dépanneurs, du centre-ville. | | |
| 43 | +| `description` | Description | 67 % | Proximité des écoles, des épiceries, des dépanneurs, du centre-ville. | | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 10 photo(s) — https://constructionsborealabitibi.com/wp-content/uploads/2020/09/dscn1016-… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["2 chambre(s)", "1 salle(s) de bain", "1 garage/stationnement", "Non meublé, non chauffé… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": false, "electricity": false}, "appliances": {"washer_dryer_hoo… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:03 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:24 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 5 au total, **3 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 6 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 67 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/bribourg.md
+20 −20
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Bribourg — connecteur `bribourg` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 2/2 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 2/5 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -29,35 +29,35 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | 3 ½ à louer (Vanier) – Dès aujourd'hui | | |
| 33 | −| `address` | Adresse civique | 100 % | 510, avenue Claude-Martin, Québec (Vanier), G1M 1T3 | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Quoi faire à Beauport à proximité de nos appartements ? | | |
| 33 | +| `address` | Adresse civique | 0 % | — | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Québec | |
| 35 | −| `sector` | Secteur / quartier | 100 % | Vanier | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 860 $ | | |
| 38 | −| `bedrooms` | Chambres | 100 % | 1 | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Quoi faire à Beauport à proximité de nos appartements ? | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 0 % | — | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | −| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | −| `lat` | GPS (lat/lng) | 100 % | 46.8228015 | | |
| 43 | −| `description` | Description | 100 % | Adresse : 510, avenue Claude-Martin, Québec (Vanier) Loyer : 860 $ par mois Disponibilité… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 7 photo(s) — https://dropinblog.net/34265643/files/510-avenue-claude-martin-vanier-quebec… | | |
| 45 | −| `amenities` | Commodités (JSON) | 100 % | ["3 ½", "860 $ par mois", "Chauffé / éclairé / eau chaude", "Secteur de Vanier"] | | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true}, "balcony": true… | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://bribourg.com/Logements-a-louer.php?p=lol | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Vous résidez dans le secteur de Beauport ou vous envisagez de vous y installer? Vous cher… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://dropinblog.net/34265643/files/beauport.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"contact": {"phone": "418-626-4613", "email": "bribourg@videotron.ca"}} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://bribourg.com/Logements-a-louer.php?p=tourn%C3%A9e | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:03 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:24 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 2 au total, **2 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 5 au total, **2 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/brigil.md
+5 −5
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Brigil — connecteur `brigil` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 42/42 |
| 6 | 6 | |
@@ -36,7 +36,7 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 24 % | 1 656 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | −| `bathrooms` | Salles de bain | 5 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 7 % | — | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 26 % | 1252 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 98 % | 45.4021379 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:05 — 42 trouvées, +0 / ~2 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:24 — 42 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 42 au total, **42 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 98 % · prix 24 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/brio.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles Brio — connecteur `brio` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:05 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:24 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/brivia_1sp.md
+8 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Brivia (1 Square Phillips) — connecteur `brivia_1sp` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -48,21 +48,23 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:05 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:24 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-18 16:01 | database is locked | | |
| 66 | 68 | |
| 67 | 69 | Rejouer la source seule : `python3 run.py sync brivia_1sp` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='brivia_1sp' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 70 | |
modified
docs/connecteurs/brochu.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Immobilier Brochu — connecteur `brochu` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 7/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:05 — 7 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:24 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **7 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 86 % · prix 57 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/cap_gestion.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # CAP Gestion (CAP Immobilier) — connecteur `cap_gestion` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Laurentides / Lanaudière · Backend : direct · Annonces actives : 122/122 | |
| 5 | +**État : actif** · Région : Laurentides / Lanaudière · Backend : direct · Annonces actives : 122/123 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -37,8 +37,8 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 445 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 3 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 99 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 85 % | 1208 | | |
| 41 | −| `availability_date` | Date de disponibilité | 94 % | 2026-11-01 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 84 % | 1208 | | |
| 41 | +| `availability_date` | Date de disponibilité | 95 % | 2026-11-01 | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 98 % | 46.0689009 | |
| 43 | 43 | | `description` | Description | 100 % | 5 1/2 disponible pour le 1er novembre PROMO: 1ER MOIS GRATUIT ** Situé au 123 Demontigny,… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 20 photo(s) — https://capgestion.ca/wp-content/uploads/2026/07/exterieur-scaled.jpg | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:05 — 122 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:25 — 122 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 122 au total, **122 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 123 au total, **122 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 98 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/capital_rdr.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Capital RDR — connecteur `capital_rdr` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:05 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:25 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/capreit.md
+13 −11
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # CAPREIT — connecteur `capreit` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 117/122 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 116/123 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,14 +25,14 @@ connecteur CAPREIT (capreit.ca) Flux JSON officiel du moteur de recherche (admin | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 117 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 116 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Faubourg de la Pointe et Domaine Laudance — 1 1/2 | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 900, 920 Laudance, 3780, 3786, 3792, 3793, 3798 Le Marié, 3700, 3706 des Compagnons, Vill… | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Québec | | |
| 35 | −| `sector` | Secteur / quartier | 100 % | Laudance et Campanile (Pointe-de-Sainte-Foy) | | |
| 34 | +| `city` | Ville (normalisée) | 94 % | Québec | | |
| 35 | +| `sector` | Secteur / quartier | 65 % | — | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 1½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 930 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 0 | |
@@ -48,21 +48,23 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:05 — 117 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:25 — 116 trouvées, +0 / ~16 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 122 au total, **117 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 123 au total, **116 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-18 16:02 | database is locked | | |
| 66 | 68 | |
| 67 | 69 | Rejouer la source seule : `python3 run.py sync capreit` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='capreit' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 70 | |
modified
docs/connecteurs/carat_immobilier.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Carat Immobilier — connecteur `carat_immobilier` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 3/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:05 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:25 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/centurion.md
+5 −5
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Centurion / CP Living (Quartier QB) — connecteur `centurion` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -44,19 +44,19 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 6 photo(s) — https://assets.rentsync.com/centurion/images/gallery/full/1651515067110_qb-u… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["In-suite laundry", "Dishwasher", "Microwave", "Air conditioner", "Balcony"] | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"fridge": true, "stove": true, "dishwasher": true, "washer_dryer": true},… | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://www.cpliving.com/apartments/quartier-qb | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://cpliving.com/apartments/quartier-qb | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:05 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:25 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 75 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/cite_immobilier.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Cité Immobilier — connecteur `cite_immobilier` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:05 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:25 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 0 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/cogir.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Cogir Immobilier — connecteur `cogir` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 285/300 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 282/300 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Cogir Immobilier (cogir.net) Page liste « gestion-immeubles-resident | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 285 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 282 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -39,7 +39,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 96 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 89 % | 46.8202665 | | |
| 42 | +| `lat` | GPS (lat/lng) | 92 % | 46.8202665 | | |
| 43 | 43 | | `description` | Description | 100 % | Découvrez ce milieu de vie distinctif conçu pour vous : Inspirée des plus grands complexe… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 12 photo(s) — https://www.cogir.net/DATA/PHOTO/22326_aprinc.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 57 % | ["Patinoire extérieure", "Air climatisé", "Balcons", "Piscine extérieure", "BBQ", "Gym", … | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:07 — 285 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:26 — 282 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 300 au total, **285 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 89 % · prix 96 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 300 au total, **282 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 92 % · prix 96 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/contraste.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Contraste Immobilier — connecteur `contraste` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 221/234 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 208/234 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,14 +25,14 @@ connecteur Contraste Immobilier (contrasteimmobilier.ca — Beauport, Limoilou, | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 221 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 208 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Agora Phase 2 — unité 206 | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 4855 rue de L'Escarpement, Québec, Québec, G3K0N8 | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Québec | |
| 35 | −| `sector` | Secteur / quartier | 55 % | Québec | | |
| 35 | +| `sector` | Secteur / quartier | 54 % | Québec | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 86 % | 1 381 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:07 — 221 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:27 — 208 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 234 au total, **221 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 234 au total, **208 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 86 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/copley.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Copley — connecteur `copley` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 52/52 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:07 — 52 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:27 — 52 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 52 au total, **52 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/cosoltec.md
+16 −16
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Cosoltec (Evado, Le Monroe, Natür) — connecteur `cosoltec` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 44/52 | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 44/57 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −connecteur Cosoltec (cosoltec.com — projets locatifs Evado à Sainte-Thérèse, Le Monroe à Blainville, Natür à Saint-Jérôme). Les sites vitrines (evado.ca, lemonroe.ca, naturcondos.ca) affichent leurs unités via le widget Planpoint : on interroge la même API JSON publique (app.planpoint.io/api/{groups,projects}/find, POST namespace+hostName, 3 requêtes/sync) — prix mensuel, pi², chambres, statut, plans et photos par unité ; seules les unités « Available » sont retenues. | |
| 9 | +connecteur Cosoltec (cosoltec.com — projets locatifs Evado à Sainte-Thérèse, Le Monroe à Blainville, Natür à Saint-Jérôme). Les sites vitrines (evado.ca, lemonroe.ca, naturcondos.ca) affichent leurs unités via le widget Planpoint : on interroge la même API JSON publique (app.planpoint.io/api/{groups,projects}/find, POST namespace+hostName, 3 requêtes/sync) — prix mensuel, pi², chambres, statut, plans et photos par unité, inclusions (inclusionsArr, clé « fr »), date de livraison et galerie du projet ; seules les unités « Available » sont retenues. Les unités Natür n'ont AUCUN prix chez la source (price null, le site n'en affiche pas non plus) — rien d'inventé. La description est composée du texte de présentation de la vitrine (meta description + 1er paragraphe, 1 requête par vitrine) et des faits structurés de l'unité. | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://www.cosoltec.com/fr |
| 12 | 12 | - **Page des annonces** : https://www.cosoltec.com/fr/espaces-disponibles |
@@ -17,10 +17,10 @@ connecteur Cosoltec (cosoltec.com — projets locatifs Evado à Sainte-Thérèse | ||
| 17 | 17 | |
| 18 | 18 | - **Type d'accès** : API JSON interne du site |
| 19 | 19 | - **Endpoint de base** : https://app.planpoint.io/api |
| 20 | −- **URLs de départ (constantes du module)** : https://app.planpoint.io/api · https://www.evado.ca/plans · https://www.lemonroe.ca/plans · https://www.naturcondos.ca/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://app.planpoint.io/api · https://www.evado.ca/plans · https://www.evado.ca/ · https://www.lemonroe.ca/plans | |
| 21 | 21 | - **Authentification** : aucune — contenu public |
| 22 | 22 | - **Pagination** : pagination par numéro de page |
| 23 | −- **Backend anti-bot / rendu** : requests direct | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | 24 | - **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` |
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
@@ -30,7 +30,7 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Evado — Unité 204 | |
| 33 | −| `address` | Adresse civique | 98 % | 350 Place Fabien-Drapeau | | |
| 33 | +| `address` | Adresse civique | 100 % | 350 Place Fabien-Drapeau | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Sainte-Thérèse | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
@@ -38,26 +38,26 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 693 | |
| 41 | −| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | −| `lat` | GPS (lat/lng) | 98 % | 45.6501510049674 | | |
| 43 | −| `description` | Description | 0 % | — | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 3 photo(s) — https://storage.googleapis.com/planpoint-bucket/imageprjett-1739155435539.we… | | |
| 45 | −| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.6501510049674 | | |
| 43 | +| `description` | Description | 100 % | Unité 204 du projet Evado à Sainte-Thérèse. Modèle d, étage 2, 693 pi², 1 salle(s) de bai… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 4 photo(s) — https://storage.googleapis.com/planpoint-bucket/imageprjett-1739155435539.we… | | |
| 45 | +| `amenities` | Commodités (JSON) | 95 % | [] | | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"bathrooms": 1, "floor": "2", "furnished": false} | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.evado.ca/plans | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:07 — 44 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:27 — 44 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 52 au total, **44 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 98 % · prix 80 % · photos 100 % · description 0 % | |
| 58 | +- **Annonces en BD** : 57 au total, **44 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 80 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/courtemanche.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Immobilière Courtemanche — connecteur `courtemanche` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 0/0 |
| 6 | 6 | |
@@ -48,8 +48,8 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:07 — 0 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:27 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
modified
docs/connecteurs/cromwell.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Cromwell Management — connecteur `cromwell` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 12/12 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:07 — 12 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:27 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 12 au total, **12 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/denux.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Groupe Denux — connecteur `denux` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 18/18 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 20/20 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,14 +25,14 @@ connecteur Groupe Denux (groupedenux.com) Portefeuille pancanadien (plateforme R | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 18 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 20 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | ROYAL-URBAIN — Studio | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 3777 ST-URBAIN | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Montréal | |
| 35 | −| `sector` | Secteur / quartier | 61 % | Plateau Mont-Royal | | |
| 35 | +| `sector` | Secteur / quartier | 65 % | Plateau Mont-Royal | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 025 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 0 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:08 — 18 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:27 — 20 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 18 au total, **18 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 20 au total, **20 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/desmarais.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immeubles Desmarais — connecteur `desmarais` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 14/14 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:08 — 14 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:27 — 14 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 14 au total, **14 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/desroches.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immeubles Claude Desroches — connecteur `desroches` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 6/6 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:08 — 6 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:28 — 6 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 6 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 50 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/devcore.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Devcore Group — connecteur `devcore` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Côte-Nord · Backend : direct · Annonces actives : 14/14 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:08 — 14 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:28 — 14 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 14 au total, **14 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 7 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/devimco.md
+19 −19
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Devimco Appartements — connecteur `devimco` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 480/575 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 238/576 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,38 +25,38 @@ connecteur Devimco Appartements (devimco.com/appartements — St Ann & Hexagone | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 480 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 238 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | Alexander Phase 1 Appartements — unité 309 | | |
| 33 | −| `address` | Adresse civique | 100 % | 2255 René-Lévesque Blvd W, Montreal | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | St Ann Appartements — unité 102 | | |
| 33 | +| `address` | Adresse civique | 100 % | 244 Rue Rioux, Montréal | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Montréal | |
| 35 | −| `sector` | Secteur / quartier | 100 % | Centre-ville | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 2 130 $ | | |
| 38 | −| `bedrooms` | Chambres | 84 % | 1 | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Griffintown | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Maison | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 3 200 $ | | |
| 38 | +| `bedrooms` | Chambres | 90 % | — | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 100 % | 619 | | |
| 41 | −| `availability_date` | Date de disponibilité | 100 % | 2026-10-01 | | |
| 42 | −| `lat` | GPS (lat/lng) | 100 % | 45.48885054534291 | | |
| 43 | −| `description` | Description | 100 % | Étage 3 — Centre Ville | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 13 photo(s) — https://storage.googleapis.com/planpoint-bucket/Alexander-Piscineinterieur-… | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1104 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.491837616036975 | | |
| 43 | +| `description` | Description | 100 % | Étage 1 — Ottawa / Séminaire | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://storage.googleapis.com/planpoint-bucket/LUXImageSolution-StAnnAppar… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["internet", "electricity", "heating", "balcony", "stove", "refrigerator", "dishwasher", … | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "internet": true}, "appliances": {"… | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://devimco.com/appartements/a-louer/montreal/centre-ville/alexander-appartements | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://devimco.com/appartements/a-louer/montreal/griffintown/st-ann-appartements | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:09 — 480 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:28 — 238 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 575 au total, **480 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 576 au total, **238 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/dma_locago.md
+10 −10
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # DMA / Locago (Douville, Moffet & Associés) — connecteur `dma_locago` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 118/124 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 116/126 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,12 +25,12 @@ connecteur DMA / Locago (Douville, Moffet & Associés) locago.ca présente les c | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 118 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 116 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Le WOW — Unité 016 | |
| 33 | −| `address` | Adresse civique | 29 % | 930, rue Samuel-King, Québec | | |
| 33 | +| `address` | Adresse civique | 28 % | 930, rue Samuel-King, Québec | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Québec | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Sainte-Foy | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 98 % | 3½ | |
@@ -39,7 +39,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 98 % | 936 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 89 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 29 % | 46.7799387 | | |
| 42 | +| `lat` | GPS (lat/lng) | 28 % | 46.7799387 | | |
| 43 | 43 | | `description` | Description | 100 % | 1 chambre — 936 pi² | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 13 photo(s) — https://locago.ca/wp-content/uploads/2024/12/WOW.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:09 — 118 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:29 — 116 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 124 au total, **118 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 29 % · prix 98 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 126 au total, **116 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 28 % · prix 98 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/duproprio.md
+12 −12
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # DuProprio (location) — connecteur `duproprio` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 3890/3896 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 3894/4109 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,14 +25,14 @@ DuProprio (duproprio.com) — section LOCATION ~4 200 annonces de particuliers ( | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3890 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3894 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 91, avenue Jacques-Cartier, Matane à louer | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 91, avenue Jacques-Cartier | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Matane | | |
| 35 | −| `sector` | Secteur / quartier | 20 % | — | | |
| 34 | +| `city` | Ville (normalisée) | 94 % | Matane | | |
| 35 | +| `sector` | Secteur / quartier | 19 % | — | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 2 100 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
@@ -41,24 +41,24 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 41 | 41 | | `availability_date` | Date de disponibilité | 86 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 48.8513 | |
| 43 | 43 | | `description` | Description | 100 % | "Professionnel, retraité confortable, couple stable, personne en transition, employé relo… | |
| 44 | −| `images` | Photos (JSON) | 100 % | — | | |
| 44 | +| `images` | Photos (JSON) | 99 % | — | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 94 % | ["Stationnement", "Entrée Laveuse-sécheuse", "Ascenseur", "Entrée Lave-vaisselle", "Range… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"washer_dryer_hookup": true, "dishwasher_hookup": true}, "ac": true, "ele… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://duproprio.com/fr/location/bas-saint-laurent/matane/4-1-2-a-louer/hab-91-avenue-ja… | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 3.3 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:10 — 3890 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:29 — 3894 trouvées, +0 / ~0 / -4 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 3896 au total, **3890 actives** | |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 8, dont 0 en erreur | |
| 58 | +- **Annonces en BD** : 4109 au total, **3894 actives** | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 99 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 49, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/dynamic.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Gestion immobilière Dynamic — connecteur `dynamic` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 48/53 | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 44/55 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,14 +25,14 @@ connecteur Gestion immobilière Dynamic (lesgestionsdynamic.com) — apparts à | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 48 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 44 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 375, rue Terrill IMMÉDIATEMENT | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 375 rue terrill | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Sherbrooke | |
| 35 | −| `sector` | Secteur / quartier | 92 % | Fleurimont | | |
| 35 | +| `sector` | Secteur / quartier | 93 % | Fleurimont | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 995 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 48 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:18 — 44 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 53 au total, **48 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 55 au total, **44 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/edifia.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Edifia Groupe Immobilier — connecteur `edifia` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 180/185 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 177/185 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Edifia Groupe Immobilier (edifiaimmobilier.com) Le locatif d'Edifia e | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 180 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 177 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:10 — 180 trouvées, +0 / ~11 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:29 — 177 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 185 au total, **180 actives** | |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 185 au total, **177 actives** | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 94 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/elements.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Quartier les Éléments — connecteur `elements` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 2/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:10 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:30 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/elite.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Elite Immobilier — connecteur `elite` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 12/12 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:10 — 12 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:30 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 12 au total, **12 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/elk.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # ELK Property Management — connecteur `elk` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:10 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:30 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 67 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/equinoxe_batimo.md
+10 −10
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Batimo/EMD — Collection Équinoxe — connecteur `equinoxe_batimo` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 615/662 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 616/662 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Collection Équinoxe (Batimo) (collectionequinoxe.com — Équinoxe S | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 615 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 616 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -40,23 +40,23 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 600 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2026-10-01 | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.5392503 | |
| 43 | −| `description` | Description | 100 % | Condo Type 1-06-1206 | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 2 photo(s) — https://collectionequinoxe.com/wp-content/uploads/2024/04/p1066541_LVQ_1-06_… | | |
| 43 | +| `description` | Description | 100 % | Unité 1206 — Condo Type 1-06-1206 — 600 pi² — 1 chambre(s) — 1 salle(s) de bain — Disponi… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://collectionequinoxe.com/wp-content/uploads/2024/04/p1066541_LVQ_1-06… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Superficie 600 pi²", "1 salle(s) de bain", "Terrasse commune avec BBQ", "Gym équipé", "… | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"pool": true, "gym": true, "storage": true, "pets": "conditions", "parking": {"available… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"balcony": true, "pool": true, "gym": true, "storage": true, "pets": "conditions", "park… | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://collectionequinoxe.com/levesque/ | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:12 — 585 trouvées, +0 / ~32 / -10 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:32 — 585 trouvées, +0 / ~0 / -10 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 662 au total, **615 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 662 au total, **616 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/evoludev.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Evoludev — connecteur `evoludev` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 134/134 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:12 — 134 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:32 — 134 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 134 au total, **134 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 99 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/fb_marketplace.md
+25 −25
@@ -1,64 +1,64 @@ | ||
| 1 | 1 | # Facebook Marketplace (location) — connecteur `fb_marketplace` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 2270/6308 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 2387/22526 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −Facebook Marketplace — catégorie location (propertyrentals) par ville du Québec. Annonces de particuliers, fort complément aux gestionnaires. Accès via Scrapfly ASP (render_js + proxy résidentiel CA), SANS compte ni cookie (le scraping public déconnecté est couvert par Meta v. Bright Data 2024). Les données vivent dans des balises <script type="application/json"> (objets marketplace_listing_title). Le scroll infini est bloqué hors connexion (~25 annonces/URL, mur de login) : on pagine par TRANCHES DE PRIX (minPrice/maxPrice), qui renvoient des lots quasi disjoints, et on accumule sur plusieurs synchronisations. Détail (/marketplace/item/<id>) : lat/lng + description (Scrapfly, coûteux) uniquement pour les nouvelles annonces via le cache. Type d'unité et disponibilité déduits du titre/description (pas d'attributs structurés hors connexion). ⚠️ Coût Scrapfly élevé + données personnelles (Loi 25) : ne jamais republier nom/téléphone du vendeur, garder le lien sortant. | |
| 9 | +Facebook Marketplace — catégorie location (propertyrentals), TOUTE la province. Annonces de particuliers, fort complément aux gestionnaires. Depuis 2026-08-22 le scraping est délégué à l'ACTEUR APIFY MAISON gorgeous_thistle/ka-fb-marketplace (source : actors/ka-fb-marketplace de ce repo) : HTML public déconnecté SANS rendu JS (les JSON de recherche, la fiche PDP et la galerie MediaViewer préchargée vivent dans le HTML brut) via proxy résidentiel CA — ~100× moins cher que l'ancienne chaîne Scrapfly ASP+render_js, et couverture élargie de 10 à 33 villes (IDs Marketplace des villes régionales validés ; les slugs inventés retombent sur des villes aléatoires, ne pas en ajouter sans les valider). Le scroll infini reste bloqué hors connexion (~25 annonces/URL) : on pagine par TRANCHES DE PRIX et on accumule sur plusieurs synchronisations. Le flux public TOURNE : une phase de RATTRAPAGE (extraDetailIds) visite les fiches actives jamais enrichies (budget LOUKA_FBMP_BACKFILL). Le connecteur garde le cache détail BD (clé v2, payloads compatibles) et passe à l'acteur la liste des fiches fraîches à NE PAS revisiter. ⚠️ Données personnelles (Loi 25) : ne jamais republier nom/téléphone du vendeur, garder le lien sortant. | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://www.facebook.com/marketplace |
| 12 | 12 | - **Page des annonces** : https://www.facebook.com/marketplace/montreal/propertyrentals |
| 13 | −- **Secteurs couverts** : Grandes villes QC — annonces de particuliers (Scrapfly) | |
| 13 | +- **Secteurs couverts** : Toute la province (33 villes, rayon ~65 km chacune) — annonces de particuliers (acteur Apify maison ka-fb-marketplace) | |
| 14 | 14 | - **Module** : `louka/connectors/fb_marketplace.py` — classe `FacebookMarketplaceConnector` |
| 15 | 15 | |
| 16 | 16 | ## Accès |
| 17 | 17 | |
| 18 | −- **Type d'accès** : pages HTML (rendu serveur) | |
| 18 | +- **Type d'accès** : API JSON interne du site | |
| 19 | 19 | - **Endpoint de base** : https://www.facebook.com/marketplace |
| 20 | −- **URLs de départ (constantes du module)** : https://www.facebook.com/marketplace | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.facebook.com/marketplace · https://api.apify.com/v2 | |
| 21 | 21 | - **Authentification** : aucune — contenu public |
| 22 | −- **Pagination** : page de liste unique (pas de pagination) | |
| 22 | +- **Pagination** : pagination par offset | |
| 23 | 23 | - **Backend anti-bot / rendu** : requests direct |
| 24 | 24 | - **Politesse** : 1.0 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` |
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2270 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2387 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | Chambre privée à louer | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Appartement de 2 chambres et 1 salle de bain | | |
| 33 | 33 | | `address` | Adresse civique | 0 % | — | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Mirabel | | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 90 % | Chambre | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 795 $ | | |
| 38 | −| `bedrooms` | Chambres | 90 % | 1 | | |
| 39 | −| `bathrooms` | Salles de bain | 3 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 92 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 800 $ | | |
| 38 | +| `bedrooms` | Chambres | 92 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 4 % | — | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 3 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 15 % | 45.553455200005 | | |
| 43 | −| `description` | Description | 16 % | CHAMBRE EN COLOC DISPONIBLE, HOCHELAGA-MAISONNEUVE, 795 $ TOUT INCLUS. Nous avons une cha… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://scontent-bos5-1.xx.fbcdn.net/v/t39.30808-6/772797442_384310096584675… | | |
| 42 | +| `lat` | GPS (lat/lng) | 23 % | 45.6977 | | |
| 43 | +| `description` | Description | 24 % | 🏠 CESSION DE BAIL — GRAND 4 ½ À LOUER – MIRABEL (SAINT-JANVIER) 📍 Situé dans le secteur S… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 13 photo(s) — https://scontent-lga3-2.xx.fbcdn.net/v/t39.30808-6/774008687_36617753439881… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
| 46 | −| `details` | Détails additionnels (JSON) | 15 % | {"inclusions": {"heating": true, "electricity": true, "internet": true}, "appliances": {"… | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://www.facebook.com/marketplace/item/2151142982451520/ | | |
| 46 | +| `details` | Détails additionnels (JSON) | 21 % | {"appliances": {"fridge": true, "stove": true, "dishwasher": true, "washer_dryer": true},… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.facebook.com/marketplace/item/995082833486367/ | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 3.3 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:19 — 1257 trouvées, +544 / ~713 / -727 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:23 — 1487 trouvées, +671 / ~526 / -807 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 6308 au total, **2270 actives** | |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 15 % · prix 100 % · photos 100 % · description 16 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 8, dont 0 en erreur | |
| 58 | +- **Annonces en BD** : 22526 au total, **2387 actives** | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 23 % · prix 100 % · photos 100 % · description 24 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 49, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/ferrovia.md
+14 −14
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Ferrovia (condos locatifs Mirabel) — connecteur `ferrovia` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 23/24 | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 22/24 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −connecteur Ferrovia (ferroviamirabel.com) Projet de condos locatifs neufs à Mirabel (secteur Saint-Janvier), 4 phases. WordPress + wpDataTables rendues côté serveur : chaque page « Disponibilités » contient un <table.wpDataTable> (UNITÉ, MODÈLE, ÉTAGE, PIÈCES, SUPERFICIE, SALLE D'EAU SUPP., DISPONIBILITÉ, PRIX, STATUT, PLAN). On ne retient que les lignes STATUT = « Disponible » ; external_id = phase + numéro d'unité. Le site précise que les logements sont non-fumeurs et sans animaux. Prix : colonne présente mais vide à ce jour — jamais inventé. | |
| 9 | +connecteur Ferrovia (ferroviamirabel.com) Projet de condos locatifs neufs à Mirabel (secteur Saint-Janvier), 4 phases. WordPress + wpDataTables rendues côté serveur : chaque page « Disponibilités » contient un <table.wpDataTable> (UNITÉ, MODÈLE, ÉTAGE, PIÈCES, SUPERFICIE, SALLE D'EAU SUPP., DISPONIBILITÉ, PRIX, STATUT, PLAN). On ne retient que les lignes STATUT = « Disponible » ; external_id = phase + numéro d'unité. Le site précise que les logements sont non-fumeurs et sans animaux. Prix : colonne présente mais vide à ce jour — jamais inventé. Galeries (3 requêtes/sync) : /interieurs-phase3/ et /interieurs-phase4/ publient une image par MODÈLE (A, A', B'… — « A' » = fichiers « A1 ») et /photos-unites/ une galerie générale du projet -> image du modèle en tête puis photos générales. Adresse civique publiée sur /contact-information/ : 14340, rue Roger-Thomas (repli codé en dur si la page change). | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://www.ferroviamirabel.com |
| 12 | 12 | - **Page des annonces** : https://www.ferroviamirabel.com/disponibilites-phase-4/ |
@@ -25,12 +25,12 @@ connecteur Ferrovia (ferroviamirabel.com) Projet de condos locatifs neufs à Mir | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 23 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 22 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Ferrovia phase 3 — unité 603 (3 1/2) | |
| 33 | −| `address` | Adresse civique | 0 % | — | | |
| 33 | +| `address` | Adresse civique | 100 % | 14340 rue Roger-Thomas | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Mirabel | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Saint-Janvier | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
@@ -39,25 +39,25 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 950 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | −| `description` | Description | 100 % | Condos neufs à louer du projet Ferrovia, à Mirabel dans le secteur de Saint-Janvier. Les … | | |
| 44 | −| `images` | Photos (JSON) | 0 % | — | | |
| 45 | −| `amenities` | Commodités (JSON) | 22 % | [] | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.710185449 | | |
| 43 | +| `description` | Description | 100 % | Unité 603 (3 1/2) du projet Ferrovia, condos locatifs neufs à Mirabel dans le secteur de … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 6 photo(s) — https://www.ferroviamirabel.com/wp-content/uploads/2026/02/Duogeneral-01.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 18 % | [] | | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"pets": "non", "smoking": false, "phase": "3", "model": "E’", "floor": "6", "plan_pdf": … | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.ferroviamirabel.com/disponibilites-phase-3/ | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:19 — 23 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:42 — 22 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 24 au total, **23 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 0 % · description 100 % | |
| 58 | +- **Annonces en BD** : 24 au total, **22 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/firma.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Firma — connecteur `firma` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 12/12 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 12 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:42 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 12 au total, **12 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 75 % · prix 8 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/floria.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Floria — connecteur `floria` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 21/21 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 21 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:42 — 21 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 21 au total, **21 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 24 % · photos 95 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/forsa.md
+18 −18
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Gestion immobilière Forsa — connecteur `forsa` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 13/13 | |
| 5 | +**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 10/13 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,39 +25,39 @@ connecteur Gestion immobilière Forsa (gestionforsa.com) Squarespace. La page /l | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 13 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 10 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | 2 1/2, Joliette - MAINTENANT | | |
| 33 | −| `address` | Adresse civique | 100 % | 222, rue Lajoie Sud, app. 12 | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 2 1/2, Joliette - Septembre | | |
| 33 | +| `address` | Adresse civique | 100 % | 4, place Bourget Sud, app. 1 | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Joliette | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 2½ | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 595 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 900 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 0 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 46 % | — | | |
| 41 | −| `availability_date` | Date de disponibilité | 92 % | now | | |
| 42 | −| `lat` | GPS (lat/lng) | 92 % | 46.0216796 | | |
| 43 | −| `description` | Description | 100 % | 222, rue Lajoie Sud, app. 12 2 1/2 595 $ /mois ENVIRONNEMENT À quelques minutes de l’auto… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://images.squarespace-cdn.com/content/v1/62aa0c0ae2002b5a5726b8c2/7450… | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 50 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.0247367 | | |
| 43 | +| `description` | Description | 100 % | 6, place Bourget Sud, app. 1 2 1/2 900 $/mois ENVIRONNEMENT ET IMMEUBLE Immeuble de 9 log… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://images.squarespace-cdn.com/content/v1/62aa0c0ae2002b5a5726b8c2/0a23… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"electricity": true, "hot_water": true}, "laundry": true, "smoking": fals… | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://www.gestionforsa.com/222-12lajoiesud | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "internet": true}, "appliances": {"… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.gestionforsa.com/6-01bourgetsud | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 13 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:42 — 10 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 13 au total, **13 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 92 % · prix 100 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 13 au total, **10 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/fournelle.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Appartements Fournelle (Groupe Fournelle) — connecteur `fournelle` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:42 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/garic.md
+8 −12
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Garic Gestion Immobilière — connecteur `garic` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 45/54 |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −connecteur Garic Gestion Immobilière (garic.ca) Gestionnaire de Gatineau (Hull, Vieux-Gatineau, secteur est). WordPress (Oxygen) : la grille filtrable de /a-louer/ se nourrit d'un endpoint admin-ajax MAISON `garic_get_properties` qui renvoie TOUT l'inventaire en JSON structuré : ID, adresse (post_title), prix/mois, type (« 4 ½ »), chambres, salles de bain, superficie, disponibilité, image, URL de la fiche et géocodage complet (lat/lng + quartier OpenStreetMap). Le nonce de sécurité est lu sur la page /a-louer/ à chaque sync. L'unique propriété d'OTTAWA est exclue (périmètre Québec). La fiche /a-louer/<slug> (cache BD) ajoute description, inclusions, « À proximité » et scores de mobilité. | |
| 9 | +connecteur Garic Gestion Immobilière (garic.ca) Gestionnaire de Gatineau (Hull, Vieux-Gatineau, secteur est). WordPress (Oxygen) : la grille filtrable de /a-louer/ se nourrit d'un endpoint admin-ajax MAISON `garic_get_properties` qui renvoie TOUT l'inventaire en JSON structuré : ID, adresse (post_title), prix/mois, type (« 4 ½ »), chambres, salles de bain, superficie, disponibilité, image, URL de la fiche et géocodage complet (lat/lng + quartier OpenStreetMap). Le nonce de sécurité est lu sur la page /a-louer/ à chaque sync. L'unique propriété d'OTTAWA est exclue (périmètre Québec). La fiche /a-louer/<slug> (cache BD) ajoute description, inclusions, « À proximité », scores de mobilité ET la galerie complète (liens lightbox pleine grandeur — le JSON admin-ajax n'expose qu'une seule image). | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://garic.ca |
| 12 | 12 | - **Page des annonces** : https://garic.ca/a-louer/ |
@@ -41,32 +41,28 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.4792016 | |
| 43 | 43 | | `description` | Description | 100 % | 🏡 3 ½ à louer – 74 Rue Saint-Paul, Gatineau 🏡 📍 74 Rue Saint-Paul, Gatineau, QC J8P 4V6 B… | |
| 44 | −| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://garic.ca/wp-content/uploads/2026/07/IMG_6985.jpeg | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 6 photo(s) — https://garic.ca/wp-content/uploads/2026/07/IMG_6985.jpeg | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 96 % | ["🍳 Cuisinière", "🧊 Réfrigérateur"] | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"fridge": true, "stove": true}, "parking": {"available": true, "included"… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://garic.ca/a-louer/2-74-rue-saint-paul-gatineau-qc-j8p-4v6/ | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 45 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:42 — 45 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 54 au total, **45 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 3 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-13 06:46 | 500 Server Error: Internal Server Error for url: https://garic.ca/a-louer/ | | |
| 68 | −| 2026-08-13 04:21 | 500 Server Error: Internal Server Error for url: https://garic.ca/a-louer/ | | |
| 69 | −| 2026-08-13 03:23 | 500 Server Error: Internal Server Error for url: https://garic.ca/a-louer/ | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 70 | 66 | |
| 71 | 67 | Rejouer la source seule : `python3 run.py sync garic` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='garic' ORDER BY ts DESC LIMIT 5;`). |
| 72 | 68 | |
modified
docs/connecteurs/gesteco.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Gesteco — connecteur `gesteco` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 10/14 | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 9/15 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Gesteco (gesteco.ca) Condos locatifs neufs — Granby (Irwin Nord, Fa | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 10 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -37,7 +37,7 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 450 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 90 % | 1125 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 89 % | 1125 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.3194045 | |
| 43 | 43 | | `description` | Description | 100 % | Promotion : * 1ER MOIS GRATUIT* \| **Unité de coin** Caractéristiques principales : Cuisi… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 10 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:42 — 9 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 14 au total, **10 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 15 au total, **9 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestimmo_estrie.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestimmo Estrie — connecteur `gestimmo_estrie` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 41/41 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 41 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 41 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 41 au total, **41 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestion_fauvel.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Fauvel — connecteur `gestion_fauvel` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 11/11 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 11 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 11 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 11 au total, **11 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 91 % · prix 91 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestion_habitation.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Habitation — connecteur `gestion_habitation` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestion_isr.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion ISR — connecteur `gestion_isr` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 20/22 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 20 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 20 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 22 au total, **20 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestion_jdm.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # JDM Gestion immobilière — connecteur `gestion_jdm` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestion_laprise.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Laprise — connecteur `gestion_laprise` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Côte-Nord · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,8 +48,8 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `MAX_PAGES` = 8 |
@@ -57,7 +57,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | 59 | - **Annonces en BD** : 2 au total, **2 actives** |
| 60 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 61 | 61 | - **Complétude clé (actives)** : GPS 100 % · prix 50 % · photos 100 % · description 50 % |
| 62 | 62 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 63 | 63 | |
modified
docs/connecteurs/gestion_legrand.md
+8 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Le Grand — connecteur `gestion_legrand` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -48,21 +48,23 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 5 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 40 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-22 02:07 | HTTPSConnectionPool(host='gestionlegrand.ca', port=443): Read timed out. (read timeout=30) | | |
| 66 | 68 | |
| 67 | 69 | Rejouer la source seule : `python3 run.py sync gestion_legrand` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='gestion_legrand' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 70 | |
modified
docs/connecteurs/gestion_montreal.md
+11 −11
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Gestion Montréal — connecteur `gestion_montreal` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 22/24 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 23/26 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,38 +25,38 @@ connecteur Gestion Montréal (gestion-montreal.com — Montréal, Longueuil, Rep | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 22 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 23 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Studio semi-meublé à louer – Centre-ville de Montréal | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 1024 Rue Sherbrooke Est, Montréal | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Montréal | |
| 35 | −| `sector` | Secteur / quartier | 73 % | Centre-ville | | |
| 35 | +| `sector` | Secteur / quartier | 70 % | Centre-ville | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 950 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 91 % | 0 | |
| 39 | −| `bathrooms` | Salles de bain | 14 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 13 % | — | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 9 % | — | |
| 41 | −| `availability_date` | Date de disponibilité | 82 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 78 % | — | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.521 | |
| 43 | 43 | | `description` | Description | 100 % | À propos de l’appartement : Studio semi-meublé Prix : 950 $/mois Hydro-Québec et Wi-Fi in… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 8 photo(s) — https://static.immosquare.com/shareimmo/production/property_asset/asset/9e70… | |
| 45 | −| `amenities` | Commodités (JSON) | 95 % | ["Eau chaude", "Chauffage", "Électricité", "Réfrigérateur", "Micro-onde", "Non-fumeur", "… | | |
| 45 | +| `amenities` | Commodités (JSON) | 96 % | ["Eau chaude", "Chauffage", "Électricité", "Réfrigérateur", "Micro-onde", "Non-fumeur", "… | | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true, "internet": true… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://gestion-montreal.com/fr/inscriptions/studio-a-louer-montreal--5752184 | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 22 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 23 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 24 au total, **22 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 26 au total, **23 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestion_tb.md
+15 −15
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Gestion TB (portail Appartements TB) — connecteur `gestion_tb` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 31/35 | |
| 5 | +**État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 30/36 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,38 +25,38 @@ connecteur Gestion TB (Drummondville) Portail d'annonces appartementstb.ca (auss | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 31 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 30 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | 3 ½ St-Jean à 800$ | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 2 ½ rue Lindsay à 850$ | | |
| 33 | 33 | | `address` | Adresse civique | 0 % | — | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Notre-Dame-du-Bon-Conseil | |
| 35 | −| `sector` | Secteur / quartier | 94 % | St-Joseph | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 800 $ | | |
| 38 | −| `bedrooms` | Chambres | 100 % | 1 | | |
| 35 | +| `sector` | Secteur / quartier | 63 % | Centre-ville | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 2½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 850 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 0 % | — | |
| 43 | −| `description` | Description | 100 % | 3 ½ St-Jean à 800$ — Secteur St-Joseph — Disponible MAINTENANT !! — Chauffage et électric… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 5 photo(s) — https://assets.cdn.filesafe.space/9ubT2smip23BapsK3KeE/media/6a7a369d8880872… | | |
| 43 | +| `description` | Description | 100 % | 2 ½ rue Lindsay à 850$ — Secteur Centre-ville — Disponible MAINTENANT !! — Chauffage et é… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 5 photo(s) — https://assets.cdn.filesafe.space/9ubT2smip23BapsK3KeE/media/6a846a7e96d2b22… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true}, "floor_label": "1e étage"} | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true}} | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://appartementstb.ca/#col-5BSbroV8HW | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 31 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 30 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 35 au total, **31 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 36 au total, **30 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestion_valco.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Valco — connecteur `gestion_valco` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:20 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 50 % · description 50 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestipro.md
+10 −10
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Gestipro — connecteur `gestipro` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 98/116 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 103/124 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Gestipro (gestipro.info) Site WordPress (thème Houzez) : liste pagin | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 98 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 103 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -36,9 +36,9 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 2 427 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 3 | |
| 39 | −| `bathrooms` | Salles de bain | 13 % | 2 | | |
| 40 | −| `area_sqft` | Superficie (pi²) | 18 % | — | | |
| 41 | −| `availability_date` | Date de disponibilité | 86 % | 2027-07-01 | | |
| 39 | +| `bathrooms` | Salles de bain | 12 % | 2 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 17 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 83 % | 2027-07-01 | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.8518496 | |
| 43 | 43 | | `description` | Description | 100 % | Condos locatifs – LE MARIA-GORETTI (Livraison avril 2027) – Unités 5½ situées au 7170 bou… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 5 photo(s) — https://gestipro.info/wp-content/uploads/2026/06/Immeuble_7170-boul.-Cloutie… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 1.9 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:34 — 98 trouvées, +0 / ~98 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 103 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 116 au total, **98 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 124 au total, **103 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gia_t.md
+16 −12
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # GIA-T — Gestion Immobilière Abitibi-Témiscamingue — connecteur `gia_t` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 3/4 | |
| 5 | +**État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 5/7 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,12 +25,12 @@ connecteur GIA-T — Gestion Immobilière Abitibi-Témiscamingue (gia-t.com — | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 5 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Résidence St-Michel | |
| 33 | −| `address` | Adresse civique | 67 % | — | | |
| 33 | +| `address` | Adresse civique | 80 % | — | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Rouyn-Noranda | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Près du centre-ville | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
@@ -39,7 +39,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 67 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 80 % | — | | |
| 43 | 43 | | `description` | Description | 100 % | Bonjour à tous, Nous avons actuellement un 2 1/2 et un 3½ à louer à la Résidence St-Miche… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 7 photo(s) — https://gia-t.com/wp-content/uploads/2026/08/Media-2026-04-14T120122.924.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["1 chambre(s)", "1 salle(s) de bain", "Inclus : Cable, Chauffage, Internet, Électricité,… | |
@@ -48,23 +48,27 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:34 — 3 trouvées, +0 / ~3 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 4 au total, **3 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 67 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 58 | +- **Annonces en BD** : 7 au total, **5 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 80 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 5 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | 65 | | Date | Message (sync_log) | |
| 66 | 66 | |---|---| |
| 67 | −| 2026-08-14 21:38 | HTTPSConnectionPool(host='gia-t.com', port=443): Read timed out. (read timeout=30) | | |
| 67 | +| 2026-08-20 21:41 | HTTPSConnectionPool(host='gia-t.com', port=443): Read timed out. (read timeout=30) | | |
| 68 | +| 2026-08-19 14:34 | HTTPSConnectionPool(host='gia-t.com', port=443): Read timed out. (read timeout=30) | | |
| 69 | +| 2026-08-19 11:36 | HTTPSConnectionPool(host='gia-t.com', port=443): Read timed out. (read timeout=30) | | |
| 70 | +| 2026-08-18 15:19 | HTTPSConnectionPool(host='gia-t.com', port=443): Read timed out. (read timeout=30) | | |
| 71 | +| 2026-08-18 12:31 | HTTPSConnectionPool(host='gia-t.com', port=443): Read timed out. (read timeout=30) | | |
| 68 | 72 | |
| 69 | 73 | Rejouer la source seule : `python3 run.py sync gia_t` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='gia_t' ORDER BY ts DESC LIMIT 5;`). |
| 70 | 74 | |
modified
docs/connecteurs/gimcote.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # GIM Côté — connecteur `gimcote` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 85/89 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 86/91 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,19 +25,19 @@ connecteur GIM Côté inc. (gimcote.com) WordPress + thème immobilier Houzez. A | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 85 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 86 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Beau studio 1 1/2, St-Roch, WIFI Libre | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 757, Rue de la Reine | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Québec | |
| 35 | −| `sector` | Secteur / quartier | 100 % | Saint-Roch, La Cité-Limoilou | | |
| 35 | +| `sector` | Secteur / quartier | 80 % | Saint-Roch, La Cité-Limoilou | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 1½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 615 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 0 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 1 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 2 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 3 % | — | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.8171235 | |
| 43 | 43 | | `description` | Description | 100 % | 418-655-8281 À voir au 757 de la Reine appartement #RC2, beau studio 1 1/2 situé au rez d… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:35 — 85 trouvées, +0 / ~85 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 86 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 89 au total, **85 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 91 au total, **86 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gio.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Immobilière de l'Outaouais (GIO) — connecteur `gio` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:35 — 5 trouvées, +0 / ~5 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 3.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/girescom.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Girescom gestion immobilière — connecteur `girescom` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 40/41 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:35 — 40 trouvées, +0 / ~40 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 40 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 41 au total, **40 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/girs.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # GIRS — Gestion Immobilière de la Rive Sud — connecteur `girs` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 8/8 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:35 — 8 trouvées, +0 / ~8 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 8 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 8 au total, **8 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gparadis.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # GParadis — connecteur `gparadis` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 22/22 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:35 — 22 trouvées, +0 / ~22 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:43 — 22 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 22 au total, **22 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 82 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/groupe_dallaire.md
+5 −5
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Dallaire (Faubourg du Moulin) — connecteur `groupe_dallaire` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif (dégradé)** · Région : Québec · Backend : Scrapfly · Annonces actives : 255/259 |
| 6 | 6 | |
@@ -48,17 +48,17 @@ Le connecteur (Scrapfly, API admin-ajax (WordPress)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:41 — 255 trouvées, +0 / ~255 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:44 — 255 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 259 au total, **255 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 33 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 8 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/groupe_jacques.md
+8 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Jacques — connecteur `groupe_jacques` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 10/11 |
| 6 | 6 | |
@@ -48,21 +48,23 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:41 — 10 trouvées, +0 / ~10 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:44 — 10 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 11 au total, **10 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 60 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-21 00:29 | HTTPSConnectionPool(host='www.groupejacques.com', port=443): Max retries exceeded with url: /fr/appartements/appartements-a-louer/ (Caused by NewConnectionErro… | | |
| 66 | 68 | |
| 67 | 69 | Rejouer la source seule : `python3 run.py sync groupe_jacques` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='groupe_jacques' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 70 | |
modified
docs/connecteurs/groupe_maurice.md
+10 −10
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Le Groupe Maurice — connecteur `groupe_maurice` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Province · Backend : direct · Annonces actives : 203/203 |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −Le Groupe Maurice — 37 résidences pour aînés (RPA) au Québec (Montréal, Laval, Rive-Sud/Nord, Québec, Gatineau…). WordPress avec API REST maison : /wp-json/api/v1/residences retourne les 37 résidences géolocalisées (adresse, lat/lng, ville, url, vignette). Chaque page résidence (SSR) expose la grille des types d'unités dans des <article class="y-bordered"> : « Studio | 408 pi.ca à 628 pi.ca | À partir de 2 286 $ par mois ». Une annonce Lou-Ka par type × résidence, prix plancher « à partir de », étiquetée Résidence pour aînés. | |
| 9 | +Le Groupe Maurice — 37 résidences pour aînés (RPA) au Québec (Montréal, Laval, Rive-Sud/Nord, Québec, Gatineau…). WordPress avec API REST maison : /wp-json/api/v1/residences retourne les 37 résidences géolocalisées (adresse, lat/lng, ville, url, vignette). Chaque page résidence (SSR) expose la grille des types d'unités dans des <article class="y-bordered"> : « Studio | 408 pi.ca à 628 pi.ca | À partir de 2 286 $ par mois ». Une annonce Lou-Ka par type × résidence, prix plancher « à partir de », étiquetée Résidence pour aînés. La même page (déjà téléchargée) fournit aussi la galerie de la résidence (photos des appartements et des aires communes — carousel360 + gallery--large + alentours), le texte de présentation et la liste des caractéristiques des unités (« Le confort à votre mesure ») : on les applique à chaque annonce sans aucune requête supplémentaire. | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://www.legroupemaurice.com |
| 12 | 12 | - **Page des annonces** : https://www.legroupemaurice.com/residences/ |
@@ -40,25 +40,25 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 408 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.5093975 | |
| 43 | −| `description` | Description | 100 % | Vos envies prennent vie à Cornelius ! Cette magnifique résidence pour aînés, située dans … | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://groupemaurice.tor1.digitaloceanspaces.com/app/uploads/2022/07/LGM_Co… | | |
| 45 | −| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true, "Résidence pour aînés": "oui"} | | |
| 43 | +| `description` | Description | 100 % | Passez votre retraite dans une bulle de bien-être à Cornelius, en plein cœur de Montréal … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 30 photo(s) — https://groupemaurice.tor1.digitaloceanspaces.com/app/uploads/2022/07/LGM_C… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Cuisine complète avec électroménagers et comptoirs de quartz", "Grande salle de bains a… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"fridge": true}, "balcony": true, "storage": true, "price_from": true, "R… | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.legroupemaurice.com/residences/cornelius/ | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 3.4 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:41 — 203 trouvées, +0 / ~203 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:45 — 203 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 203 au total, **203 actives** |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 6, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 45, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/groupe_robin.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Groupe Robin — connecteur `groupe_robin` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 72/74 | |
| 5 | +**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 71/76 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,14 +25,14 @@ connecteur Groupe Robin (grouperobin.com) WordPress Elementor multi-lignes d'aff | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 72 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 71 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 5 ½ — Le 2285 des Grandes-Orgues, St-Hyacinthe | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 2285 Av. des Grandes-Orgues | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Saint-Hyacinthe | |
| 35 | −| `sector` | Secteur / quartier | 22 % | — | | |
| 35 | +| `sector` | Secteur / quartier | 23 % | — | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 625 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 3 | |
@@ -48,16 +48,16 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:41 — 72 trouvées, +0 / ~72 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:45 — 71 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `PER_PAGE` = 40 |
| 56 | 56 | |
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | −- **Annonces en BD** : 74 au total, **72 actives** | |
| 60 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Annonces en BD** : 76 au total, **71 actives** | |
| 60 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 61 | 61 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 96 % |
| 62 | 62 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 63 | 63 | |
modified
docs/connecteurs/groupe_theoret.md
+6 −6
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Groupe Théorêt (Gestion Immobilière) — connecteur `groupe_theoret` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 24/24 |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −connecteur Groupe Théorêt (locationappartement.ca) GoDaddy Website Builder. La page « Appartements à louer » expose un widget « menu » : une section par immeuble (adresse + ville) et un item par unité (type, prix/mois, disponibilité) ; le lien « Plus d'informations » porte un UUID stable (data-section-jump) qui sert d'external_id. Les pages immeuble (cache BD) ajoutent l'adresse complète et les services inclus. | |
| 9 | +connecteur Groupe Théorêt (locationappartement.ca) GoDaddy Website Builder. La page « Appartements à louer » expose un widget « menu » : une section par immeuble (adresse + ville) et un item par unité (type, prix/mois, disponibilité) ; le lien « Plus d'informations » porte un UUID stable (data-section-jump) qui sert d'external_id. Les pages immeuble (cache BD) ajoutent l'adresse complète AVEC code postal (géocodage), le contact du concierge et les services inclus. LIMITES DE LA SOURCE : le site GoDaddy ne publie AUCUNE photo des immeubles (le compte wsimg ne contient que logo.png et frontpage.png) ni description par logement — annonces sans image/description longue, c'est le maximum disponible. | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://locationappartement.ca |
| 12 | 12 | - **Page des annonces** : https://locationappartement.ca/appartements-%C3%A0-louer |
@@ -43,20 +43,20 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 43 | 43 | | `description` | Description | 0 % | — | |
| 44 | 44 | | `images` | Photos (JSON) | 0 % | — | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 88 % | ["Eau chaude (Inclus)", "Chauffage (Inclus)", "Concierge (Inclus)"] | |
| 46 | −| `details` | Détails additionnels (JSON) | 88 % | {"inclusions": {"heating": true, "hot_water": true}} | | |
| 46 | +| `details` | Détails additionnels (JSON) | 88 % | {"inclusions": {"heating": true, "hot_water": true}, "contact": {"name": "Jean Chagnon", … | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://locationappartement.ca/5080-5100-pie-ix#5f15a6f5-ac50-4019-ae2a-f5a6ca5eeadf | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:41 — 24 trouvées, +0 / ~24 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:45 — 24 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 24 au total, **24 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 83 % · prix 100 % · photos 0 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/habitations_jeanne.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Habitations Jeanne — connecteur `habitations_jeanne` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Côte-Nord · Backend : direct · Annonces actives : 14/14 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:41 — 14 trouvées, +0 / ~14 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:45 — 14 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 14 au total, **14 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/habitations_sf.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Habitations SF (S&F Gestion) — connecteur `habitations_sf` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 7/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:41 — 7 trouvées, +0 / ~7 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:45 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **7 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 43 % · prix 86 % · photos 100 % · description 86 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/halfred.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Halfred — connecteur `halfred` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 164/169 | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 165/171 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Halfred (halfred.ca — Outaouais) Application React Router rendue C | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 164 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 165 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:42 — 164 trouvées, +0 / ~164 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:46 — 165 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 10.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 169 au total, **164 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 171 au total, **165 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 93 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/hazelview.md
+5 −5
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Hazelview Properties — connecteur `hazelview` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 6/6 |
| 6 | 6 | |
@@ -44,19 +44,19 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 14 photo(s) — https://assets.rentsync.com/timbercreek_communities/images/gallery/full/168… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["24/7 emergency service", "Air conditioner", "AirConditioning", "Bike Friendly", "Certif… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"fridge": true, "dishwasher": true}, "elevator": true, "laundry": true, "… | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://www.hazelviewproperties.com/properties/1405-bishop | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://hazelviewproperties.com/properties/1405-bishop | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:42 — 6 trouvées, +0 / ~6 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:46 — 6 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 6 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/headway.md
+6 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # La Corporation Headway — connecteur `headway` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 7/7 |
| 6 | 6 | |
@@ -39,7 +39,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 86 % | 46.8093361 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.8093361 | | |
| 43 | 43 | | `description` | Description | 100 % | Composition de l'immeuble : 1½, 2½, 3½, 4½. À moins de 5 minutes à pied : Arrêts d'autobu… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 13 photo(s) — https://static.wixstatic.com/media/ba2cd3_d93ae32018574ed3886df6992da1ede8~… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Chauffé, éclairé, eau chaude fournie", "Ascenseur", "Buanderie", "Espace de rangement",… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:42 — 7 trouvées, +0 / ~7 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:46 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **7 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 86 % · prix 0 % · photos 100 % · description 100 % | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/heafey.md
+14 −14
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Groupe Heafey (Le We 2, Le We 3, Loggia sur le Parc) — connecteur `heafey` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 246/255 | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 246/261 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −connecteur Groupe Heafey (Gatineau, secteur Hull) Le résidentiel du groupe vit sur un micro-site WordPress par projet, comme Immostar (immostar.py) : - Le We 2 et Le We 3 (lewe2.ca) -> sélecteur d'unités « Resimo » - Loggia sur le Parc (loggiasurleparc.com) -> même sélecteur Resimo La page /plans/ de chaque site intègre en iframe l'application Resimo (allinone-corsim-*.prod.resimo.io) dont la configuration publique donne l'URL d'inventaire, le jeton d'intégration et la liste des immeubles ; cet endpoint renvoie un JSON par immeuble : n° d'unité, superficie (pi²), nombre de chambres, statut (available / reserved / sold) et, avec additional_fields, le plan d'étage (pdf_url) et le lien de location. La découverte se fait à chaque sync (aucun jeton codé en dur) : 1 requête /plans/ + 1 requête app + 1 requête inventaire par site. Une annonce = une unité DISPONIBLE. ⚠ Le paramètre Resimo `showPrice` est à false sur les trois projets : AUCUN prix n'est publié par unité (les pages « unités vedettes » n'affichent des prix que par typologie type) — price reste donc None, rien n'est inventé. | |
| 9 | +connecteur Groupe Heafey (Gatineau, secteur Hull) Le résidentiel du groupe vit sur un micro-site WordPress par projet, comme Immostar (immostar.py) : - Le We 2 et Le We 3 (lewe2.ca) -> sélecteur d'unités « Resimo » - Loggia sur le Parc (loggiasurleparc.com) -> même sélecteur Resimo La page /plans/ de chaque site intègre en iframe l'application Resimo (allinone-corsim-*.prod.resimo.io) dont la configuration publique donne l'URL d'inventaire, le jeton d'intégration et la liste des immeubles ; cet endpoint renvoie un JSON par immeuble : n° d'unité, superficie (pi²), nombre de chambres, statut (available / reserved / sold) et, avec additional_fields, le plan d'étage (pdf_url) et le lien de location. La découverte se fait à chaque sync (aucun jeton codé en dur) : 1 requête /plans/ + 1 requête app + 1 requête inventaire par site. Une annonce = une unité DISPONIBLE. Le paramètre Resimo `showPrice` est à false sur les trois projets, mais le PRIX PAR UNITÉ est publié par le back-office DashQ : le `web_url` de chaque unité pointe vers myapartment.rent (SPA DashQ) avec bpi = identifiant public de l'immeuble ; l'API publique de cette SPA (webapi.myapartment.rent /api/rental-application-request/getRentalRequestListing?publicIdentifier= <bpi>) renvoie TOUTES les unités offertes : loyer (unitPrice), salles de bain, date de disponibilité (madeReadyDate), adresse civique exacte et code postal (c'est ainsi qu'on apprend l'adresse du We 3 : 82, rue Saint-Rédempteur). 1 requête DashQ par immeuble (3 au total), fusionnée par numéro d'unité. Une unité absente de DashQ reste sans prix — rien n'est inventé. GPS : non publié par la source (l'adresse civique propre alimente le géocodeur maison). | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://groupeheafey.com |
| 12 | 12 | - **Page des annonces** : https://lewe2.ca/plans/ |
@@ -17,7 +17,7 @@ connecteur Groupe Heafey (Gatineau, secteur Hull) Le résidentiel du groupe vit | ||
| 17 | 17 | |
| 18 | 18 | - **Type d'accès** : API JSON interne du site |
| 19 | 19 | - **Endpoint de base** : https://lewe2.ca/ |
| 20 | −- **URLs de départ (constantes du module)** : https://lewe2.ca/ · https://loggiasurleparc.com/ · https://[a-z0-9.-]*resimo | |
| 20 | +- **URLs de départ (constantes du module)** : https://lewe2.ca/ · https://loggiasurleparc.com/ · https://[a-z0-9.-]*resimo · https://webapi.myapartment.rent/api/ | |
| 21 | 21 | - **Authentification** : aucune — contenu public |
| 22 | 22 | - **Pagination** : page de liste unique (pas de pagination) |
| 23 | 23 | - **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) |
@@ -30,16 +30,16 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Le We 2 — Unité 0418 | |
| 33 | −| `address` | Adresse civique | 15 % | 45, rue Eddy, Gatineau, QC J8X 2V8 | | |
| 33 | +| `address` | Adresse civique | 100 % | 45, rue Eddy, Gatineau, QC J8X 2V8 | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Gatineau | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Hull | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | −| `price` | Loyer mensuel ($) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 650 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | −| `bathrooms` | Salles de bain | 0 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 1055 | |
| 41 | −| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | −| `lat` | GPS (lat/lng) | 15 % | 45.4264562 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-10-15 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.4264562 | | |
| 43 | 43 | | `description` | Description | 100 % | 2 chambre(s) — 1055 pi² — Le We 2 | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 11 photo(s) — https://dashqblobstorage.blob.core.windows.net/dq-building-photos/heafey/fl… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["5 électroménagers", "Internet", "chauffage", "électricité", "air climatisé central", "e… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 246 trouvées, +0 / ~246 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:46 — 246 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 255 au total, **246 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 15 % · prix 0 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 261 au total, **246 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/hestia.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Hestia Groupe immobilier — connecteur `hestia` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 3 trouvées, +0 / ~3 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:46 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/huma.md
+9 −9
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # HUMĀ Condos locatifs — connecteur `huma` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 38/38 |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −connecteur HUMĀ Condos locatifs (humalevis.com) Deux phases de 130/132 unités à Lévis (Saint-Romuald). Plans d'étages interactifs (<area data-color-scheme="disponible">) -> fiches d'unités (type, superficies, date de disponibilité, plan). Les pages de phases listent les services/inclusions ; la page contact donne l'adresse civique de chaque phase, le contact et le marqueur GPS. Aucun prix sur le site. | |
| 9 | +connecteur HUMĀ Condos locatifs (humalevis.com) Deux phases de 130/132 unités à Lévis (Saint-Romuald). Plans d'étages interactifs (<area data-color-scheme="disponible">) -> fiches d'unités (type, superficies, date de disponibilité, plan). Les pages de phases listent les services/inclusions ET les photos de la phase (aires de vie, gym, chambres… — ajoutées à la galerie de chaque unité, la fiche unité n'ayant que le plan) ; la page contact donne l'adresse civique de chaque phase, le contact et le marqueur GPS. Aucun prix sur le site (confirmé). Les href des <area> sont devenus relatifs (« /unites/condo-n-113 », redirigés vers /unite-phase-<n>/…) : gérés, et la phase est déduite de la page d'étage d'origine (external_id inchangé : phase-<n>-condo-<numéro>). | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://humalevis.com |
| 12 | 12 | - **Page des annonces** : https://humalevis.com |
@@ -30,7 +30,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | HUMĀ phase 1 — Condo locatif N°311 (3½) | |
| 33 | −| `address` | Adresse civique | 100 % | 1221, rue de Courchevel, Lévis (Québec) G6W 0V8 | | |
| 33 | +| `address` | Adresse civique | 100 % | 1221 rue de Courchevel, Lévis (Québec) G6W 0V8 | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Lévis | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Saint-Romuald | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
@@ -39,25 +39,25 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 876 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | |
| 42 | −| `lat` | GPS (lat/lng) | 26 % | 46.73317544859536 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.73317544859536 | | |
| 43 | 43 | | `description` | Description | 100 % | Étage 3 \| Modèle K \| Superficie du logement : 876 pi² \| Superficie du balcon : 65 pi² … | |
| 44 | −| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://humalevis.com/wp-content/uploads/2021/06/plan-type-k.jpg | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 11 photo(s) — https://humalevis.com/wp-content/uploads/2021/06/plan-type-k.jpg | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Ascenseurs", "Lave-auto", "Chute à déchet sur chaque étage", "Système de sécurité intég… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true}, "ac": true, "elevator": true, "balcony": true, "stora… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://humalevis.com/unite-phase-1/condo-n-311 | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 38 trouvées, +0 / ~38 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:47 — 38 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 38 au total, **38 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 26 % · prix 0 % · photos 100 % · description 100 % | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/immeubles_aeb.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immeubles AEB — connecteur `immeubles_aeb` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 26/26 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 26 trouvées, +0 / ~26 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:47 — 26 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 26 au total, **26 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 81 % · description 27 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immeubles_bc.md
+11 −11
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Les Immeubles Beaulieu et Collin — connecteur `immeubles_bc` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 20/26 | |
| 5 | +**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 20/30 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -30,17 +30,17 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 20 Rue St Laurent E | |
| 33 | −| `address` | Adresse civique | 95 % | 20 Rue St Laurent E, Rimouski, QC G5L 2C4 | | |
| 33 | +| `address` | Adresse civique | 90 % | 20 Rue St Laurent E, Rimouski, QC G5L 2C4 | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Rimouski | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 95 % | 5½ | | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 410 $ | |
| 38 | −| `bedrooms` | Chambres | 100 % | 3 | | |
| 38 | +| `bedrooms` | Chambres | 95 % | 3 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 48.447829977608 | |
| 43 | −| `description` | Description | 20 % | — | | |
| 43 | +| `description` | Description | 30 % | — | | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 11 photo(s) — https://immeublesbc.com/wp-content/uploads/2026/06/logement-a-louer-rimousk… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["3 chambre(s)", "2 salle(s) de bain", "Buanderie dans l'immeuble", "Cuisinière", "Déneig… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"stove": true}, "laundry": true, "parking": {"available": true, "type": "… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 20 trouvées, +0 / ~20 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:47 — 20 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 26 au total, **20 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 20 % | |
| 58 | +- **Annonces en BD** : 30 au total, **20 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 30 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/immeubles_bois.md
+6 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles Bois — connecteur `immeubles_bois` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 23/23 |
| 6 | 6 | |
@@ -39,7 +39,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 83 % | 48.4576312 | | |
| 42 | +| `lat` | GPS (lat/lng) | 87 % | 48.4576312 | | |
| 43 | 43 | | `description` | Description | 0 % | — | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 1 photo(s) — https://immeublesbois.ca/wp-content/uploads/2025/04/DJI_20250604105320_0073_… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 23 trouvées, +0 / ~23 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:47 — 23 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 23 au total, **23 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 83 % · prix 0 % · photos 100 % · description 0 % | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 87 % · prix 0 % · photos 100 % · description 0 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/immeubles_db.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles D.B. Busque-Massé — connecteur `immeubles_db` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 13/13 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 13 trouvées, +0 / ~13 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:47 — 13 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 13 au total, **13 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immeubles_dcl.md
+20 −20
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Les Immeubles DCL — connecteur `immeubles_dcl` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 8/11 | |
| 5 | +**État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 7/11 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,38 +25,38 @@ connecteur Les Immeubles DCL (lesimmeublesdcl.com — Rouyn-Noranda, Val-d'Or, M | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 8 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 7 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | 911 3e Avenue (#201) Val-D'or | | |
| 33 | −| `address` | Adresse civique | 100 % | 911 3e Avenue, Val-D'or, J9P 2T1 | | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Val-D'or | | |
| 35 | −| `sector` | Secteur / quartier | 100 % | Val-d'Or | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 1½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 900 $ | | |
| 38 | −| `bedrooms` | Chambres | 100 % | 0 | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 111 rue des Prospecteurs (#1) à Malartic | | |
| 33 | +| `address` | Adresse civique | 100 % | 111 rue des Rubis, Malartic, j0y1z0 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Malartic | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Malartic | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 425 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 100 % | 48.1033621 | | |
| 43 | −| `description` | Description | 100 % | 1 1/2 situé au 1er étage, disponible dès maintenant. Pour planifier une visite, contactez… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 6 photo(s) — https://immeubles-dcl.s3.ca-central-1.amazonaws.com/media/MoyLohLMQ5y1HgwcCd… | | |
| 45 | −| `amenities` | Commodités (JSON) | 100 % | ["1 pièce(s)", "1 chambre(s)", "WiFi", "Éclairé", "Chauffé", "Frigidaire", "Cuisinière", … | | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "internet": true}, "appliances": {"… | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://www.lesimmeublesdcl.com/logements-a-louer/911-3e-avenue-201-val-dor | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 48.13737159999999 | | |
| 43 | +| `description` | Description | 100 % | 4 1/2 au sous-sol, disponible 1er juillet 2026. Pour toute information supplémentaire, n'… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 11 photo(s) — https://immeubles-dcl.s3.ca-central-1.amazonaws.com/media/5CoPLIfHcNlzoD52f… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["4 pièce(s)", "2 chambre(s)", "1 salle(s) de bain", "Entrée laveuse/sécheuse", "Remise e… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true}, "appliances": {"washer_dryer_hookup": true, "dishwasher… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.lesimmeublesdcl.com/logements-a-louer/111-rue-des-rubis-1-a-malartic | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 8 trouvées, +0 / ~8 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:47 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 11 au total, **8 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 11 au total, **7 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immeubles_guillot.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles Guillot — connecteur `immeubles_guillot` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 7/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 7 trouvées, +0 / ~7 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:47 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **7 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 57 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 1 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immeubles_ouellet.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles Vianney Ouellet & Fils — connecteur `immeubles_ouellet` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 1 trouvées, +0 / ~1 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:47 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immeubles_pm.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles PM — connecteur `immeubles_pm` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 2 trouvées, +0 / ~2 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:47 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immnasr.md
+7 −7
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles Michel Nazair — connecteur `immnasr` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -34,12 +34,12 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Gatineau | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 1 325 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 315 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 1026 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2026-10-01 | |
| 42 | −| `lat` | GPS (lat/lng) | 67 % | 45.506552 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.506552 | | |
| 43 | 43 | | `description` | Description | 100 % | Près de la rue Main et Davidson. Logement de 1,026 pi. ca. situé au semi sous-sol d’un tr… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 9 photo(s) — https://site-nngjg8kd.dewsecdn1.dotezcdn.com/uploads/r/373-497-373-332-0-82/… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Prises laveuse et sécheuse"] | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 3 trouvées, +0 / ~3 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:47 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 67 % · prix 100 % · photos 100 % · description 100 % | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/immobilia.md
+6 −6
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Immobilia Rimouski — connecteur `immobilia` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 1/2 | |
| 5 | +**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 1/3 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 1 trouvées, +0 / ~1 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:47 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 2 au total, **1 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 3 au total, **1 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immogex.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immogex — connecteur `immogex` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:43 — 3 trouvées, +0 / ~3 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:47 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immomarketing.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # IMMOMARKETING (Immoappart) — connecteur `immomarketing` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 83/90 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 83/94 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -32,13 +32,13 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | CITÉ M - 4½ à louer | |
| 33 | 33 | | `address` | Adresse civique | 99 % | 1750 Rue Claire-Bonenfant, Québec, QC | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Québec | |
| 35 | −| `sector` | Secteur / quartier | 73 % | Lebourgneuf | | |
| 35 | +| `sector` | Secteur / quartier | 72 % | Lebourgneuf | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 2 095 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 295 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | −| `availability_date` | Date de disponibilité | 96 % | now | | |
| 41 | +| `availability_date` | Date de disponibilité | 98 % | now | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.83891 | |
| 43 | 43 | | `description` | Description | 100 % | UNE VIE D’EXCEPTION À LA CITÉ M, LEBOURGNEUF 4 ½ – Confort, espace et vue piscine Promoti… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 17 photo(s) — https://immoappart.ca/wp-content/uploads/2025/06/cite-m_app800_hd-13-scaled… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:44 — 83 trouvées, +0 / ~83 / -1 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:47 — 83 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 90 au total, **83 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 94 au total, **83 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immostar.md
+6 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immostar — connecteur `immostar` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 156/165 |
| 6 | 6 | |
@@ -39,7 +39,7 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 630 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2026-12-01 | |
| 42 | −| `lat` | GPS (lat/lng) | 72 % | 46.7704016 | | |
| 42 | +| `lat` | GPS (lat/lng) | 78 % | 46.7704016 | | |
| 43 | 43 | | `description` | Description | 100 % | 1 chambre — 630 pi² — étage 1 | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 4 photo(s) — https://habitermu.ca/wp-content/uploads/2023/11/MU-Drone-544_courNuit-scaled… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Grand gym à la fine pointe", "Piscine intérieure", "Studio de yoga ou de cour de groupe… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:44 — 156 trouvées, +0 / ~156 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:48 — 156 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 165 au total, **156 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 72 % · prix 99 % · photos 100 % · description 100 % | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 78 % · prix 99 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/info_logement.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Info-Logement — connecteur `info_logement` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 50/56 | |
| 5 | +**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 56/64 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Info-Logement (info-logement.com) Gestionnaire locatif de Lanaudière | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 50 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 56 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -37,7 +37,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 525 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 3 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 8 % | 1250 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 7 % | 1250 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.0551 | |
| 43 | 43 | | `description` | Description | 100 % | CONSTRUCTION AVRIL 2023 Immeuble de 6 logements STYLE CONDO FAMILLIALE 5 1/2 au deuxième … | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:45 — 50 trouvées, +0 / ~50 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:48 — 56 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 56 au total, **50 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 64 au total, **56 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/interrent.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # InterRent REIT (CLV Group) — connecteur `interrent` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 200/211 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 194/215 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,19 +25,19 @@ connecteur InterRent REIT (irent.com) Site Next.js (app router) : la page « com | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 200 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 194 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Trent & Kingsley — 7460 Ch. Kingsley - Plan E (app. 803) | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 5550 Trent Ave, Côte-Saint-Luc, H4W 1P3 | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Côte-Saint-Luc | | |
| 34 | +| `city` | Ville (normalisée) | 83 % | — | | |
| 35 | 35 | | `sector` | Secteur / quartier | 76 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 339 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 0 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 100 % | 578 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 99 % | 578 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.4611828 | |
| 43 | 43 | | `description` | Description | 100 % | 578 pi² — 1 sdb — plan 7460 Ch. Kingsley - Plan E — Promotion : Two Months Free* — *E & O… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:45 — 200 trouvées, +0 / ~200 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:48 — 194 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 211 au total, **200 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 215 au total, **194 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/jutras.md
+10 −10
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Habitations Jutras — connecteur `jutras` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 35/35 |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −connecteur Habitations Jutras (jutras.com) Promoteur-gestionnaire au Centre-du-Québec et en Estrie. WordPress + Avada (Fusion Builder) : /condos-a-louer/ liste les projets locatifs (/condo/<slug>/) ; chaque page projet expose une section « LES UNITÉS » (ancre id="prix") avec, par type d'unité (3½/4½/5½) : superficie, chambres, stationnements et « À partir de X$/mois ». Une annonce par (projet, type). Ville réelle tirée du <title> ou de la phrase « situé à/dans … » de la page projet. Le projet Prisme (page spéciale /condos-a-louer/drummondville/prisme/) est parsé par regex type+prix. Exclu : Huit Cents (immeuble 50 ans et plus). robots.txt permissif. | |
| 9 | +connecteur Habitations Jutras (jutras.com) Promoteur-gestionnaire au Centre-du-Québec et en Estrie. WordPress + Avada (Fusion Builder) : /condos-a-louer/ liste les projets locatifs (/condo/<slug>/) ; chaque page projet expose une section « LES UNITÉS » (ancre id="prix") avec, par type d'unité (3½/4½/5½) : superficie, chambres, stationnements et « À partir de X$/mois ». Une annonce par (projet, type). Ville réelle tirée du <title> ou de la phrase « situé à/dans … » de la page projet. Le projet Prisme (page spéciale /condos-a-louer/drummondville/prisme/) est parsé par regex type+prix. Exclu : Huit Cents (immeuble 50 ans et plus). robots.txt permissif. NB : certaines cartes placent leurs lignes (dont le prix !) dans des <li><div class="fusion-li-item-content"><b>…</b></div> plutôt que des <p> -> les deux formes sont lues. Galerie du projet (.fusion-gallery, miniatures -WxH ramenées à l'original) partagée par ses annonces. Aucune adresse civique par projet chez la source (ville seulement). | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://jutras.com |
| 12 | 12 | - **Page des annonces** : https://jutras.com/condos-a-louer/ |
@@ -34,30 +34,30 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Drummondville | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
| 37 | −| `price` | Loyer mensuel ($) | 54 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 60 % | 1 350 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 91 % | 960 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 0 % | — | |
| 43 | −| `description` | Description | 91 % | Déménagez chez vous dès juin 2026 ! · 960 pi 2 · 1 chambre · 1 ou 2 stationnements* *S el… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://jutras.com/wp-content/uploads/2025/11/LAtelier_Drummondville.png | | |
| 43 | +| `description` | Description | 100 % | Déménagez chez vous dès juin 2026 ! · 960 pi 2 · 1 chambre · 1 ou 2 stationnements* *S el… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 14 photo(s) — https://jutras.com/wp-content/uploads/2025/11/LAtelier_Drummondville.png | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"parking": {"available": true}} | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"storage": true, "parking": {"available": true, "included": false}, "price_from": true} | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://jutras.com/condo/atelier/#prix | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:45 — 35 trouvées, +0 / ~35 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:48 — 35 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 35 au total, **35 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 0 % · prix 54 % · photos 100 % · description 91 % | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 60 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/kangalou.md
+18 −18
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Kangalou — connecteur `kangalou` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 7916/7916 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 7774/8413 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −Kangalou (kangalou.com) — portail locatif québécois géré (Solutions Kangalou, ~8 700 annonces province entière). Découverte en UNE requête : l'endpoint carte `POST /fr/recherche/ajax/search-map/` (pinsOnly=true) renvoie tous les pins JSON — id, URL de fiche, GPS, ville, type (ti/tn ; 10=Commercial et 11=Garage exclus), « n ½ » (an), prix (mc), photo et l'état loué (ir, exclu). La fiche /fr/annonce/<slug>/<id>/ (SSR, aucun anti-bot) complète : adresse civique, chambres/salles de bain, loyer, étage, superficie, disponibilité, description, inclusions/caractéristiques et galerie (slider--gallery, images glide) — via TtlDetailCache (budget/TTL). L'API de liste HTML (POST /fr/api/search) existe aussi mais pagine par 29 et masque l'état loué (CSS) : les pins sont la source fiable. | |
| 9 | +Kangalou (kangalou.com) — portail locatif québécois géré (Solutions Kangalou, ~8 700 annonces province entière). Découverte en UNE requête : l'endpoint carte `POST /fr/recherche/ajax/search-map/` (pinsOnly=true) renvoie tous les pins JSON — id, URL de fiche, GPS, ville, type (ti/tn ; 10=Commercial et 11=Garage exclus), « n ½ » (an), prix (mc), photo et l'état loué (ir, exclu). La fiche /fr/annonce/<slug>/<id>/ (SSR, aucun anti-bot) complète : adresse civique, chambres/salles de bain, loyer, étage, superficie, disponibilité, description longue, sections « toggler » (Inclusions, Caractéristiques, Animaux, Sécurité, À proximité, Transport…) et la galerie COMPLÈTE pleine résolution (gr-modal-gallery-src, sans paramètre de redimensionnement) — via TtlDetailCache (budget/TTL). Le budget par défaut couvre tout le parc (~8 000 fiches) : le premier sync est long (~1 h 30), les suivants ne re-visitent que les fiches périmées (TTL). L'API de liste HTML (POST /fr/api/search) existe aussi mais pagine par 29 et masque l'état loué (CSS) : les pins sont la source fiable. | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://www.kangalou.com |
| 12 | 12 | - **Page des annonces** : https://www.kangalou.com/fr/recherche/ |
@@ -25,40 +25,40 @@ Kangalou (kangalou.com) — portail locatif québécois géré (Solutions Kangal | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 7916 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 7774 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 4300 Rue St-Ambroise | |
| 33 | −| `address` | Adresse civique | 9 % | 4300 Rue St-Ambroise | | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 33 | +| `address` | Adresse civique | 95 % | 4300 Rue St-Ambroise | | |
| 34 | +| `city` | Ville (normalisée) | 99 % | Montréal | | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 6½+ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 2 250 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | −| `bathrooms` | Salles de bain | 9 % | 1 | | |
| 40 | −| `area_sqft` | Superficie (pi²) | 8 % | — | | |
| 41 | −| `availability_date` | Date de disponibilité | 9 % | now | | |
| 39 | +| `bathrooms` | Salles de bain | 97 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 60 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.4734 | |
| 43 | −| `description` | Description | 7 % | Quai des Eclusiers! Très belle unité extrémement lumineuse au rez-de-chaussée avec une te… | | |
| 43 | +| `description` | Description | 78 % | Quai des Eclusiers! Très belle unité extrémement lumineuse au rez-de-chaussée avec une te… | | |
| 44 | 44 | | `images` | Photos (JSON) | 99 % | 6 photo(s) — https://s3.amazonaws.com/shareimmo/production/property_asset/asset/4a54f592-… | |
| 45 | −| `amenities` | Commodités (JSON) | 9 % | [] | | |
| 46 | −| `details` | Détails additionnels (JSON) | 9 % | {"appliances": {"stove": true, "dishwasher": true}, "balcony": true, "pool": true, "smoki… | | |
| 45 | +| `amenities` | Commodités (JSON) | 74 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 97 % | {"appliances": {"stove": true, "dishwasher": true}, "balcony": true, "pool": true, "smoki… | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.kangalou.com/fr/annonce/appartement-a-louer-6-1-2-le-sud-ouest-4300-rue-st-am… | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:54 — 7916 trouvées, +0 / ~369 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:50 — 7774 trouvées, +1 / ~1 / -12 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 7916 au total, **7916 actives** | |
| 59 | −- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 99 % · description 7 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 2, dont 0 en erreur | |
| 58 | +- **Annonces en BD** : 8413 au total, **7774 actives** | |
| 59 | +- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 99 % · description 78 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 39, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/kass.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # KASS Property Management — connecteur `kass` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:54 — 4 trouvées, +0 / ~4 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:51 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/katasa.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Katasa — connecteur `katasa` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 03:54 — 4 trouvées, +0 / ~4 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 14:51 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/kijiji.md
+10 −10
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Kijiji Québec (location) — connecteur `kijiji` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 5251/7409 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 5314/9379 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −Kijiji (kijiji.ca) — petites annonces de LOCATION UNIQUEMENT les catégories logement À LOUER, UNIQUEMENT le Québec (l9001) : c37 appartements & condos à louer · c36 chambres à louer & colocation Les pages listent 40+ annonces dans __NEXT_DATA__ (Apollo state) avec titre, prix, GPS, adresse, date de disponibilité et attributs (meublé, animaux, inclusions…) — aucune API privée nécessaire. Adapté du connecteur « à vendre » d'Immo-Ka (agent-courtage/immoka). | |
| 9 | +Kijiji (kijiji.ca) — petites annonces de LOCATION UNIQUEMENT les catégories logement À LOUER, UNIQUEMENT le Québec (l9001) : c37 appartements & condos à louer · c36 chambres à louer & colocation Les pages listent 40+ annonces dans __NEXT_DATA__ (Apollo state) avec titre, prix, GPS, adresse, date de disponibilité et attributs (meublé, animaux, inclusions…) — aucune API privée nécessaire. Adapté du connecteur « à vendre » d'Immo-Ka (agent-courtage/immoka). Prix « Sur demande » (price.type=CONTACT, ~3 % des annonces) : le montant est souvent écrit dans la description (« Loyer : 1 550 $ / mois ») — on le récupère prudemment (montant collé à $ + mois/month plausible), sinon le libellé affiché devient « Sur demande » plutôt que vide. (Vérifié à la source : les annonces sans photo ou à photo unique le sont réellement sur Kijiji — imageUrls vide/à 1 sur la fiche aussi.) | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://www.kijiji.ca |
| 12 | 12 | - **Page des annonces** : https://www.kijiji.ca/b-appartement-condo/quebec/c37l9001 |
@@ -25,19 +25,19 @@ Kijiji (kijiji.ca) — petites annonces de LOCATION UNIQUEMENT les catégories l | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 5251 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 5314 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 4 1/2 4.5, 2,chambres,bedrooms,louer, Cartierville, metro Sauvé | |
| 33 | 33 | | `address` | Adresse civique | 45 % | 10150 Lajeunesse | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 34 | +| `city` | Ville (normalisée) | 91 % | Montréal | | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 97 % | 1 495 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 78 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 64 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 65 % | — | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 68 % | 2026-08-01 | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.55274 | |
| 43 | 43 | | `description` | Description | 100 % | <p data-start="191" data-end="358"><strong data-start="191" data-end="260">PROMOTION 2 MO… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:02 — 5244 trouvées, +2 / ~5242 / -27 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:00 — 5249 trouvées, +38 / ~5 / -72 | |
| 53 | 53 | - **Throttling** : 1.2 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 7409 au total, **5251 actives** | |
| 59 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 9379 au total, **5314 actives** | |
| 59 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 97 % · photos 99 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/la_cour.md
+11 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # La Cour Appartements — connecteur `la_cour` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 20/21 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 19/21 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur La Cour Appartements (lacourappartements.com) 155, rue du Prince-Édo | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 20 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 19 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,21 +48,23 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:01 — 20 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 17:19 — 19 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 21 au total, **20 actives** | |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 21 au total, **19 actives** | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-18 15:52 | database is locked | | |
| 66 | 68 | |
| 67 | 69 | Rejouer la source seule : `python3 run.py sync la_cour` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='la_cour' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 70 | |
modified
docs/connecteurs/laberge.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Groupe Laberge — connecteur `laberge` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 55/58 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 57/62 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Gestion immobilière Laberge (laberge.qc.ca) Site rendu serveur. La p | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 55 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 57 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:02 — 55 trouvées, +0 / ~55 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:00 — 57 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 58 au total, **55 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 62 au total, **57 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 93 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/labonte.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Labonté — connecteur `labonte` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 18/18 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:02 — 18 trouvées, +0 / ~18 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:00 — 18 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 18 au total, **18 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/lachance.md
+12 −12
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Les Entreprises Lachance — connecteur `lachance` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 65/86 | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 75/98 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,21 +25,21 @@ connecteur Les Entreprises Lachance (lachance.qc.ca) Constructeur-gestionnaire d | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 65 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 75 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 1331, rue Quatre-Saisons, Sherbrooke (Fleurimont) | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 1331, rue Quatre-Saisons, Sherbrooke (Fleurimont) | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Sherbrooke | | |
| 35 | −| `sector` | Secteur / quartier | 71 % | Fleurimont | | |
| 34 | +| `city` | Ville (normalisée) | 89 % | Sherbrooke | | |
| 35 | +| `sector` | Secteur / quartier | 73 % | Fleurimont | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 350 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | −| `bathrooms` | Salles de bain | 18 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 21 % | — | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 650 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2026-12-18 | |
| 42 | −| `lat` | GPS (lat/lng) | 95 % | 45.4228717 | | |
| 42 | +| `lat` | GPS (lat/lng) | 93 % | 45.4228717 | | |
| 43 | 43 | | `description` | Description | 100 % | Situé dans un secteur recherché de Sherbrooke, le quartier de la rue des Quatre-Saisons o… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 12 photo(s) — https://images.lachance.qc.ca/a-louer/_1300x1300_fit_center-center_none/Ext… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Étage : Rez-de-jardin", "1 chambre(s)", "1 salle(s) de bain"] | |
@@ -48,16 +48,16 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:04 — 65 trouvées, +0 / ~65 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:02 — 75 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 86 au total, **65 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 95 % · prix 100 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 98 au total, **75 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 93 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/lacite.md
+6 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # La Cité Gatineau (Adam Real Estate) — connecteur `lacite` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 6/7 |
| 6 | 6 | |
@@ -39,7 +39,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 762 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.485858694 | | |
| 43 | 43 | | `description` | Description | 100 % | Type A-Type 310·510·710·910·1110·1310·1510·1710 — balcon 222 pi² — superficie totale 984 … | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 1 photo(s) — https://lacitegatineau.com/wp-content/uploads/2023/10/310-510-710-910-1110-1… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:06 — 6 trouvées, +0 / ~6 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:04 — 6 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 10.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/lafrance_mathieu.md
+6 −6
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Lafrance & Mathieu — connecteur `lafrance_mathieu` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 37/40 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 37/41 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:06 — 37 trouvées, +0 / ~37 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:04 — 37 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 40 au total, **37 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 41 au total, **37 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/lakle.md
+12 −12
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # La Klé — connecteur `lakle` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 45/49 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 43/49 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −connecteur La Klé (lakle.ca) Complexe de 559 appartements locatifs (4 phases) dans la Cité Verte (Québec, secteur Saint-Sacrement). La page « disponibilité » expose : 1) le sélecteur de plans WordPress de la tour la plus récente (phase 4) : unités en <polygon class="disponible" data-numero=...> + API REST /wp-json/do-selecteur-plans/v1/unite?id=N (prix, type, superficie habitable/terrasse, étage, style, date libre, plan) ; 2) des cartes <li> « Unité B16 - Phase 3 » pour les unités disponibles des phases 2 et 3 (superficie, chambres, description, plan — sans prix). La page /contact fournit l'adresse civique et le lat/lng de chaque phase (marqueurs Google Map structurés). | |
| 9 | +connecteur La Klé (lakle.ca) Complexe de 559 appartements locatifs (4 phases) dans la Cité Verte (Québec, secteur Saint-Sacrement). La page « disponibilité » expose : 1) le sélecteur de plans WordPress de la tour la plus récente (phase 4) : unités en <polygon class="disponible" data-numero=...> + API REST /wp-json/do-selecteur-plans/v1/unite?id=N (prix, type, superficie habitable/terrasse, étage, style, date libre, plan) ; 2) des cartes <li> « Unité B16 - Phase 3 » pour les unités disponibles des phases 2 et 3 (superficie, chambres, description, plan — AUCUN prix publié pour ces unités chez la source : rien d'inventé). La page /contact fournit l'adresse civique et le lat/lng de chaque phase (marqueurs Google Map structurés). La page /appartements/ fournit les photos types du complexe (piscine, intérieurs) — ajoutées à la galerie de chaque unité, la source n'ayant qu'un plan/une photo par unité. | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://lakle.ca |
| 12 | 12 | - **Page des annonces** : https://lakle.ca |
@@ -25,7 +25,7 @@ connecteur La Klé (lakle.ca) Complexe de 559 appartements locatifs (4 phases) d | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 45 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 43 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -34,30 +34,30 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Québec | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Cité Verte (Saint-Sacrement) | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
| 37 | −| `price` | Loyer mensuel ($) | 56 % | 1 845 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 53 % | 1 845 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | −| `bathrooms` | Salles de bain | 4 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 5 % | — | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 682 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.798431 | |
| 43 | 43 | | `description` | Description | 100 % | Étage 1 \| 1 chambre(s) \| Superficie 682 pi² \| Balcon 161 pi² \| Style Classique \| Pla… | |
| 44 | −| `images` | Photos (JSON) | 96 % | 1 photo(s) — https://lakle.ca/wp-content/uploads/2025/02/LaKle4-D3.png | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 7 photo(s) — https://lakle.ca/wp-content/uploads/2025/02/LaKle4-D3.png | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Électroménagers inclus", "Électricité incluse", "Chauffage et climatisation centrale", … | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true}, "appliances": {"fridge": true}, "a… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://lakle.ca/phase-1-occupation-immediate/ | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:07 — 45 trouvées, +0 / ~45 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:05 — 43 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 49 au total, **45 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 56 % · photos 96 % · description 100 % | |
| 58 | +- **Annonces en BD** : 49 au total, **43 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 53 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/lambert.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Société Immobilière Lambert — connecteur `lambert` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:07 — 2 trouvées, +0 / ~2 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:05 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 50 % · photos 100 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/laureat_richard.md
+8 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Logements Lauréat Richard — connecteur `laureat_richard` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 23/23 |
| 6 | 6 | |
@@ -48,21 +48,23 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:07 — 23 trouvées, +0 / ~23 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:05 — 23 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 23 au total, **23 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-21 15:04 | HTTPSConnectionPool(host='laureatrichard.com', port=443): Read timed out. (read timeout=30) | | |
| 66 | 68 | |
| 67 | 69 | Rejouer la source seule : `python3 run.py sync laureat_richard` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='laureat_richard' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 70 | |
modified
docs/connecteurs/le_baronet.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Le Baronet — connecteur `le_baronet` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 3/3 | |
| 5 | +**État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 4/6 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Le Baronet (lebaronet.com) Angle rue Notre-Dame Sud / rue Baronet, Sa | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:07 — 3 trouvées, +0 / ~3 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:05 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 6 au total, **4 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/le_st_georges.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le St-Georges — connecteur `le_st_georges` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:07 — 4 trouvées, +0 / ~4 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:05 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/leclif.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Le Clif — connecteur `leclif` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 9/9 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 10/10 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Le Clif (leclif.ca) Projet mono-immeuble de 151 condos locatifs à Ch | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 10 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:07 — 9 trouvées, +0 / ~9 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:05 — 10 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 9 au total, **9 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 10 au total, **10 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/ledomaine.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Habitations Le Domaine — connecteur `ledomaine` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:07 — 5 trouvées, +0 / ~5 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:05 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/lelaureat.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Résidences Le Lauréat — connecteur `lelaureat` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:07 — 5 trouvées, +0 / ~5 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:05 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/lequerre.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Habitations L'Équerre — connecteur `lequerre` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:07 — 1 trouvées, +0 / ~1 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:05 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/lespac.md
+10 −10
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # LesPAC (location) — connecteur `lespac` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 2270/2568 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 2242/2882 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ LesPAC (lespac.com) — petites annonces du Québec UNIQUEMENT l'immobilier LOCA | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2270 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2242 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -34,12 +34,12 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Saint-Georges | |
| 35 | 35 | | `sector` | Secteur / quartier | 34 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 97 % | 4½ | |
| 37 | −| `price` | Loyer mensuel ($) | 87 % | 995 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 97 % | 995 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 98 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 9 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 22 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 47 % | 46.125801079 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.1258985 | | |
| 43 | 43 | | `description` | Description | 99 % | Appartement agréable et lumineux Très grand logements de 1 130' carré Cage escalier intér… | |
| 44 | 44 | | `images` | Photos (JSON) | 93 % | 10 photo(s) — https://cdn.lespac.com/binary/basephoto/2896124268.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Adresse : 13063 24e Avenue, Saint-Georges, QC, Canada", "Type de location : Location lo… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:10 — 2243 trouvées, +2 / ~2241 / -7 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:08 — 2237 trouvées, +4 / ~1 / -4 | |
| 53 | 53 | - **Throttling** : 0.9 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 2568 au total, **2270 actives** | |
| 59 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 47 % · prix 87 % · photos 93 % · description 99 % | |
| 58 | +- **Annonces en BD** : 2882 au total, **2242 actives** | |
| 59 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 97 % · photos 93 % · description 99 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/leviu.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Le VIU / VIU2 (Groupe Heafey) — connecteur `leviu` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 2/2 | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 3/3 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Le VIU / VIU2 (leviu.ca — Groupe Heafey) Tours de condos locatifs d | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:10 — 2 trouvées, +0 / ~2 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:08 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 2 au total, **2 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/location_di.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Location DI (Groupe Sphère DI) — connecteur `location_di` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Mauricie / Lanaudière · Backend : direct · Annonces actives : 9/12 | |
| 5 | +**État : actif** · Région : Mauricie / Lanaudière · Backend : direct · Annonces actives : 9/16 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -36,7 +36,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 950 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | −| `bathrooms` | Salles de bain | 89 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 78 % | 1 | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 750 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.295955 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:10 — 9 trouvées, +0 / ~9 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:08 — 9 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 12 au total, **9 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 16 au total, **9 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/location_saguenay.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Location Saguenay — connecteur `location_saguenay` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 21/21 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:10 — 21 trouvées, +0 / ~21 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:08 — 21 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 10.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 21 au total, **21 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 76 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/loftsmtl.md
+5 −5
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Lofts MTL — connecteur `loftsmtl` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 9/9 |
| 6 | 6 | |
@@ -44,19 +44,19 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 8 photo(s) — https://assets.rentsync.com/lofts/images/gallery/512/1692901081569_158014023… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["1 salle(s) de bain", "614 pi²", "Balconies", "Concrete floors", "Dishwasher available",… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"fridge": true, "stove": true, "dishwasher": true, "washer_dryer": true},… | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://www.loftsmtl.com/apartments/loft-du-main | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://loftsmtl.com/apartments/loft-du-main | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:10 — 9 trouvées, +0 / ~9 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:09 — 9 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 9 au total, **9 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/logement_mauricie.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Logement Mauricie (regroupement de propriétaires) — connecteur `logement_mauricie` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:10 — 1 trouvées, +0 / ~1 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:09 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/logis_experts.md
+11 −11
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Logis-Experts — connecteur `logis_experts` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 498/517 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 487/519 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Logis-Experts (logis-experts.com) Gestionnaire-constructeur, centre-v | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 498 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 487 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -40,24 +40,24 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 98 % | 788 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.8111676 | |
| 43 | −| `description` | Description | 0 % | — | | |
| 44 | −| `images` | Photos (JSON) | 39 % | 6 photo(s) — https://dkkmxhlt20gis.cloudfront.net/dev/uploads/logis-experts-dsc-4023-abf9… | | |
| 43 | +| `description` | Description | 100 % | Superficie de 788 pi². Au 4e étage. Frais d'énergie : Chauffé & Éclairé. Eau chaude inclu… | | |
| 44 | +| `images` | Photos (JSON) | 38 % | 12 photo(s) — https://dkkmxhlt20gis.cloudfront.net/dev/uploads/logis-experts-508-411-st-v… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Chauffé & Éclairé", "Contrôle Accès (Puces)", "Lounge", "Terrasse", "Gym", "Garage Sout… | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "internet": true}, "elevator": true… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true, "internet": true… | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://logis-experts.com/immeuble/508-rue-saint-vallier-ouest-le-saint-s/appartement/411 | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:10 — 497 trouvées, +0 / ~497 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:09 — 487 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 517 au total, **498 actives** | |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 39 % · description 0 % | |
| 58 | +- **Annonces en BD** : 519 au total, **487 actives** | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 38 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/logisbourg.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Logisbourg — connecteur `logisbourg` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 11/14 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:11 — 11 trouvées, +0 / ~11 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:09 — 11 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 14 au total, **11 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/logisco.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Logisco — connecteur `logisco` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 157/174 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 160/184 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Logisco (logisco.com) Site rendu serveur. Crawl : page liste principa | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 157 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 160 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:11 — 157 trouvées, +0 / ~157 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:09 — 160 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 174 au total, **157 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 184 au total, **160 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 99 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/logisma.md
+15 −15
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Logisma — connecteur `logisma` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 15/19 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 12/20 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,39 +25,39 @@ connecteur Logisma (logisma.ca) Page de recherche /appartements-a-louer/ (boucle | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 15 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 12 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | 2 1/2 – 89 Place de Versailles #02, Lévis | | |
| 33 | −| `address` | Adresse civique | 100 % | 89 Place de Versailles #02 | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 2 1/2 – 89 Place de Versailles #02, Lévis **REMISE 1000$** | | |
| 33 | +| `address` | Adresse civique | 100 % | 89 Place de Versailles #02, Lévis **REMISE 1000$** | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Lévis | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Lévis | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 2½ | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 843 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 000 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 0 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 80 % | 46.803338 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.803338 | | |
| 43 | 43 | | `description` | Description | 100 % | 2 1/2 dans un grand complexe résidentiel. Secteur résidentiel calme et recherché, Place d… | |
| 44 | −| `images` | Photos (JSON) | 100 % | 7 photo(s) — https://logisma.ca/wp-content/uploads/2026/01/77-6_Versailles_00050.jpg | | |
| 45 | −| `amenities` | Commodités (JSON) | 100 % | ["Prix de base : 920$/mois", "843$ avec le mois gratuit"] | | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"contact": {"phone": "418-652-0377"}} | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 11 photo(s) — https://logisma.ca/wp-content/uploads/2026/01/77-6_Versailles_00050.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Eau chaude INCLUSE!", "Wifi offert gratuitement", "1 stationnements extérieur inclus", … | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": false, "electricity": false, "hot_water": true, "internet": tr… | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://logisma.ca/appartements-a-louer/4-1-2-89-place-de-versailles-06-levis-2/ | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:11 — 15 trouvées, +0 / ~15 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:09 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 19 au total, **15 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 80 % · prix 100 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 20 au total, **12 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/logispro.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # LogisPro Rimouski — connecteur `logispro` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:11 — 4 trouvées, +0 / ~4 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:09 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 75 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/logisquebec.md
+15 −15
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # LogisQuébec — connecteur `logisquebec` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 6791/6794 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 9668/10178 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,20 +25,20 @@ LogisQuébec (logisquebec.com) — portail locatif québécois (Réglisse Média | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 6791 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9668 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Un Beau 5 1/2 Completement Renové | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 80B rue Sylvio Langlois | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Saint-Félix-de-Dalquier | |
| 35 | −| `sector` | Secteur / quartier | 44 % | — | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 93 % | 5½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 900 $ | | |
| 38 | −| `bedrooms` | Chambres | 94 % | 3 | | |
| 35 | +| `sector` | Secteur / quartier | 50 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 95 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 99 % | 900 $ | | |
| 38 | +| `bedrooms` | Chambres | 95 % | 3 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 85 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 31 % | — | | |
| 41 | −| `availability_date` | Date de disponibilité | 69 % | now | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 32 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 75 % | now | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 48.6738344 | |
| 43 | 43 | | `description` | Description | 100 % | Un beau 5 ½ au cœur du village St-Félix-de-Dalquier. Rue Sylvio Langlois # 80-A. En face … | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 6 photo(s) — https://i.logisquebec.com/i-a-louer/83855/318750/20220708_110422_jpg_68fac7d… | |
@@ -48,17 +48,17 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 3.1 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:20 — 6791 trouvées, +398 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:14 — 9668 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 6794 au total, **6791 actives** | |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 7, dont 0 en erreur | |
| 58 | +- **Annonces en BD** : 10178 au total, **9668 actives** | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 99 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 43, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/lokalia.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Espaces Lokalia — connecteur `lokalia` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 131/135 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 130/141 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Espaces Lokalia (espaceslokalia.ca) Le gestionnaire couvre plusieurs | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 131 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 130 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:21 — 131 trouvées, +0 / ~131 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:15 — 130 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 135 au total, **131 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 141 au total, **130 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 82 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/louer_ca.md
+11 −11
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Louer.ca — connecteur `louer_ca` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 4576/5357 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 4613/5908 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,20 +25,20 @@ Louer.ca — portail locatif 100 % Québec du réseau Rentals.ca. Accès par l'A | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4576 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4613 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 1225 Saint Marc Street | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 1225 Saint Marc Street | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Montréal | |
| 35 | −| `sector` | Secteur / quartier | 15 % | — | | |
| 35 | +| `sector` | Secteur / quartier | 17 % | — | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 450 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | −| `bathrooms` | Salles de bain | 86 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 83 % | 400 | |
| 41 | −| `availability_date` | Date de disponibilité | 98 % | now | | |
| 41 | +| `availability_date` | Date de disponibilité | 99 % | now | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.492189 | |
| 43 | 43 | | `description` | Description | 100 % | Le Marco Situé au 1225, rue Saint Marc, à proximité du métro Guy-Concordia, ce quartier o… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 12 photo(s) — https://images.rentals.ca/property-pictures/large/montreal-qc/809380/apartm… | |
@@ -48,17 +48,17 @@ Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `l | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 3.7 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:33 — 5029 trouvées, +36 / ~3813 / -123 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:21 — 4317 trouvées, +6 / ~14 / -260 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 5357 au total, **4576 actives** | |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 5908 au total, **4613 actives** | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 5, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 41, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/louer_saguenay.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Louer Saguenay — connecteur `louer_saguenay` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:33 — 5 trouvées, +0 / ~5 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:21 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/louis14.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Quartier Louis Quatorze (Groupe Damco) — connecteur `louis14` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 18/18 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 17/18 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Quartier Louis Quatorze (louis14.ca) 424 condos locatifs (immeubles A | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 18 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 17 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:33 — 17 trouvées, +0 / ~17 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:21 — 17 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 18 au total, **18 actives** | |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 18 au total, **17 actives** | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/lr_gestion.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # LR Gestion immobilière (LR Location) — connecteur `lr_gestion` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 111/116 | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 106/116 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,14 +25,14 @@ connecteur LR Gestion immobilière / LR Location (lrgestion.com ; portail d'anno | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 111 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 106 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 1005B Rue Notre Dame — unité 1005B-3 | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 1005 Rue Notre Dame, Gatineau, QC | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Gatineau | |
| 35 | −| `sector` | Secteur / quartier | 67 % | — | | |
| 35 | +| `sector` | Secteur / quartier | 66 % | — | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 595 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 0 % | — | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:33 — 112 trouvées, +0 / ~111 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:21 — 107 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 116 au total, **111 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 116 au total, **106 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/luxuor.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles Luxuor — connecteur `luxuor` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:34 — 4 trouvées, +0 / ~4 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:22 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 75 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/lynk_olymbec.md
+8 −8
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Lynk (Olymbec) — connecteur `lynk_olymbec` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : Firecrawl · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -34,29 +34,29 @@ Le connecteur (Firecrawl, pages HTML (rendu serveur)) alimente les colonnes de l | ||
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Montréal | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Namur / De la Savane (CDN-NDG) | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 1 380 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 152 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 0 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 75 % | — | | |
| 41 | −| `availability_date` | Date de disponibilité | 75 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 517 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.4989506 | |
| 43 | 43 | | `description` | Description | 100 % | Lynk’s studio, 3 ½, 4 ½ & 5 ½ floor plans are designed to support a flexible, connected l… | |
| 44 | −| `images` | Photos (JSON) | 100 % | 25 photo(s) — https://resource.rentcafe.com/image/upload/x_0,y_0,w_3200,h_2133,c_crop/q_a… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 30 photo(s) — https://resource.rentcafe.com/image/upload/x_0,y_0,w_3200,h_2133,c_crop/q_a… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["chauffage — thermostat individuellement contrôlé", "électricité", "eau chaude", "détect… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true, "internet": true… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.lynk.ca/lynk-dls/units | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:34 — 0 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:22 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-17 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/m_immobilier.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # M Immobilier (location) — connecteur `m_immobilier` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 193/199 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 186/207 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ M Immobilier (mimmobilier.com) — LOCATIONS Agence indépendante de prestige (G | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 193 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 186 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -39,7 +39,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 91 % | 1 | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 53 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 59 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 58 % | — | | |
| 43 | 43 | | `description` | Description | 100 % | Beau logement de 2 chambres situé au niveau inférieur d'une propriété unifamiliale constr… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 25 photo(s) — https://www.mimmobilier.com/images/centris-slideshow/13486094-1-494761508.j… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:34 — 190 trouvées, +1 / ~189 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:22 — 186 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 199 au total, **193 actives** | |
| 59 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 59 % · prix 100 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 207 au total, **186 actives** | |
| 59 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 58 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/majestic.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le Majestic du Lac Boivin — connecteur `majestic` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:34 — 1 trouvées, +0 / ~1 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:22 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 0 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/matinale.md
+16 −16
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Gestion Matinale — connecteur `matinale` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 44/45 | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 44/46 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −connecteur Gestion Matinale (gestionmatinale.com) ~44 apparts + maisons à Sherbrooke, Magog et Windsor. WordPress + WooCommerce : chaque logement offert est un « produit » — archives /a-louer/appartements-logements/ (paginée, 16/page) et /a-louer/maison/. Cartes li.product : titre « 1330 KING OUEST, SHERBROOKE, J1J 2B6 (Août) » (adresse, ville, code postal + disponibilité entre parenthèses), prix WooCommerce, type d'unité dans la taxonomie (classe product_cat-5-1-2) et photo. external_id = ID WordPress (classe post-<id>). ATTENTION robots.txt : « Crawl-Delay: 20 » -> request_delay de 20 s et AUCUNE fiche produit visitée (archives seulement, 4-5 requêtes par sync). | |
| 9 | +connecteur Gestion Matinale (gestionmatinale.com) ~44 apparts + maisons à Sherbrooke, Magog et Windsor. WordPress + WooCommerce : chaque logement offert est un « produit » — archives /a-louer/appartements-logements/ (paginée, 16/page) et /a-louer/maison/. Cartes li.product : titre « 1330 KING OUEST, SHERBROOKE, J1J 2B6 (Août) » (adresse, ville, code postal + disponibilité entre parenthèses), prix WooCommerce, type d'unité dans la taxonomie (classe product_cat-5-1-2) et photo. external_id = ID WordPress (classe post-<id>). ATTENTION robots.txt : « Crawl-Delay: 20 » -> request_delay de 20 s, respecté aussi pour les fiches produit : chaque fiche (galerie complète + description) n'est visitée qu'à l'apparition de l'annonce ou à un changement de prix/dispo (cache BD `detail`), budget max_details par sync. La première synchronisation complète prend ~15 min (43 fiches x 20 s) ; les suivantes retombent à 4-5 requêtes. | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://gestionmatinale.com |
| 12 | 12 | - **Page des annonces** : https://gestionmatinale.com/a-louer/appartements-logements/ |
@@ -29,35 +29,35 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | 1330 KING OUEST, SHERBROOKE, J1J 2B6 (Août) | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 1330 KING OUEST, SHERBROOKE, J1J 2B6 (Vacant) | | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 1330 KING OUEST, SHERBROOKE, J1J 2B6 | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Sherbrooke | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 345 $ | |
| 38 | −| `bedrooms` | Chambres | 86 % | 3 | | |
| 39 | −| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | −| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 95 % | 3 | | |
| 39 | +| `bathrooms` | Salles de bain | 11 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 14 % | — | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 86 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 57 % | 45.3985951 | | |
| 43 | −| `description` | Description | 0 % | — | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://gestionmatinale.com/wp-content/uploads/2024/06/1330-Ko-facade-1.jpg | | |
| 42 | +| `lat` | GPS (lat/lng) | 59 % | 45.3985951 | | |
| 43 | +| `description` | Description | 100 % | Magnifique 5 ½ entièrement rénové en 2024 — Coup de cœur assuré ! Découvrez ce superbe lo… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 13 photo(s) — https://gestionmatinale.com/wp-content/uploads/2024/06/1330-Ko-facade-1.jpg | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
| 46 | −| `details` | Détails additionnels (JSON) | 84 % | {"postal_code": "J1J 2B6"} | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"fridge": true, "washer_dryer": false, "washer_dryer_hookup": true}, "sto… | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://gestionmatinale.com/appartement/5-1-2/1330-king-ouest-sherbrooke-j1j-2b6/ | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:35 — 44 trouvées, +0 / ~44 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:23 — 44 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 20.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 45 au total, **44 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 57 % · prix 100 % · photos 100 % · description 0 % | |
| 58 | +- **Annonces en BD** : 46 au total, **44 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 59 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/may_bourg.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion May Bourg — connecteur `may_bourg` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 6/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:35 — 6 trouvées, +0 / ~6 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:23 — 6 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 50 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 1 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/medway.md
+12 −12
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Groupe Medway — connecteur `medway` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 488/498 | |
| 5 | +**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 482/499 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Groupe Medway (condosmedway.ca) Condos locatifs neufs multi-villes : | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 488 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 482 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -40,24 +40,24 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 590 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2027-01-01 | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 91 % | 46.7321163 | |
| 43 | −| `description` | Description | 0 % | — | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://condosmedway.ca/wp-content/uploads/2026/04/Faro-Modele-20.png | | |
| 43 | +| `description` | Description | 100 % | Découvrez un milieu de vie pensé pour suivre votre rythme. Stratégiquement situé à quelqu… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 23 photo(s) — https://b3853357.assetcdn.net/2.0/3853357/wp-content/uploads/2025/09/Header… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 78 % | ["Balcon 43 pi²"] | |
| 46 | −| `details` | Détails additionnels (JSON) | 78 % | {"balcony": true} | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://condosmedway.ca/projet/medway-faro/?t=r | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"balcony": true, "pool": true, "gym": true, "virtual_tour": "https://minuitmoinsune.view… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://condosmedway.ca/medwayfaro/medway-faro-unite-1513/ | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:36 — 488 trouvées, +0 / ~488 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:24 — 482 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 498 au total, **488 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 91 % · prix 100 % · photos 100 % · description 0 % | |
| 58 | +- **Annonces en BD** : 499 au total, **482 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 91 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/mellem.md
+11 −11
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Mellem (Groupe Mach) — connecteur `mellem` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 78/87 | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 79/90 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Mellem (mellem.ca — Groupe Mach) Site Nuxt (rendu serveur) : un pro | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 78 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 79 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -35,28 +35,28 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 96 % | 3½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 868 $ | |
| 38 | −| `bedrooms` | Chambres | 96 % | 1 | | |
| 39 | −| `bathrooms` | Salles de bain | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 590 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.5786 | |
| 43 | −| `description` | Description | 100 % | B13 — 590 pi² — balcon 58 pi² — 1 chambre(s) — 1 salle(s) de bain — 5eme étage (C) | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://d10eh8wo1l4y8c.cloudfront.net/projects/a0d89b35-e0de-40d6-bb33-6c0de… | | |
| 43 | +| `description` | Description | 100 % | B13 — 590 pi² — balcon 58 pi² — 1 chambre(s) — 1 salle(s) de bain — 5eme étage (C) Habite… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 21 photo(s) — https://d10eh8wo1l4y8c.cloudfront.net/projects/a0d89b35-e0de-40d6-bb33-6c0d… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Internet", "Électricité", "Air climatisé et thermopompe dissimulée sur le toit", "5 éle… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"electricity": true, "internet": true}, "appliances": {"fridge": true}, "… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.mellem.ca/projets/grace-dart#unite-531 | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:36 — 78 trouvées, +0 / ~78 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:24 — 78 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 87 au total, **78 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 90 au total, **79 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/mercini.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Groupe Mercini (Gestion Faleschini Mercier) — connecteur `mercini` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 47/52 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 45/53 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Groupe Mercini (Gestion Faleschini Mercier) (groupemercini.com — Li | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 47 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 45 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -39,7 +39,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 2 | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 2 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 98 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 94 % | 46.8123302 | | |
| 42 | +| `lat` | GPS (lat/lng) | 96 % | 46.8123302 | | |
| 43 | 43 | | `description` | Description | 100 % | Situé au 2575 boulevard de Monaco – app 2 à Duberger Référence de l’annonce : : REF230126… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 9 photo(s) — https://groupemercini.com/wp-content/uploads/2026/02/exposio_0002-min.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["2 Chambres", "2 salle(s) de bain", "2 Salles de bain", "Air climatisé", "Balcon", "Chie… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:37 — 47 trouvées, +0 / ~47 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:24 — 45 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 52 au total, **47 actives** | |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 94 % · prix 100 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 53 au total, **45 actives** | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 96 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/metcap.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # MetCap Living — connecteur `metcap` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 8/8 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:37 — 8 trouvées, +0 / ~8 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:25 — 8 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 8 au total, **8 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/minto.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Minto Apartments — connecteur `minto` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 19/20 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:37 — 19 trouvées, +0 / ~19 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:25 — 19 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 20 au total, **19 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 84 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/mkar.md
+8 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Immobilière MKAR — connecteur `mkar` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -48,21 +48,23 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:37 — 5 trouvées, +0 / ~5 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:25 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-19 18:10 | HTTPSConnectionPool(host='gestionimmobilieremkar.ca', port=443): Read timed out. (read timeout=30) | | |
| 66 | 68 | |
| 67 | 69 | Rejouer la source seule : `python3 run.py sync mkar` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='mkar' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 70 | |
modified
docs/connecteurs/moderno.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Moderno Construction — connecteur `moderno` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 7/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:37 — 7 trouvées, +0 / ~7 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:25 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **7 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/mondev.md
+10 −10
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Mondev — connecteur `mondev` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 47/49 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 43/49 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Mondev (mondev.ca) Grand constructeur-locateur montréalais (Ville-Ma | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 47 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 43 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -39,8 +39,8 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 49 % | 45.526832 | | |
| 43 | −| `description` | Description | 94 % | Find your new home at Jacques in Ville-Marie. Studios, 1, 2, or 3-bedroom rentals with hi… | | |
| 42 | +| `lat` | GPS (lat/lng) | 47 % | 45.526832 | | |
| 43 | +| `description` | Description | 95 % | Find your new home at Jacques in Ville-Marie. Studios, 1, 2, or 3-bedroom rentals with hi… | | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 40 photo(s) — https://mondev.ca/wp-content/uploads/2025/06/Fullum_ext_Cam_001_1-1.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Appliances", "Electricity", "Heating", "Air Conditioning", "Indoor parking", "Gym", "Po… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true}, "appliances": {"fridge": true}, "a… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:38 — 47 trouvées, +0 / ~47 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:26 — 43 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 49 au total, **47 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 49 % · prix 100 % · photos 100 % · description 94 % | |
| 58 | +- **Annonces en BD** : 49 au total, **43 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 47 % · prix 100 % · photos 100 % · description 95 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/montagnais.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le Montagnais, résidences étudiantes — connecteur `montagnais` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 31/31 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:38 — 31 trouvées, +0 / ~31 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:26 — 31 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 31 au total, **31 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/morin.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Constructions Morin — connecteur `morin` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 6/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:38 — 6 trouvées, +0 / ~6 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:26 — 6 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 83 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/msi.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # MSI Gestion immobilière — connecteur `msi` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 96/105 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 96/109 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -32,7 +32,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 167 Avenue Ruel | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 167 Avenue Ruel, Québec, QC, Canada | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Québec | |
| 35 | −| `sector` | Secteur / quartier | 98 % | Chutes-Montmorency | | |
| 35 | +| `sector` | Secteur / quartier | 95 % | Chutes-Montmorency | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 88 % | 4½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 095 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 99 % | 2 | |
@@ -40,7 +40,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 6 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.874519 | |
| 43 | −| `description` | Description | 27 % | — | | |
| 43 | +| `description` | Description | 100 % | 4½ de 2 chambre(s) au 2e étage (dernier étage). Non fumeur, Balcon, Entrée lave-vaisselle… | | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 7 photo(s) — https://api.msimmobiliers.com/wp-content/uploads/2024/10/img_7982.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["2 e étage", "Dernier étage", "2 chambre", "Chien interdit", "Non fumeur", "Balcon", "En… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"washer_dryer_hookup": true, "dishwasher_hookup": true}, "balcony": true,… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:38 — 96 trouvées, +0 / ~96 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:27 — 96 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 105 au total, **96 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 27 % | |
| 58 | +- **Annonces en BD** : 109 au total, **96 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/multi_logis.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Multi-Logis — connecteur `multi_logis` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Côte-Nord · Backend : direct · Annonces actives : 27/27 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:38 — 27 trouvées, +0 / ~27 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:27 — 27 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 27 au total, **27 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 96 % · photos 70 % · description 81 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/niddamour.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Nid d'Amour — connecteur `niddamour` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 14/14 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:38 — 14 trouvées, +0 / ~14 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:27 — 14 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 14 au total, **14 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/novelo.md
+7 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Appartements Novelo — connecteur `novelo` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,23 +48,24 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:38 — 4 trouvées, +0 / ~4 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:27 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 2 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | 65 | | Date | Message (sync_log) | |
| 66 | 66 | |---|---| |
| 67 | −| 2026-08-12 20:25 | HTTPSConnectionPool(host='appartementsnovelo.com', port=443): Read timed out. (read timeout=30) | | |
| 67 | +| 2026-08-19 06:07 | HTTPSConnectionPool(host='appartementsnovelo.com', port=443): Read timed out. (read timeout=30) | | |
| 68 | +| 2026-08-18 10:39 | HTTPSConnectionPool(host='appartementsnovelo.com', port=443): Read timed out. (read timeout=30) | | |
| 68 | 69 | |
| 69 | 70 | Rejouer la source seule : `python3 run.py sync novelo` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='novelo' ORDER BY ts DESC LIMIT 5;`). |
| 70 | 71 | |
modified
docs/connecteurs/oklouer.md
+6 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # OK Louer (location temporaire) — connecteur `oklouer` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 41/41 |
| 6 | 6 | |
@@ -39,7 +39,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 95 % | 46.8142 | | |
| 42 | +| `lat` | GPS (lat/lng) | 98 % | 46.8142 | | |
| 43 | 43 | | `description` | Description | 100 % | Appartement meublé en location temporaire (court, moyen ou long terme). | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 9 photo(s) — https://www.oklouer.com/uploads/m/202310172013094629693.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["1 lit", "1 salle de bain", "Avec air climatisé sur demande", "Meublé"] | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:39 — 41 trouvées, +0 / ~41 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:27 — 41 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 41 au total, **41 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 95 % · prix 100 % · photos 100 % · description 100 % | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 98 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/omhm.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # OMHM — logements abordables — connecteur `omhm` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 3/3 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 3/4 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -39,7 +39,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 67 % | — | | |
| 43 | 43 | | `description` | Description | 0 % | — | |
| 44 | 44 | | `images` | Photos (JSON) | 0 % | — | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
@@ -48,17 +48,17 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 3.7 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:39 — 3 trouvées, +0 / ~3 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:27 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 0 % · description 0 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 5, dont 0 en erreur | |
| 58 | +- **Annonces en BD** : 4 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 67 % · prix 100 % · photos 0 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 41, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/osgoode.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Osgoode Properties — connecteur `osgoode` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:39 — 4 trouvées, +0 / ~4 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:28 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/oxford.md
+6 −8
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Appartements Oxford — connecteur `oxford` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,8 +48,8 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:39 — 2 trouvées, +0 / ~2 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:28 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `_MAX_FICHES` = 12 |
@@ -57,15 +57,13 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | 59 | - **Annonces en BD** : 2 au total, **2 actives** |
| 60 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 61 | 61 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 62 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 63 | 63 | |
| 64 | 64 | ## Erreurs connues & dépannage |
| 65 | 65 | |
| 66 | −| Date | Message (sync_log) | | |
| 67 | −|---|---| | |
| 68 | −| 2026-08-14 06:42 | HTTPSConnectionPool(host='appartoxford.com', port=443): Read timed out. (read timeout=30) | | |
| 66 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 69 | 67 | |
| 70 | 68 | Rejouer la source seule : `python3 run.py sync oxford` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='oxford' ORDER BY ts DESC LIMIT 5;`). |
| 71 | 69 | |
modified
docs/connecteurs/per.md
+6 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles Paul-E. Richard — connecteur `per` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -39,7 +39,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | |
| 42 | −| `lat` | GPS (lat/lng) | 67 % | 46.839488 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.839488 | | |
| 43 | 43 | | `description` | Description | 0 % | — | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 2 photo(s) — https://immeublesper.com/wp-content/uploads/2018/08/4515-4535-4555-4575-5e-A… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Intercom", "Balcon", "Plancher Bois Flottant, Céramique", "Stationnement à part : 30.00… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:39 — 3 trouvées, +0 / ~3 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:28 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 67 % · prix 100 % · photos 100 % · description 0 % | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/picard.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Picard Immobilier — connecteur `picard` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 34/34 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 29/34 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Picard Immobilier (picardimmobilier.net) La page /recherche/ liste to | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 34 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 29 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:39 — 34 trouvées, +0 / ~34 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:28 — 29 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 34 au total, **34 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 34 au total, **29 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/place_florimay.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Place Florimay — connecteur `place_florimay` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 0/0 |
| 6 | 6 | |
@@ -48,8 +48,8 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:39 — 0 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:28 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
modified
docs/connecteurs/plan_a.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Plan A Immobilier — connecteur `plan_a` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 11/11 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:39 — 11 trouvées, +0 / ~11 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:28 — 11 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 11 au total, **11 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 91 % · prix 91 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/progim.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Progim — connecteur `progim` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 62/68 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 65/73 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Gestion Immobilière Progim (progimannonces.bstk.io — plateforme Bu | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 62 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 65 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -37,7 +37,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 450 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 68 % | 737 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 71 % | 737 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.441216 | |
| 43 | 43 | | `description` | Description | 94 % | Situé dans le secteur paisible et recherché de Dorval, cet appartement bénéficie d’un emp… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:39 — 62 trouvées, +0 / ~62 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:28 — 65 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 68 au total, **62 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 73 au total, **65 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 94 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/projection_immo.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Projection Immobilière — connecteur `projection_immo` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:40 — 1 trouvées, +0 / ~1 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:28 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/promenade_des_forts.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Promenade des Forts — connecteur `promenade_des_forts` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:40 — 2 trouvées, +0 / ~2 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:29 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/proprio_direct.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Proprio Direct (location) — connecteur `proprio_direct` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 190/190 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 183/193 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,13 +25,13 @@ Proprio Direct (propriodirect.com) — LOCATION L'inventaire (alimenté par le f | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 190 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 183 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 31, Boul. des Hauteurs | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 31, Boul. des Hauteurs | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Saint-Jérôme | | |
| 34 | +| `city` | Ville (normalisée) | 99 % | Saint-Jérôme | | |
| 35 | 35 | | `sector` | Secteur / quartier | 61 % | Lafontaine | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 99 % | 3½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 095 $ | |
@@ -48,18 +48,18 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:40 — 190 trouvées, +0 / ~190 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:29 — 183 trouvées, +1 / ~1 / -0 | |
| 53 | 53 | - **Throttling** : 0.4 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `MAX_PAGES` = 60 |
| 56 | 56 | |
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | −- **Annonces en BD** : 190 au total, **190 actives** | |
| 60 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Annonces en BD** : 193 au total, **183 actives** | |
| 60 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 61 | 61 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 92 % |
| 62 | −- **Runs journalisés (60 derniers)** : 58, dont 0 en erreur | |
| 62 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 63 | 63 | |
| 64 | 64 | ## Erreurs connues & dépannage |
| 65 | 65 | |
modified
docs/connecteurs/quanta.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Quanta — connecteur `quanta` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:40 — 2 trouvées, +0 / ~2 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:29 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/quartier_mosaique.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Quartier Mosaïque (Constrobourg) — connecteur `quartier_mosaique` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 24/24 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:40 — 24 trouvées, +0 / ~24 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:29 — 24 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 24 au total, **24 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/quartier_oree.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Quartier Orée — connecteur `quartier_oree` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 31/31 | |
| 5 | +**État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 28/31 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Quartier Orée (quartieroree.com) Route Chassé, Sainte-Marie (Chaudi | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 31 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 28 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:40 — 31 trouvées, +0 / ~31 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:29 — 28 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 31 au total, **31 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 31 au total, **28 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/quartier_plus.md
+12 −12
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Le Quartier Plus — connecteur `quartier_plus` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 59/59 |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −connecteur Le Quartier Plus (lequartierplus.com — Thetford Mines, Chaudière-Appalaches). Complexe locatif 55+ autonome (aucun service de repas/soins : appartements standards, lofts urbains et unités bigénérationnelles) construit en 3 phases ; la page /plans-et-visites-virtuelles/ embarque un sélecteur d'étages WordPress (thème ubeo-theme-v5-child) dont TOUTES les unités sont rendues serveur : blocs `div.unit#unit_<n>` avec numéro, statut (« disponible », « Construction 2026 »…), type (3½/4½/4½+/5½), lettre de modèle, superficie du logement et du balcon, plan PNG/PDF. Seules les unités dont le statut contient « disponible » sont retenues. Aucun prix par unité (seul un « à partir de 1195 $ » global est cité en prose) -> price=None, rien d'inventé. L'adresse « 140, rue Kingsville » (phase 3) publiée sur la page n'est attachée qu'aux unités dont le statut mentionne « Construction 2026 ». external_id stable : numéro d'unité (unit_501 -> 501). robots.txt Yoast ouvert (Disallow vide), sitemap public. | |
| 9 | +connecteur Le Quartier Plus (lequartierplus.com — Thetford Mines, Chaudière-Appalaches). Complexe locatif 55+ autonome (aucun service de repas/soins : appartements standards, lofts urbains et unités bigénérationnelles) construit en 3 phases ; la page /plans-et-visites-virtuelles/ embarque un sélecteur d'étages WordPress (thème ubeo-theme-v5-child) dont TOUTES les unités sont rendues serveur : blocs `div.unit#unit_<n>` avec numéro, statut (« disponible », « Construction 2026 »…), type (3½/4½/4½+/5½), lettre de modèle, superficie du logement et du balcon, plan PNG/PDF. Seules les unités dont le statut contient « disponible » sont retenues. Aucun prix par unité, MAIS la page publie des boîtes « info-box » par type (3½ / 4½ / 4½+ et 5½) avec « À partir de X$/mois », plage de superficies et caractéristiques -> price_label par type (prix plancher, convention « à partir de » du schéma) + description. Adresses (page /contact/) : phases 1-2 = 180, rue Kingsville ; phase 3 (statut « Construction 2026 ») = 140, rue Kingsville — G6G 0S7. Photos : le site n'a pas de galerie par unité (plan PNG seulement) ; on ajoute la vue de l'immeuble (plans) et la photo de la bâtisse (/contact/). external_id stable : numéro d'unité (unit_501 -> 501). robots.txt Yoast ouvert (Disallow vide), sitemap public. | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://www.lequartierplus.com |
| 12 | 12 | - **Page des annonces** : https://www.lequartierplus.com/plans-et-visites-virtuelles/ |
@@ -30,34 +30,34 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Le Quartier Plus — Unité 501 (4½+) | |
| 33 | −| `address` | Adresse civique | 100 % | 140, rue Kingsville, Thetford Mines | | |
| 33 | +| `address` | Adresse civique | 100 % | 140, rue Kingsville, Thetford Mines (Québec) G6G 0S7 | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Thetford Mines | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | −| `price` | Loyer mensuel ($) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 97 % | 1 854 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | −| `bathrooms` | Salles de bain | 0 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 64 % | 2 | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 1097 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.1078511 | |
| 43 | −| `description` | Description | 0 % | — | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://www.lequartierplus.com/wp-content/themes/ubeo-theme-v5-child/images/… | | |
| 43 | +| `description` | Description | 100 % | Type 4½+ au Quartier Plus : À partir de 1854$/mois De 1116 pi² à 1273 pi² Balcon de 8 pi … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 3 photo(s) — https://www.lequartierplus.com/wp-content/themes/ubeo-theme-v5-child/images/… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Modèle L", "Balcon 128 pi²"] | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"balcony": true} | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"balcony": true, "price_from": true} | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.lequartierplus.com/plans-et-visites-virtuelles/ | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:40 — 59 trouvées, +0 / ~59 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:29 — 59 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 59 au total, **59 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 0 % | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 97 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/quartier_sila.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Quartier Sila — connecteur `quartier_sila` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 199/200 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 198/200 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Quartier Sila (silalevis.ca) Complexe de condos locatifs du Groupe Da | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 199 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 198 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -41,22 +41,22 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 41 | 41 | | `availability_date` | Date de disponibilité | 7 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.7371 | |
| 43 | 43 | | `description` | Description | 100 % | Étage 7 \| Phase 2 \| Modèle B-3 \| 2 chambre(s) \| 1 salle(s) de bain \| Balcon de 63 pi… | |
| 44 | −| `images` | Photos (JSON) | 100 % | 2 photo(s) — https://d10eh8wo1l4y8c.cloudfront.net/projects/94e3406e-0815-4e93-986f-70295… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://d10eh8wo1l4y8c.cloudfront.net/projects/94e3406e-0815-4e93-986f-7029… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["2 ascenseurs dans chaque phase", "Caméras de surveillance", "Entrée sécurisée", "1 stat… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true}, "elevator": true, "balcony": true, "gym": true, "stor… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://silalevis.ca/condos-locatifs-sila/ | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:40 — 199 trouvées, +0 / ~199 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:29 — 198 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 200 au total, **199 actives** | |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 200 au total, **198 actives** | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 26 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/realstar.md
+7 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Realstar — connecteur `realstar` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 9/9 |
| 6 | 6 | |
@@ -31,7 +31,7 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Bourg Du Village | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 25 Place Casavant, Sainte Therese, QC J7E 5X1 | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Sainte-Thérèse | | |
| 34 | +| `city` | Ville (normalisée) | 89 % | Sainte-Thérèse | | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 11 % | 4½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 750 $ | |
@@ -48,22 +48,23 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:40 — 9 trouvées, +0 / ~9 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:29 — 9 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 9 au total, **9 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 2 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | 65 | | Date | Message (sync_log) | |
| 66 | 66 | |---|---| |
| 67 | +| 2026-08-21 01:15 | 502 Server Error: Bad Gateway for url: https://api.firecrawl.dev/v1/scrape | | |
| 67 | 68 | | 2026-08-15 21:53 | 502 Server Error: Bad Gateway for url: https://api.firecrawl.dev/v1/scrape | |
| 68 | 69 | |
| 69 | 70 | Rejouer la source seule : `python3 run.py sync realstar` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='realstar' ORDER BY ts DESC LIMIT 5;`). |
modified
docs/connecteurs/remax_quebec.md
+15 −15
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # RE/MAX Québec (location) — connecteur `remax_quebec` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 3237/3379 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 3227/3518 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -21,17 +21,17 @@ RE/MAX Québec (remax-quebec.com) — LOCATIONS Le site interroge un index Meili | ||
| 21 | 21 | - **Authentification** : aucune — contenu public |
| 22 | 22 | - **Pagination** : page de liste unique (pas de pagination) |
| 23 | 23 | - **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) |
| 24 | −- **Politesse** : 0.15 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 24 | +- **Politesse** : 0.4 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3237 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3227 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 12 Rue des Pommiers | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 12 Rue des Pommiers | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Château-Richer | | |
| 34 | +| `city` | Ville (normalisée) | 99 % | Château-Richer | | |
| 35 | 35 | | `sector` | Secteur / quartier | 86 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | Maison | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 950 $ | |
@@ -40,25 +40,25 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 53 % | 884 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.963065 | |
| 43 | −| `description` | Description | 90 % | Magnifique propriété récente louée entièrement meublée et équipée. Luminosité exceptionne… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 24 photo(s) — https://media.remax-quebec.com/img/www_full/0194/m22369195-pri01-01.jpg | | |
| 43 | +| `description` | Description | 96 % | Magnifique propriété récente louée entièrement meublée et équipée. Luminosité exceptionne… | | |
| 44 | +| `images` | Photos (JSON) | 99 % | 24 photo(s) — https://media.remax-quebec.com/img/www_full/0194/m22369195-pri01-01.jpg | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "balcony": true, "storage": true, "pets": "non", "smoking": false, "furnishe… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.remax-quebec.com/fr/proprietes/maison-a-louer-region-de-quebec/12-rue-des-pom… | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:43 — 3235 trouvées, +6 / ~3229 / -8 | |
| 53 | −- **Throttling** : 0.15 s entre requêtes (constante de classe `request_delay`) | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:35 — 3224 trouvées, +2 / ~2 / -0 | |
| 53 | +- **Throttling** : 0.4 s entre requêtes (constante de classe `request_delay`) | |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 3379 au total, **3237 actives** | |
| 59 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 90 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 58, dont 0 en erreur | |
| 58 | +- **Annonces en BD** : 3518 au total, **3227 actives** | |
| 59 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 99 % · description 96 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
@@ -69,7 +69,7 @@ Rejouer la source seule : `python3 run.py sync remax_quebec` · vérifier ensuit | ||
| 69 | 69 | ## Licence, attribution & conditions |
| 70 | 70 | |
| 71 | 71 | - Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. |
| 72 | −- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.15 s ; cache détail pour minimiser les requêtes. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.4 s ; cache détail pour minimiser les requêtes. | |
| 73 | 73 | - Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. |
| 74 | 74 | - Retrait sur demande : contact@spboucher.ai. |
| 75 | 75 | |
modified
docs/connecteurs/rentals_ca.md
+16 −16
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Rentals.ca (Québec) — connecteur `rentals_ca` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : Scrapfly · Annonces actives : 4906/4906 | |
| 5 | +**État : actif** · Région : Province · Backend : Scrapfly · Annonces actives : 4439/5654 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,40 +25,40 @@ Rentals.ca — portail locatif national, filtré PROVINCE DE QUÉBEC. Même plat | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (Scrapfly, API GraphQL interne) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4906 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (Scrapfly, API GraphQL interne) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4439 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 1225 Saint Marc Street | |
| 33 | −| `address` | Adresse civique | 90 % | 1225 Saint Marc Street | | |
| 33 | +| `address` | Adresse civique | 100 % | 1225 Saint Marc Street | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Montréal | |
| 35 | −| `sector` | Secteur / quartier | 15 % | — | | |
| 35 | +| `sector` | Secteur / quartier | 19 % | — | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 450 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 72 % | 400 | | |
| 41 | −| `availability_date` | Date de disponibilité | 85 % | now | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 80 % | 400 | | |
| 41 | +| `availability_date` | Date de disponibilité | 94 % | now | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.492189 | |
| 43 | −| `description` | Description | 90 % | Le Marco Situé au 1225, rue Saint Marc, à proximité du métro Guy-Concordia, ce quartier o… | | |
| 44 | −| `images` | Photos (JSON) | 90 % | 12 photo(s) — https://images.rentals.ca/property-pictures/large/montreal-qc/809380/apartm… | | |
| 45 | −| `amenities` | Commodités (JSON) | 91 % | ["Cuisinière", "Non-fumeur", "Balcon", "Réfrigérateur", "Électricité incluse", "Chauffage… | | |
| 43 | +| `description` | Description | 100 % | Le Marco Situé au 1225, rue Saint Marc, à proximité du métro Guy-Concordia, ce quartier o… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://images.rentals.ca/property-pictures/large/montreal-qc/809380/apartm… | | |
| 45 | +| `amenities` | Commodités (JSON) | 92 % | ["Cuisinière", "Non-fumeur", "Balcon", "Réfrigérateur", "Électricité incluse", "Chauffage… | | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true}, "appliances": {"fridge": true, "st… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://rentals.ca/montreal/le-marco-1225-st-marc-st | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:49 — 4224 trouvées, +1454 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:40 — 4072 trouvées, +3 / ~6 / -155 | |
| 53 | 53 | - **Throttling** : 0.3 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 4906 au total, **4906 actives** | |
| 59 | −- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 90 % · description 90 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 2, dont 0 en erreur | |
| 58 | +- **Annonces en BD** : 5654 au total, **4439 actives** | |
| 59 | +- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 37, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/rentalys.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Rentalys — connecteur `rentalys` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 10/10 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:49 — 10 trouvées, +0 / ~10 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:41 — 10 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 10 au total, **10 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/rivero.md
+1 −1
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le Rivero — connecteur `rivero` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : désactivé (disabled=True)** · Région : Québec · Backend : direct · Annonces actives : 0/214 |
| 6 | 6 | |
modified
docs/connecteurs/roomies.md
+12 −12
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Roomies.ca — connecteur `roomies` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 277/278 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 281/306 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,40 +25,40 @@ Roomies.ca — chambres et colocation (segment que les gestionnaires ne couvrent | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 277 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 281 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Furnished room in an apartment | |
| 33 | −| `address` | Adresse civique | 66 % | — | | |
| 33 | +| `address` | Adresse civique | 68 % | — | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Montréal | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | Chambre | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 690 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | −| `bathrooms` | Salles de bain | 73 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 70 % | 1 | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 5 % | — | |
| 41 | −| `availability_date` | Date de disponibilité | 97 % | 2026-10-01 | | |
| 41 | +| `availability_date` | Date de disponibilité | 96 % | 2026-10-01 | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.4600610916329 | |
| 43 | 43 | | `description` | Description | 100 % | Cute, clean, bright and practical private room for a female at 690$ / month. It is 5 minu… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 10 photo(s) — https://cloudinary.roomies.pics/image/upload/c_fill,f_jpg,fl_lossy,g_auto,h… | |
| 45 | −| `amenities` | Commodités (JSON) | 99 % | ["Furnished", "Internet access"] | | |
| 45 | +| `amenities` | Commodités (JSON) | 98 % | ["Furnished", "Internet access"] | | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "hot_water": true, "internet": true}, "appliances": {"fr… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.roomies.ca/rooms/1024705 | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 3.6 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:50 — 276 trouvées, +2 / ~274 / -1 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:46 — 277 trouvées, +2 / ~47 / -1 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 278 au total, **277 actives** | |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 306 au total, **281 actives** | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 5, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 40, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/roussin.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immeubles Roussin — connecteur `roussin` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 36/36 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:50 — 36 trouvées, +0 / ~36 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:46 — 36 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 36 au total, **36 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/royal_lepage.md
+14 −14
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Royal LePage (location) — connecteur `royal_lepage` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 951/1043 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 954/1138 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −Royal LePage (royallepage.ca) — LOCATIONS Québec Le portail rend ses résultats côté serveur. La recherche par ville est filtrable : /fr/search/homes/{page}/?search_str=...&prov_code=QC&city_name= ...&lat=..&lng=..&search_type=city + « transactionType=LEASE » (trouvé dans le formulaire caché du site) renvoie les propriétés À LOUER (46/page, prix « 1 850.00 $ /mois » sur la carte). Chaque recherche plafonne à ~1 250 résultats ; on SHARD par points d'ancrage répartis dans la province et on dédoublonne par numéro MLS (dans l'URL /.../mls{no}/). Aucune dépendance Firecrawl : requêtes directes. Adapté du connecteur « à vendre » d'Immo-Ka (agent-courtage/immoka). La fiche détail (accessible en direct, ~0,7 s) fournit ce que la carte liste n'a pas : description (« Remarques »), superficie habitable et bureau — enrichissement plafonné (DETAIL_LIMIT/cycle) + cache BD, le parc se complète au fil des synchronisations. | |
| 9 | +Royal LePage (royallepage.ca) — LOCATIONS Québec Le portail rend ses résultats côté serveur. La recherche par ville est filtrable : /fr/search/homes/{page}/?search_str=...&prov_code=QC&city_name= ...&lat=..&lng=..&search_type=city + « transactionType=LEASE » (trouvé dans le formulaire caché du site) renvoie les propriétés À LOUER (46/page, prix « 1 850.00 $ /mois » sur la carte). Chaque recherche plafonne à ~1 250 résultats ; on SHARD par points d'ancrage répartis dans la province et on dédoublonne par numéro MLS (dans l'URL /.../mls{no}/). Aucune dépendance Firecrawl : requêtes directes. Adapté du connecteur « à vendre » d'Immo-Ka (agent-courtage/immoka). La fiche détail (accessible en direct, ~0,7 s) fournit ce que la carte liste n'a pas : galerie COMPLÈTE (originaux pleine résolution du CDN jumplisting, ordre du carrousel), description (« Remarques »), superficie habitable, caractéristiques (label/valeur) et bureau — enrichissement plafonné (DETAIL_LIMIT/cycle) + cache BD, le parc se complète au fil des synchronisations. | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://www.royallepage.ca |
| 12 | 12 | - **Page des annonces** : https://www.royallepage.ca/fr/qc/rentals/ |
@@ -17,7 +17,7 @@ Royal LePage (royallepage.ca) — LOCATIONS Québec Le portail rend ses résulta | ||
| 17 | 17 | |
| 18 | 18 | - **Type d'accès** : pages HTML (rendu serveur) |
| 19 | 19 | - **Endpoint de base** : https://www.royallepage.ca/fr/search/homes |
| 20 | −- **URLs de départ (constantes du module)** : https://www.royallepage.ca/fr/search/homes · https://www.royallepage.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.royallepage.ca/fr/search/homes · https://www.royallepage.ca · https://rlp.jumplisting.com/photos/{path}/{pid}_{idx}.jpg | |
| 21 | 21 | - **Authentification** : aucune — contenu public |
| 22 | 22 | - **Pagination** : page de liste unique (pas de pagination) |
| 23 | 23 | - **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) |
@@ -25,7 +25,7 @@ Royal LePage (royallepage.ca) — LOCATIONS Québec Le portail rend ses résulta | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 951 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 954 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -37,29 +37,29 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 850 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 90 % | 1 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 93 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 12 % | 527 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 59 % | 527 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.506426 | |
| 43 | −| `description` | Description | 21 % | Superbe 1 chambre fermée au 31e étage du Maestria, avec balcon privé et vue panoramique s… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://rlp.jumplisting.com/photos/28/95/49/24/28954924_0_lg.jpg | | |
| 43 | +| `description` | Description | 95 % | Superbe 1 chambre fermée au 31e étage du Maestria, avec balcon privé et vue panoramique s… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 20 photo(s) — https://rlp.jumplisting.com/photos/28/95/49/24/28954924_0.jpg | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"electricity": true, "hot_water": true, "internet": true}, "appliances": … | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.royallepage.ca/fr/property/quebec/montreal-ville-marie/3117-1210-rue-jeanne-m… | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 949 trouvées, +0 / ~949 / -1 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 945 trouvées, +4 / ~0 / -2 | |
| 53 | 53 | - **Throttling** : 0.4 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `MAX_PAGES` = 30 |
| 56 | 56 | |
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | −- **Annonces en BD** : 1043 au total, **951 actives** | |
| 60 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-18 | |
| 61 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 21 % | |
| 62 | −- **Runs journalisés (60 derniers)** : 59, dont 0 en erreur | |
| 59 | +- **Annonces en BD** : 1138 au total, **954 actives** | |
| 60 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 61 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 95 % | |
| 62 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 63 | 63 | |
| 64 | 64 | ## Erreurs connues & dépannage |
| 65 | 65 | |
modified
docs/connecteurs/savouet.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Savouet — connecteur `savouet` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 15/17 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 15 trouvées, +0 / ~15 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 15 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 17 au total, **15 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 93 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/sdg.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # SDG Immobilier — connecteur `sdg` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 9/11 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 9 trouvées, +0 / ~9 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 9 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 11 au total, **9 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 89 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/sentinelle.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # La Sentinelle (Groupe Immobilier Brochu) — connecteur `sentinelle` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 10/11 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 9/11 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur La Sentinelle (lasentinellelevis.com) Immeuble de 144 condos locatifs | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 10 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 10 trouvées, +0 / ~10 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 9 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 11 au total, **10 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 11 au total, **9 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/sgiq.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # SGIQ (Société de gestion immobilière du Québec) — connecteur `sgiq` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 147/147 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 147 trouvées, +0 / ~147 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 147 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 147 au total, **147 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 99 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/shdm.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # SHDM — connecteur `shdm` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 2/21 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 1/23 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur SHDM — Société d'habitation et de développement de Montréal (sh | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -39,7 +39,7 @@ Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `l | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | |
| 42 | −| `lat` | GPS (lat/lng) | 50 % | 45.5212722 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.5212722 | | |
| 43 | 43 | | `description` | Description | 100 % | Triple x neuf idéalement situé dans l’arrondissement Ville-Marie , à deux pas du parc Laf… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 7 photo(s) — https://www.shdm.org/app/uploads/2026/06/champlain_immeuble1.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Balcon", "2 chambres", "Clientèle : Pour tous"] | |
@@ -48,16 +48,16 @@ Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `l | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 2 trouvées, +0 / ~2 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 21 au total, **2 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 50 % · prix 100 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 23 au total, **1 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/siagi.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # SIA Gestion Immobilière — connecteur `siagi` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 6/6 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 6 trouvées, +0 / ~6 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 6 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 6 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 0 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/sibelanger.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Société immobilière Bélanger — connecteur `sibelanger` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 12/19 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 12/22 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -35,11 +35,11 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Charlesbourg | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | Maison | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 595 $ | |
| 38 | −| `bedrooms` | Chambres | 92 % | — | | |
| 38 | +| `bedrooms` | Chambres | 83 % | — | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 17 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 42 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | |
| 42 | −| `lat` | GPS (lat/lng) | 83 % | 46.8673632 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.8673632 | | |
| 43 | 43 | | `description` | Description | 100 % | Grand projet locatif de maisons de ville dans Charlesbourg. Complexe de maisons en rangée… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 21 photo(s) — https://sibelanger.com/app/uploads/2026/05/copie-de-1175-197-chamonix-photo… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Non meublé", "Entrée laveuse-sécheuse", "Entrée lave-vaisselle", "Balcon", "Chauffé", "… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 12 trouvées, +0 / ~12 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 19 au total, **12 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 83 % · prix 100 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 22 au total, **12 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/sig.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Société d'investissement Gilbert (résidences étudiantes) — connecteur `sig` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 4 trouvées, +0 / ~4 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 75 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/simard.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immeubles Simard — connecteur `simard` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 5 trouvées, +0 / ~5 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 20 % · prix 40 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/simplex.md
+6 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Simplex Immobilier — connecteur `simplex` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -32,7 +32,7 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Presque dans la cour du Cégep @ ÉTUDIANTS ! | |
| 33 | 33 | | `address` | Adresse civique | 0 % | — | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Shawinigan | |
| 35 | −| `sector` | Secteur / quartier | 67 % | — | | |
| 35 | +| `sector` | Secteur / quartier | 33 % | — | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 2½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 740 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
@@ -48,17 +48,17 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:19 — 3 trouvées, +3 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 36, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/somex_saintnicolas.md
+9 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Somex Saint-Nicolas — connecteur `somex_saintnicolas` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 145/145 |
| 6 | 6 | |
@@ -48,21 +48,24 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 145 trouvées, +0 / ~145 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 145 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 145 au total, **145 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 2 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-21 10:04 | 500 Server Error: Internal Server Error for url: https://app.livya.com/fr/hulix/projects/somex/plans/5e51343d-a93a-4982-a155-6c14ae1ff73e?noLayout=1 | | |
| 68 | +| 2026-08-19 15:40 | 500 Server Error: Internal Server Error for url: https://app.livya.com/fr/hulix/projects/somex/plans/5e51343d-a93a-4982-a155-6c14ae1ff73e?noLayout=1 | | |
| 66 | 69 | |
| 67 | 70 | Rejouer la source seule : `python3 run.py sync somex_saintnicolas` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='somex_saintnicolas' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 71 | |
modified
docs/connecteurs/souleymane.md
+9 −9
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Souleymane — connecteur `souleymane` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 13/14 |
| 6 | 6 | |
@@ -34,30 +34,30 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Gatineau | |
| 35 | 35 | | `sector` | Secteur / quartier | 62 % | Masson-Angers | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 77 % | Maison | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 1 700 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 650 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 92 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 69 % | 1 | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 8 % | 86 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 92 % | 45.556441 | | |
| 43 | −| `description` | Description | 100 % | MAISON 2 CHAMBRES À LOUER À MASSON-ANGERS – COUR PRIVÉE SANS VOISIN ARRIÈRE 📍 327, rue de… | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.556441 | | |
| 43 | +| `description` | Description | 100 % | ━━━━━━━━━━ FRANÇAIS ━━━━━━━━━━ 🏡 MAISON 2 CHAMBRES À LOUER À MASSON-ANGERS – COUR PRIVÉE … | | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 5 photo(s) — https://gestionsouleymane.com/wp-content/uploads/2026/08/DSC09357-HDR.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "internet": true}, "appliances": {"… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"electricity": true, "internet": true}, "appliances": {"fridge": true, "w… | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://gestionsouleymane.com/property/belle-maison-2-chambres-a-louer-a-masson-angers | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 13 trouvées, +0 / ~13 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 13 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 14 au total, **13 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 92 % · prix 100 % · photos 100 % · description 100 % | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/stb_immobilier.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # STB Immobilier — connecteur `stb_immobilier` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 11/11 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 11 trouvées, +0 / ~11 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 11 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 11 au total, **11 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 91 % · prix 73 % · photos 100 % · description 73 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/summum.md
+14 −14
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Gestion immobilière Summum — connecteur `summum` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 89/95 | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 89/97 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −connecteur Gestion immobilière Summum (location.summumpm.com) — portail hébergé Building Stack (même famille que le portail edifialocation.com du connecteur edifia.py) : Saint-Jérôme, Blainville, Montréal, Laval, Longueuil, Granby… - /Listing/Listings embarque `var units = [...]` : JSON complet des unités affichées (ApartmentId stable, prix, pi², chambres, salles de bain, adresse complète avec GPS, contact de location, photo) ; - les pages immeuble /b/<id> donnent la date de disponibilité par unité et les commodités de l'immeuble (une requête par immeuble, en cache via self.detail, plafonnée). Portail SaaS standard, pas de robots.txt (tout permis). | |
| 9 | +connecteur Gestion immobilière Summum (location.summumpm.com) — portail hébergé Building Stack (même famille que le portail edifialocation.com du connecteur edifia.py) : Saint-Jérôme, Blainville, Montréal, Laval, Longueuil, Granby… - /Listing/Listings embarque `var units = [...]` : JSON complet des unités affichées (ApartmentId stable, prix, pi², chambres, salles de bain, adresse complète avec GPS, contact de location, photo) ; - les pages immeuble /b/<id> donnent la date de disponibilité par unité et les commodités de l'immeuble (une requête par immeuble, en cache via self.detail, plafonnée) ; - /Listing/ApartmentView?id=<ApartmentId>&lang=fr-CA (fragment AJAX des onglets) donne la fiche UNITÉ : étage, équipements (électricité/ chauffage/eau chaude, plancher, wi-fi, réfrigérateur, cuisinière, balcon…), commentaires (visite virtuelle) et ~10 photos pleine taille (une requête par unité, en cache via self.detail, plafonnée). Portail SaaS standard, pas de robots.txt (tout permis). | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://location.summumpm.com |
| 12 | 12 | - **Page des annonces** : https://location.summumpm.com/Listing/Listings |
@@ -40,35 +40,35 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 16 % | 200 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.537562 | |
| 43 | −| `description` | Description | 84 % | 200 pi² — 1 salle(s) de bain | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 3 photo(s) — https://wfiles.buildingstack.com/resources/image/Lq9HKcvJEIyqj38QhBecAYYY9Yi… | | |
| 45 | −| `amenities` | Commodités (JSON) | 13 % | ["Arrêt de bus à proximité", "Station de métro à proximité", "Salle de buanderie"] | | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"laundry": true, "bedrooms": 0, "bathrooms": 1, "contact": {"name": "Zachary Pilon", "ph… | | |
| 43 | +| `description` | Description | 100 % | 200 pi² — 1 salle(s) de bain — étage SSOL. Électricité incluse. Chauffage inclus. Eau cha… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 6 photo(s) — https://wfiles.buildingstack.com/resources/image/U7TqP3PpTMr2TcyYjAGa9QAWh28… | | |
| 45 | +| `amenities` | Commodités (JSON) | 18 % | ["Arrêt de bus à proximité", "Station de métro à proximité", "Salle de buanderie", "Réfri… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true, "internet": true… | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://location.summumpm.com/b/202029066007004535622/287081 | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:53 — 89 trouvées, +0 / ~89 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:48 — 89 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 95 au total, **89 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 84 % | |
| 58 | +- **Annonces en BD** : 97 au total, **89 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 5 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | 65 | | Date | Message (sync_log) | |
| 66 | 66 | |---|---| |
| 67 | +| 2026-08-19 21:15 | HTTPSConnectionPool(host='location.summumpm.com', port=443): Read timed out. (read timeout=30) | | |
| 68 | +| 2026-08-19 15:40 | HTTPSConnectionPool(host='location.summumpm.com', port=443): Read timed out. (read timeout=30) | | |
| 67 | 69 | | 2026-08-17 09:04 | HTTPSConnectionPool(host='location.summumpm.com', port=443): Read timed out. (read timeout=30) | |
| 68 | 70 | | 2026-08-17 03:03 | HTTPSConnectionPool(host='location.summumpm.com', port=443): Read timed out. (read timeout=30) | |
| 69 | 71 | | 2026-08-16 01:50 | HTTPSConnectionPool(host='location.summumpm.com', port=443): Read timed out. (read timeout=30) | |
| 70 | −| 2026-08-15 13:44 | HTTPSConnectionPool(host='location.summumpm.com', port=443): Read timed out. (read timeout=30) | | |
| 71 | −| 2026-08-14 00:58 | HTTPSConnectionPool(host='location.summumpm.com', port=443): Read timed out. (read timeout=30) | | |
| 72 | 72 | |
| 73 | 73 | Rejouer la source seule : `python3 run.py sync summum` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='summum' ORDER BY ts DESC LIMIT 5;`). |
| 74 | 74 | |
modified
docs/connecteurs/sutton.md
+21 −21
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Groupe Sutton Québec (location) — connecteur `sutton` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 1226/1393 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 1200/1490 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,41 +25,41 @@ Groupe Sutton Québec (suttonquebec.com) — LOCATIONS Couverture exhaustive via | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1226 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1200 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | 3762 Rue St-Dominique | | |
| 33 | −| `address` | Adresse civique | 100 % | 3762 Rue St-Dominique | | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | −| `sector` | Secteur / quartier | 54 % | Le Plateau-Mont-Royal | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3762 Rue Saint-Dominique | | |
| 33 | +| `address` | Adresse civique | 100 % | 3762 Rue Saint-Dominique | | |
| 34 | +| `city` | Ville (normalisée) | 99 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 73 % | Le Plateau-Mont-Royal | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | −| `price` | Loyer mensuel ($) | 73 % | 1 950 $ | | |
| 38 | −| `bedrooms` | Chambres | 73 % | 2 | | |
| 39 | −| `bathrooms` | Salles de bain | 73 % | 1 | | |
| 40 | −| `area_sqft` | Superficie (pi²) | 38 % | 828 | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 950 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 50 % | 828 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 70 % | — | | |
| 43 | −| `description` | Description | 72 % | Charmant et lumineux condo de 2 chambres idéalement situé au coeur du vibrant Plateau. Av… | | |
| 44 | −| `images` | Photos (JSON) | 73 % | 13 photo(s) — https://immo.vrtx.co/pic450/11476711.jpg | | |
| 45 | −| `amenities` | Commodités (JSON) | 6 % | [] | | |
| 42 | +| `lat` | GPS (lat/lng) | 99 % | 45.515478342 | | |
| 43 | +| `description` | Description | 98 % | Charmant et lumineux condo de 2 chambres idéalement situé au coeur du vibrant Plateau. Av… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 13 photo(s) — https://immo.vrtx.co/pic450/11476711.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 8 % | [] | | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true}, "appliances": {"fridge": true, "st… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.suttonquebec.com/fr/inscription/appartement-a-louer-3762-rue-st-dominique-mon… | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:54 — 1226 trouvées, +1 / ~1225 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:49 — 1200 trouvées, +0 / ~16 / -1 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `SITEMAP_MAX_PAGES` = 40 |
| 56 | 56 | |
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | −- **Annonces en BD** : 1393 au total, **1226 actives** | |
| 60 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-18 | |
| 61 | −- **Complétude clé (actives)** : GPS 70 % · prix 73 % · photos 73 % · description 72 % | |
| 62 | −- **Runs journalisés (60 derniers)** : 58, dont 0 en erreur | |
| 59 | +- **Annonces en BD** : 1490 au total, **1200 actives** | |
| 60 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 61 | +- **Complétude clé (actives)** : GPS 99 % · prix 100 % · photos 100 % · description 98 % | |
| 62 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 63 | 63 | |
| 64 | 64 | ## Erreurs connues & dépannage |
| 65 | 65 | |
modified
docs/connecteurs/terater.md
+8 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Constructions Tèratèr — connecteur `terater` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 12/14 |
| 6 | 6 | |
@@ -48,21 +48,23 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:54 — 12 trouvées, +0 / ~12 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:49 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 14 au total, **12 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 67 % · prix 100 % · photos 100 % · description 0 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-18 13:47 | 500 Server Error: Internal Server Error for url: https://terater.ca/a-louer/ | | |
| 66 | 68 | |
| 67 | 69 | Rejouer la source seule : `python3 run.py sync terater` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='terater' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 70 | |
modified
docs/connecteurs/terra.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Terra Condos locatifs — connecteur `terra` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 29/51 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 28/51 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur TERRA Condos locatifs (terracondolocatif.ca) Projet de 4 phases sur l | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 29 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 28 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -34,7 +34,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Lévis | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Desjardins (Lévis) | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | −| `price` | Loyer mensuel ($) | 90 % | 1 295 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 89 % | 1 295 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 1381 | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:54 — 29 trouvées, +0 / ~29 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:49 — 28 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 51 au total, **29 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 90 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 51 au total, **28 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 89 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/thrace.md
+11 −11
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Gestions Thrace — connecteur `thrace` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 172/182 | |
| 5 | +**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 162/182 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Gestions Thrace (gestionsthrace.com) Plus gros gestionnaire de la Mau | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 172 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 162 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -34,30 +34,30 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Trois-Rivières | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 99 % | 4½ | |
| 37 | −| `price` | Loyer mensuel ($) | 66 % | 1 695 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 65 % | 1 695 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 95 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 41 % | 888 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 43 % | 888 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.3449 | |
| 43 | 43 | | `description` | Description | 100 % | 3e étage \| Modèle B \| 2 chambre(s) \| 1 salle(s) de bain \| Promo -100$/mois* \| Plan :… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 2 photo(s) — https://d10eh8wo1l4y8c.cloudfront.net/projects/d6e2aa7e-ccb0-41a5-b47b-e8ca6… | |
| 45 | −| `amenities` | Commodités (JSON) | 59 % | ["Internet", "Eau chaude"] | | |
| 45 | +| `amenities` | Commodités (JSON) | 58 % | ["Internet", "Eau chaude"] | | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true, "internet": true}, "building": "Le Radisson", "floor":… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.gestionsthrace.com/fr/residential?building=le-radisson | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:54 — 172 trouvées, +0 / ~172 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:49 — 162 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 182 au total, **172 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 66 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 182 au total, **162 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 65 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/tri_logis.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Société immobilière Tri-Logis — connecteur `tri_logis` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 0/1 |
| 6 | 6 | |
@@ -48,8 +48,8 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:54 — 0 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:49 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
modified
docs/connecteurs/trudel.md
+1 −1
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Trudel (Fleur de Lys, LGC) — connecteur `trudel` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : désactivé (disabled=True)** · Région : Québec · Backend : direct · Annonces actives : 0/30 |
| 6 | 6 | |
modified
docs/connecteurs/trylon.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Trylon Apartments — connecteur `trylon` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 7/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:54 — 7 trouvées, +0 / ~7 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:49 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **7 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/ubee.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Ubee (location) — connecteur `ubee` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 243/246 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 243/249 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -48,17 +48,17 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:55 — 243 trouvées, +0 / ~243 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:49 — 243 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 246 au total, **243 actives** | |
| 59 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 249 au total, **243 actives** | |
| 59 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 0 % |
| 61 | −- **Runs journalisés (60 derniers)** : 58, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/uptimo.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Uptimo Gestion immobilière — connecteur `uptimo` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 63/78 | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 62/78 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,18 +25,18 @@ connecteur Uptimo Gestion immobilière (uptimo.ca) Apparts à Sherbrooke (Fleuri | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 63 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 62 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 1690 Rue de Courville | |
| 33 | 33 | | `address` | Adresse civique | 98 % | 1690 Rue de Courville | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Sherbrooke | |
| 35 | −| `sector` | Secteur / quartier | 95 % | Mont-Bellevue | | |
| 35 | +| `sector` | Secteur / quartier | 94 % | Mont-Bellevue | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 98 % | 1 050 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | −| `bathrooms` | Salles de bain | 98 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 97 % | 1 | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 2 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 98 % | 45.380655 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:55 — 52 trouvées, +0 / ~52 / -5 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:50 — 49 trouvées, +0 / ~0 / -7 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 78 au total, **63 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 78 au total, **62 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 98 % · prix 98 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/urban_services.md
+18 −14
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Urban Services (Urban Tenant Solutions) — connecteur `urban_services` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 52/56 | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 44/56 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −connecteur Urban Services (urbanservices.ca) Gestionnaire de Gatineau (Urban Tenant Solutions) ; portail de location dédié rent.urbanservices.ca sur la plateforme Building Stack — même famille que le portail edifialocation.com du connecteur edifia.py : - /Listing/Listings embarque `var units = [...]` (une entrée par appartement annoncé : prix, pi², chambres, sdb, adresse complète, GPS, contact de l'immeuble, photo) ; - les pages immeuble /b/<id> listent TOUTES les unités disponibles (onglets : numéro, prix, pi², chambres, sdb, date de disponibilité) + les commodités de l'immeuble — le JSON de la liste est parfois tronqué (immeubles à fort inventaire), la page /b/<id> fait donc foi pour l'inventaire et les dates ; le JSON enrichit (GPS, contact…). Une annonce Lou-Ka = une unité disponible. Le parc ontarien (Ottawa) est exclu (province != QC). ~17 requêtes par sync (1 + 16 immeubles). | |
| 9 | +connecteur Urban Services (urbanservices.ca) Gestionnaire de Gatineau (Urban Tenant Solutions) ; portail de location dédié rent.urbanservices.ca sur la plateforme Building Stack — même famille que le portail edifialocation.com du connecteur edifia.py : - /Listing/Listings embarque `var units = [...]` (une entrée par appartement annoncé : prix, pi², chambres, sdb, adresse complète, GPS, contact de l'immeuble, photo) ; - les pages immeuble /b/<id> listent TOUTES les unités disponibles (onglets : numéro, prix, pi², chambres, sdb, date de disponibilité, attribut data-unitid) + les commodités de l'immeuble — le JSON de la liste est parfois tronqué (immeubles à fort inventaire), la page /b/<id> fait donc foi pour l'inventaire et les dates ; le JSON enrichit (GPS, contact…) ; - le fragment /Listing/ApartmentView?id=<unitid> (cache BD) fournit la GALERIE COMPLÈTE de l'unité (wfiles.buildingstack.com), l'étage, les équipements (plancher, chauffage, wi-fi…) et le bloc « Commentaires » (description libre) — absents de la liste et du HTML des pages. Une annonce Lou-Ka = une unité disponible. Le parc ontarien (Ottawa) est exclu (province != QC). ~17 requêtes par sync (1 + 16 immeubles) + 1 fragment par unité nouvelle/modifiée (cache). | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://urbanservices.ca |
| 12 | 12 | - **Page des annonces** : https://rent.urbanservices.ca/Listing/Listings |
@@ -25,7 +25,7 @@ connecteur Urban Services (urbanservices.ca) Gestionnaire de Gatineau (Urban Ten | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 52 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 44 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -40,29 +40,33 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 75 % | 900 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 98 % | 2027-08-01 | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.4288304 | |
| 43 | −| `description` | Description | 100 % | 900 pi² — 2 chambre(s) — 1 salle(s) de bain | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 2 photo(s) — https://wfiles.buildingstack.com/resources/image/OKraM7T9Ub9IIM9KQ459Cs9eS3T… | | |
| 45 | −| `amenities` | Commodités (JSON) | 73 % | ["Salle de buanderie", "Stationnement extérieur"] | | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"laundry": true, "parking": {"available": true, "type": "extérieur"}, "building": "70 No… | | |
| 43 | +| `description` | Description | 100 % | Situé au Manoir des Trembles. Buanderie partagée. Wi-Fi inclus. Bien entretenu. 900 pi² —… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 11 photo(s) — https://wfiles.buildingstack.com/resources/image/Gp9BI79gE3apDN1kKdTOCNTLIr… | | |
| 45 | +| `amenities` | Commodités (JSON) | 89 % | ["Salle de buanderie", "Stationnement extérieur", "Accès à internet inclus", "Plancher : … | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "internet": true}, "laundry": true,… | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://rent.urbanservices.ca/b/202244058702005621807/410794 | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:55 — 52 trouvées, +0 / ~52 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:50 — 44 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 56 au total, **52 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 58 | +- **Annonces en BD** : 56 au total, **44 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 3 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-19 18:31 | HTTPSConnectionPool(host='rent.urbanservices.ca', port=443): Read timed out. (read timeout=30) | | |
| 68 | +| 2026-08-19 15:43 | HTTPSConnectionPool(host='rent.urbanservices.ca', port=443): Read timed out. (read timeout=30) | | |
| 69 | +| 2026-08-19 09:40 | HTTPSConnectionPool(host='rent.urbanservices.ca', port=443): Read timed out. (read timeout=30) | | |
| 66 | 70 | |
| 67 | 71 | Rejouer la source seule : `python3 run.py sync urban_services` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='urban_services' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 72 | |
modified
docs/connecteurs/utile.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # UTILE (logement étudiant) — connecteur `utile` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 28/28 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:55 — 28 trouvées, +0 / ~28 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:50 — 28 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 28 au total, **28 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/via_capitale.md
+12 −12
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Via Capitale (location) — connecteur `via_capitale` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : Firecrawl · Annonces actives : 196/213 | |
| 5 | +**État : actif** · Région : Province · Backend : Firecrawl · Annonces actives : 192/217 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,21 +25,21 @@ Via Capitale (viacapitalevendu.com) — LOCATIONS Bannière 100 % québécoise ( | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (Firecrawl, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 196 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (Firecrawl, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 192 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Appartement — 700 Route des Rivières | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 700 Route des Rivières | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Lévis | |
| 35 | −| `sector` | Secteur / quartier | 51 % | Les Chutes-de-la-Chaudière-Ouest | | |
| 35 | +| `sector` | Secteur / quartier | 50 % | Les Chutes-de-la-Chaudière-Ouest | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 927 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 7 % | 2 | |
| 39 | −| `bathrooms` | Salles de bain | 4 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 3 % | — | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 4 % | 1207 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 55 % | 46.733574707 | | |
| 42 | +| `lat` | GPS (lat/lng) | 54 % | 46.733574707 | | |
| 43 | 43 | | `description` | Description | 100 % | CESSION DE BAIL -- LE 700 \| SAINT-NICOLAS Superbe unité de 1 207 pi² située au 3e étage … | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 14 photo(s) — https://images.viacapitale.info/images/inscriptions/27146731/1-494833980.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
@@ -48,17 +48,17 @@ Le connecteur (Firecrawl, pages HTML (rendu serveur)) alimente les colonnes de l | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:56 — 194 trouvées, +2 / ~192 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:50 — 192 trouvées, +0 / ~0 / -1 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 213 au total, **196 actives** | |
| 59 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 55 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 58, dont 0 en erreur | |
| 58 | +- **Annonces en BD** : 217 au total, **192 actives** | |
| 59 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 54 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/viridi.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le Viridi — connecteur `viridi` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 16/17 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:56 — 16 trouvées, +0 / ~16 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:50 — 16 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 17 au total, **16 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 62 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/wandji.md
+6 −6
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Immobilière Wandji — connecteur `wandji` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 26/31 |
| 6 | 6 | |
@@ -32,7 +32,7 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 52 rue Latour | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 52 rue Latour | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Gatineau | |
| 35 | −| `sector` | Secteur / quartier | 69 % | Buckingham | | |
| 35 | +| `sector` | Secteur / quartier | 73 % | Buckingham | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 725 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
@@ -40,7 +40,7 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 19 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2026-07-01 | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.58538428352824 | |
| 43 | −| `description` | Description | 100 % | Magnifique appartement neuf à louer à Buckingham, offrant un design moderne, une belle lu… | | |
| 43 | +| `description` | Description | 100 % | Magnifique appartement neuf offrant un espace de vie moderne et fonctionnel. Il comprend … | | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 20 photo(s) — https://wandji-immobilier.com/api/buildings/6a0cb851156b6624006cfc29/pictur… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 96 % | ["Stationnement extérieur"] | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": false, "electricity": false, "hot_water": false}, "appliances"… | |
@@ -48,8 +48,8 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:56 — 26 trouvées, +1 / ~25 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:50 — 26 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `MAX_IMAGES` = 20 |
@@ -57,7 +57,7 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | 59 | - **Annonces en BD** : 31 au total, **26 actives** |
| 60 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-18 | |
| 60 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 61 | 61 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 62 | 62 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 63 | 63 | |
modified
docs/connecteurs/werkliv.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Werkliv — connecteur `werkliv` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.0 h | |
| 52 | −- **Dernier passage OK** : 2026-08-18 04:56 — 4 trouvées, +0 / ~4 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:50 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-18 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/zumper.md
+12 −12
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Zumper (Québec) — connecteur `zumper` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:20 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 17:28 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 4345/4345 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 4837/5095 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,22 +25,22 @@ Zumper (zumper.com) — portail locatif nord-américain, filtré PROVINCE DE QU | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4345 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4837 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 170 René-Lévesque — Studio Promotional Price | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 170 Boul René-Lévesque E | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 34 | +| `city` | Ville (normalisée) | 99 % | Montréal | | |
| 35 | 35 | | `sector` | Secteur / quartier | 80 % | Quartier Ville-Marie | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 440 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 0 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 71 % | 391 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 75 % | 391 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 21 % | — | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.51020505957441 | |
| 43 | −| `description` | Description | 79 % | 3 Months Free* *Limited time offer. E & OE conditions apply. Advertised price reflects a … | | |
| 43 | +| `description` | Description | 99 % | 3 Months Free* *Limited time offer. E & OE conditions apply. Advertised price reflects a … | | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 8 photo(s) — https://img.zumpercdn.com/907672238/1280x960 | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 98 % | ["Onsite Laundry", "Air Conditioning", "Dishwasher", "Balcony", "In-Unit Laundry", "Heat"… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true}, "appliances": {… | |
@@ -48,17 +48,17 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | −- **Dernier passage OK** : 2026-08-18 06:19 — 4345 trouvées, +4345 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-22 15:54 — 4811 trouvées, +2 / ~5 / -0 | |
| 53 | 53 | - **Throttling** : 1.2 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 4345 au total, **4345 actives** | |
| 59 | −- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-18 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 79 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 58 | +- **Annonces en BD** : 5095 au total, **4837 actives** | |
| 59 | +- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 99 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 39, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
louka/connectors/fb_marketplace.py
+219 −357
@@ -2,51 +2,72 @@ | ||
| 2 | 2 | # Lou-Ka — Agrégateur de logements à louer (province de Québec) |
| 3 | 3 | # Auteur : Simon-Pierre Boucher — contact@spboucher.ai |
| 4 | 4 | # connectors/fb_marketplace.py : Facebook Marketplace — catégorie location |
| 5 | −# (propertyrentals) par ville du Québec. Annonces de particuliers, fort | |
| 6 | −# complément aux gestionnaires. Accès via Scrapfly ASP (render_js + proxy | |
| 7 | −# résidentiel CA), SANS compte ni cookie (le scraping public déconnecté est | |
| 8 | −# couvert par Meta v. Bright Data 2024). Les données vivent dans des balises | |
| 9 | −# <script type="application/json"> (objets marketplace_listing_title). | |
| 10 | −# Le scroll infini est bloqué hors connexion (~25 annonces/URL, mur de | |
| 11 | −# login) : on pagine par TRANCHES DE PRIX (minPrice/maxPrice), qui renvoient | |
| 12 | −# des lots quasi disjoints, et on accumule sur plusieurs synchronisations. | |
| 13 | −# Fiche détail (/marketplace/item/<id>), même hors connexion : | |
| 14 | −# - le JSON viewer.marketplace_product_details_page.target expose GPS, | |
| 15 | −# ville (reverse_geocode_detailed), description et statut (is_live/ | |
| 16 | −# is_sold/is_pending) — mais listing_photos y est VIDE hors connexion ; | |
| 17 | −# - la GALERIE complète (s960x960) vit dans le DOM rendu : balises <img> | |
| 18 | −# dont l'alt commence par « Photo of … » / « Product photo of … ». | |
| 19 | −# Le flux de recherche public TOURNE : la plupart des annonces actives en BD | |
| 20 | −# ne repassent jamais dans la liste, donc une phase de RATTRAPAGE visite les | |
| 21 | −# fiches actives jamais enrichies (budget séparé LOUKA_FBMP_BACKFILL). | |
| 22 | −# ⚠️ Coût Scrapfly élevé + données personnelles (Loi 25) : ne jamais | |
| 23 | −# republier nom/téléphone du vendeur, garder le lien sortant. | |
| 5 | +# (propertyrentals), TOUTE la province. Annonces de particuliers, fort | |
| 6 | +# complément aux gestionnaires. Depuis 2026-08-22 le scraping est délégué à | |
| 7 | +# l'ACTEUR APIFY MAISON gorgeous_thistle/ka-fb-marketplace (source : | |
| 8 | +# actors/ka-fb-marketplace de ce repo) : HTML public déconnecté SANS rendu | |
| 9 | +# JS (les JSON de recherche, la fiche PDP et la galerie MediaViewer | |
| 10 | +# préchargée vivent dans le HTML brut) via proxy résidentiel CA — ~100× | |
| 11 | +# moins cher que l'ancienne chaîne Scrapfly ASP+render_js, et couverture | |
| 12 | +# élargie de 10 à 33 villes (IDs Marketplace des villes régionales validés ; | |
| 13 | +# les slugs inventés retombent sur des villes aléatoires, ne pas en ajouter | |
| 14 | +# sans les valider). | |
| 15 | +# Le scroll infini reste bloqué hors connexion (~25 annonces/URL) : on | |
| 16 | +# pagine par TRANCHES DE PRIX et on accumule sur plusieurs synchronisations. | |
| 17 | +# Le flux public TOURNE : une phase de RATTRAPAGE (extraDetailIds) visite | |
| 18 | +# les fiches actives jamais enrichies (budget LOUKA_FBMP_BACKFILL). | |
| 19 | +# Le connecteur garde le cache détail BD (clé v2, payloads compatibles) et | |
| 20 | +# passe à l'acteur la liste des fiches fraîches à NE PAS revisiter. | |
| 21 | +# ⚠️ Données personnelles (Loi 25) : ne jamais republier nom/téléphone du | |
| 22 | +# vendeur, garder le lien sortant. | |
| 24 | 23 | # ----------------------------------------------------------------------------- |
| 25 | 24 | from __future__ import annotations |
| 26 | 25 | |
| 27 | −import concurrent.futures as _cf | |
| 28 | −import html as _html | |
| 29 | 26 | import json |
| 30 | 27 | import os |
| 31 | 28 | import re |
| 29 | +import time | |
| 30 | + | |
| 31 | +import requests as _requests | |
| 32 | 32 | |
| 33 | 33 | from ..schema import Listing, normalize_unit_type |
| 34 | 34 | from .base import BaseConnector |
| 35 | 35 | from . import _detailutil as du |
| 36 | 36 | |
| 37 | 37 | BASE = "https://www.facebook.com/marketplace" |
| 38 | +APIFY_API = "https://api.apify.com/v2" | |
| 39 | +ACTOR = os.environ.get("LOUKA_FBMP_ACTOR", "gorgeous_thistle~ka-fb-marketplace") | |
| 38 | 40 | |
| 39 | −# villes québécoises (slug Marketplace) -> nom d'affichage | |
| 41 | +# villes québécoises — gros parcs : slug vanity Marketplace -> nom d'affichage | |
| 40 | 42 | CITIES = { |
| 41 | 43 | "montreal": "Montréal", "laval": "Laval", "longueuil": "Longueuil", |
| 42 | 44 | "quebec": "Québec", "gatineau": "Gatineau", "sherbrooke": "Sherbrooke", |
| 43 | 45 | "trois-rivieres": "Trois-Rivières", "levis": "Lévis", |
| 44 | 46 | "saguenay": "Saguenay", "drummondville": "Drummondville", |
| 45 | 47 | } |
| 48 | +# villes régionales : ID numérique Marketplace -> nom (découverts via Serper, | |
| 49 | +# lat/lng validés live 2026-08-22 — rayon ~65 km chacun) | |
| 50 | +REGIONS = { | |
| 51 | + "105790762794728": "Rimouski", "110925022261358": "Rivière-du-Loup", | |
| 52 | + "106528256049537": "Matane", "109502305742889": "Gaspé", | |
| 53 | + "100246746683723": "Sept-Îles", "105615529471535": "Baie-Comeau", | |
| 54 | + "106016152771864": "Rouyn-Noranda", "110594102301488": "Val-d'Or", | |
| 55 | + "105598479473872": "Amos", "109699385723610": "Saint-Georges", | |
| 56 | + "110304502331480": "Thetford Mines", "111938355489908": "Granby", | |
| 57 | + "108126699220609": "Victoriaville", "109753249050671": "Joliette", | |
| 58 | + "109429165750459": "Saint-Hyacinthe", | |
| 59 | + "108645709159963": "Saint-Jean-sur-Richelieu", | |
| 60 | + "112946182053396": "Saint-Jérôme", | |
| 61 | + "113011352052118": "Salaberry-de-Valleyfield", | |
| 62 | + "107992819229760": "Magog", "109514615734434": "Alma", | |
| 63 | + "109664672393669": "Mont-Laurier", "108557812502323": "La Tuque", | |
| 64 | + "108296932538245": "Dolbeau-Mistassini", | |
| 65 | +} | |
| 46 | 66 | # tranches de prix (bornes en $) : le flux déconnecté sert un sous-ensemble |
| 47 | 67 | # tournant, chaque tranche renvoie un lot quasi disjoint |
| 48 | 68 | PRICE_BANDS = [(0, 800), (800, 1100), (1100, 1400), (1400, 1700), |
| 49 | 69 | (1700, 2100), (2100, 2800), (2800, 6000)] |
| 70 | +REGIONAL_BANDS = [(0, 1200), (1200, 6000)] # parcs plus petits : 2 tranches | |
| 50 | 71 | |
| 51 | 72 | # garde-fous de prix mensuel (rejette « $90 » = /nuit, et les valeurs à vendre) |
| 52 | 73 | PRICE_MIN, PRICE_MAX = 300, 12000 |
@@ -59,195 +80,17 @@ BACKFILL_LIMIT = int(os.environ.get("LOUKA_FBMP_BACKFILL", "80")) | ||
| 59 | 80 | # sert surtout aux NOUVELLES annonces plutôt qu'à re-visiter les connues |
| 60 | 81 | TTL_DAYS = float(os.environ.get("LOUKA_FBMP_TTL_DAYS", "30")) |
| 61 | 82 | CITY_LIMIT = os.environ.get("LOUKA_FBMP_CITIES", "") # ex. "montreal,laval" |
| 62 | −# requêtes Scrapfly en parallèle (recherche ET détail) : le cycle passait 40+ | |
| 63 | −# minutes en attente sérielle de rendus JS de ~20 s chacun | |
| 64 | −CONCURRENCY = int(os.environ.get("LOUKA_FBMP_CONCURRENCY", "6")) | |
| 83 | +CONCURRENCY = int(os.environ.get("LOUKA_FBMP_CONCURRENCY", "8")) | |
| 84 | +RUN_TIMEOUT = int(os.environ.get("LOUKA_FBMP_RUN_TIMEOUT", "2400")) # s | |
| 65 | 85 | |
| 66 | −# clé du cache détail — v2 : + galerie DOM, ville/province, statut is_live | |
| 67 | −# (les payloads v1 restent lisibles comme « périmés » le temps du rattrapage) | |
| 86 | +# clé du cache détail — v2 : payloads identiques à l'ère Scrapfly (galerie, | |
| 87 | +# ville/province, statut) ; l'acteur produit la même forme, cache réutilisé | |
| 68 | 88 | DETAIL_KEY = "v2" |
| 69 | 89 | |
| 70 | 90 | # provinces acceptées : le flux public glisse parfois des annonces hors Québec |
| 71 | 91 | # (ex. « Norfolk, ON ») dans les résultats d'une ville québécoise |
| 72 | 92 | _QC_STATES = {"qc", "quebec", "québec"} |
| 73 | 93 | |
| 74 | −_SCRIPT_RE = re.compile( | |
| 75 | − r'<script type="application/json"[^>]*>(.*?)</script>', re.S) | |
| 76 | − | |
| 77 | − | |
| 78 | −def _walk_listings(html: str) -> dict: | |
| 79 | − """Objets d'annonce (marketplace_listing_title) des <script> JSON.""" | |
| 80 | − out: dict = {} | |
| 81 | − | |
| 82 | − def walk(o): | |
| 83 | − if isinstance(o, dict): | |
| 84 | − if "marketplace_listing_title" in o and o.get("id"): | |
| 85 | − out[str(o["id"])] = o | |
| 86 | − for v in o.values(): | |
| 87 | − walk(v) | |
| 88 | − elif isinstance(o, list): | |
| 89 | − for v in o: | |
| 90 | − walk(v) | |
| 91 | − | |
| 92 | − for m in _SCRIPT_RE.finditer(html): | |
| 93 | − try: | |
| 94 | − walk(json.loads(m.group(1))) | |
| 95 | − except ValueError: | |
| 96 | − continue | |
| 97 | − return out | |
| 98 | − | |
| 99 | − | |
| 100 | −def _pdp_target(html: str) -> dict | None: | |
| 101 | − """Objet cible de la fiche détail (marketplace_product_details_page.target). | |
| 102 | − | |
| 103 | − C'est LE nœud faisant autorité sur une fiche : GPS, reverse geocode, | |
| 104 | − description, statut. Plusieurs scripts portent un « target » (stubs de | |
| 105 | − préchargement inclus) : on garde le plus RICHE (description/GPS/statut), | |
| 106 | − pas le premier venu.""" | |
| 107 | − found: list[dict] = [] | |
| 108 | − | |
| 109 | − def walk(o): | |
| 110 | − if isinstance(o, dict): | |
| 111 | − pdp = o.get("marketplace_product_details_page") | |
| 112 | − if isinstance(pdp, dict) and isinstance(pdp.get("target"), dict): | |
| 113 | − found.append(pdp["target"]) | |
| 114 | − for v in o.values(): | |
| 115 | − walk(v) | |
| 116 | − elif isinstance(o, list): | |
| 117 | − for v in o: | |
| 118 | − walk(v) | |
| 119 | − | |
| 120 | − for m in _SCRIPT_RE.finditer(html): | |
| 121 | − try: | |
| 122 | − walk(json.loads(m.group(1))) | |
| 123 | − except ValueError: | |
| 124 | − continue | |
| 125 | − | |
| 126 | − def score(t: dict) -> tuple: | |
| 127 | − desc = (t.get("redacted_description") or {}).get("text") or "" | |
| 128 | − loc = t.get("location") or {} | |
| 129 | − return (1 if desc else 0) + (1 if loc.get("latitude") else 0), len(t) | |
| 130 | − return max(found, key=score) if found else None | |
| 131 | − | |
| 132 | − | |
| 133 | −# galerie dans le DOM rendu : alt="Photo of <titre>" / "Product photo of …" | |
| 134 | −# (les « annonces similaires » ont un alt "<titre> in <ville>, <prov>") | |
| 135 | −_IMG_TAG_RE = re.compile(r"<img[^>]+>") | |
| 136 | −_ALT_RE = re.compile(r'alt="([^"]*)"') | |
| 137 | −_SRC_RE = re.compile(r'src="([^"]+)"') | |
| 138 | −_GALLERY_ALT_RE = re.compile(r"^(?:product\s+)?photo\s+(?:of|de|du)\b", re.I) | |
| 139 | − | |
| 140 | − | |
| 141 | −def _dom_gallery(html: str, title: str = "") -> list[str]: | |
| 142 | − """URLs (s960x960, CDN signé) de la galerie complète depuis le DOM rendu. | |
| 143 | − | |
| 144 | − Hors connexion le JSON listing_photos est vide, mais le carrousel de la | |
| 145 | − fiche est bel et bien rendu : image principale (t39) + vignettes (t45). | |
| 146 | − Déduplication par nom de fichier (la principale apparaît deux fois).""" | |
| 147 | − dom = re.sub(r"<script.*?</script>", "", html, flags=re.S) | |
| 148 | − key = (title or "").strip()[:12].casefold() | |
| 149 | − out: list[str] = [] | |
| 150 | − seen: set[str] = set() | |
| 151 | − for tag in _IMG_TAG_RE.findall(dom): | |
| 152 | − m = _ALT_RE.search(tag) | |
| 153 | − alt = _html.unescape(m.group(1)) if m else "" | |
| 154 | − if not _GALLERY_ALT_RE.match(alt): | |
| 155 | − continue | |
| 156 | − if key and key not in alt.casefold(): | |
| 157 | − continue # photo d'un AUTRE produit | |
| 158 | − s = _SRC_RE.search(tag) | |
| 159 | − src = _html.unescape(s.group(1)) if s else "" | |
| 160 | − if "fbcdn" not in src: | |
| 161 | − continue | |
| 162 | − stem = src.split("?", 1)[0].rsplit("/", 1)[-1] | |
| 163 | − if stem in seen: | |
| 164 | − continue | |
| 165 | − seen.add(stem) | |
| 166 | − out.append(src) | |
| 167 | − return out | |
| 168 | − | |
| 169 | − | |
| 170 | −def _clean_desc(text: str) -> str: | |
| 171 | − """Texte propre : espaces répétés et lignes vides en cascade normalisés.""" | |
| 172 | − t = text.replace("\r", "\n") | |
| 173 | − t = re.sub(r"[ \t ]+", " ", t) | |
| 174 | − t = re.sub(r" ?\n ?", "\n", t) | |
| 175 | − t = re.sub(r"\n{3,}", "\n\n", t) | |
| 176 | − return t.strip() | |
| 177 | − | |
| 178 | − | |
| 179 | −def _parse_detail(html: str) -> dict: | |
| 180 | − """Champs riches d'une fiche /marketplace/item/<id> hors connexion. | |
| 181 | − | |
| 182 | − Retourne {} si la page n'a pas pu être rendue (échec réseau : ne PAS | |
| 183 | − mettre en cache), {"nopdp": True} si elle est rendue mais sans objet | |
| 184 | − cible (fiche supprimée / mur de login : cacher pour ne pas boucler).""" | |
| 185 | − if not html: | |
| 186 | − return {} | |
| 187 | − o = _pdp_target(html) | |
| 188 | − if o is None: | |
| 189 | − # repli : meilleur objet des scripts (ancienne heuristique v1) | |
| 190 | − best, best_score = None, -1 | |
| 191 | − for cand in _walk_listings(html).values(): | |
| 192 | − loc = cand.get("location") or {} | |
| 193 | − desc = (cand.get("redacted_description") or {}).get("text") or "" | |
| 194 | − score = (1 if loc.get("latitude") else 0) + (1 if desc else 0) | |
| 195 | − if score > best_score: | |
| 196 | − best, best_score = cand, score | |
| 197 | − o = best | |
| 198 | − if not o: | |
| 199 | − return {"nopdp": True} | |
| 200 | − out: dict = {} | |
| 201 | − if o.get("is_sold") or o.get("is_pending") or o.get("is_live") is False: | |
| 202 | − out["gone"] = True # loué / en attente / retiré | |
| 203 | − loc = o.get("location") or {} | |
| 204 | − if loc.get("latitude") and loc.get("longitude"): | |
| 205 | − out["lat"] = loc["latitude"] | |
| 206 | − out["lng"] = loc["longitude"] | |
| 207 | − geo = loc.get("reverse_geocode_detailed") or {} | |
| 208 | − if geo.get("city"): | |
| 209 | − out["city"] = geo["city"] | |
| 210 | − if geo.get("state"): | |
| 211 | − out["state"] = geo["state"] | |
| 212 | − lt = (o.get("location_text") or {}).get("text") or "" | |
| 213 | − if lt: # ex. « Québec, QC » / « Norfolk, ON » | |
| 214 | − out["location_text"] = lt | |
| 215 | − parts = [p.strip() for p in lt.split(",") if p.strip()] | |
| 216 | − if parts and not out.get("city"): | |
| 217 | − out["city"] = parts[0] | |
| 218 | − if len(parts) > 1 and not out.get("state"): | |
| 219 | − out["state"] = parts[1] | |
| 220 | − desc = (o.get("redacted_description") or {}).get("text") or "" | |
| 221 | − if desc: | |
| 222 | − out["description"] = _clean_desc(desc)[:6000] | |
| 223 | − photos = [] | |
| 224 | − for p in o.get("listing_photos") or []: # vide hors connexion, mais | |
| 225 | − uri = ((p.get("image") or {}).get("uri")) or "" # gardé si FB rouvre | |
| 226 | − if uri and uri not in photos: | |
| 227 | − photos.append(uri) | |
| 228 | − if not photos: | |
| 229 | − photos = _dom_gallery(html, o.get("marketplace_listing_title") or "") | |
| 230 | − if photos: | |
| 231 | − out["images"] = photos | |
| 232 | − return out | |
| 233 | − | |
| 234 | − | |
| 235 | −def _price(obj: dict) -> float | None: | |
| 236 | − pr = obj.get("listing_price") or {} | |
| 237 | − for k in ("amount", "amount_with_offset_in_currency"): | |
| 238 | − v = pr.get(k) | |
| 239 | − if v is None: | |
| 240 | − continue | |
| 241 | − try: | |
| 242 | − val = float(v) | |
| 243 | − except (TypeError, ValueError): | |
| 244 | − continue | |
| 245 | − if k == "amount_with_offset_in_currency" and val > 100000: | |
| 246 | − val /= 100.0 # offset en cents | |
| 247 | − if PRICE_MIN <= val <= PRICE_MAX: | |
| 248 | − return round(val, 0) | |
| 249 | − return None | |
| 250 | − | |
| 251 | 94 | |
| 252 | 95 | def _unit_type(title: str, desc: str = "") -> str: |
| 253 | 96 | blob = f"{title} {desc}" |
@@ -272,76 +115,87 @@ def _usable(payload: dict | None) -> bool: | ||
| 272 | 115 | |
| 273 | 116 | def _non_qc(payload: dict) -> bool: |
| 274 | 117 | state = (payload.get("state") or "").strip().lower() |
| 275 | − return bool(state) and state not in _QC_STATES | |
| 118 | + if state: | |
| 119 | + return state not in _QC_STATES | |
| 120 | + # sans état : filet géographique — certains PDP ne livrent que le GPS | |
| 121 | + lat, lng = payload.get("lat"), payload.get("lng") | |
| 122 | + if lat is not None and lng is not None: | |
| 123 | + return not (44.9 <= lat <= 62.8 and -79.6 <= lng <= -56.9) | |
| 124 | + return False | |
| 276 | 125 | |
| 277 | 126 | |
| 278 | 127 | class FacebookMarketplaceConnector(BaseConnector): |
| 279 | 128 | source_id = "fb_marketplace" |
| 280 | 129 | request_delay = 1.0 |
| 281 | 130 | |
| 282 | − def _scrape(self, url: str) -> str: | |
| 283 | − return self.get_scrapfly(url, render_js=True, asp=True, country="ca", | |
| 284 | − proxy_pool="public_residential_pool", | |
| 285 | − rendering_wait=5000) | |
| 286 | − | |
| 287 | − def _search_all(self, cities: dict) -> dict[str, tuple[dict, str]]: | |
| 288 | − """Toutes les pages de recherche (ville × tranche de prix) EN PARALLÈLE. | |
| 289 | − | |
| 290 | − Même nombre de requêtes Scrapfly qu'avant (aucune perte de volume) : | |
| 291 | − seule l'attente des rendus JS (~20 s chacun) est recouverte. | |
| 292 | − """ | |
| 293 | − tasks = [] | |
| 131 | + # -- orchestration de l'acteur Apify -------------------------------------- | |
| 132 | + def _search_urls(self) -> tuple[list[str], dict[str, str]]: | |
| 133 | + """URLs de recherche (ville × tranche) + mapping URL -> nom de ville.""" | |
| 134 | + cities, regions = dict(CITIES), dict(REGIONS) | |
| 135 | + if CITY_LIMIT: | |
| 136 | + wanted = {c.strip().casefold() for c in CITY_LIMIT.split(",")} | |
| 137 | + cities = {k: v for k, v in cities.items() | |
| 138 | + if k in wanted or v.casefold() in wanted} | |
| 139 | + regions = {k: v for k, v in regions.items() | |
| 140 | + if v.casefold() in wanted} | |
| 141 | + urls: list[str] = [] | |
| 142 | + by_url: dict[str, str] = {} | |
| 294 | 143 | for slug, city in cities.items(): |
| 295 | 144 | for lo, hi in PRICE_BANDS: |
| 296 | − url = (f"{BASE}/{slug}/propertyrentals" | |
| 297 | − f"?minPrice={lo}&maxPrice={hi}&sortBy=creation_time_descend") | |
| 298 | − tasks.append((url, city)) | |
| 299 | − found: dict[str, tuple[dict, str]] = {} | |
| 300 | − with _cf.ThreadPoolExecutor(max_workers=CONCURRENCY) as pool: | |
| 301 | − futs = {pool.submit(self._scrape, url): city for url, city in tasks} | |
| 302 | − for fut in _cf.as_completed(futs): | |
| 303 | − city = futs[fut] | |
| 304 | − try: | |
| 305 | − html = fut.result() | |
| 306 | − except Exception: | |
| 307 | − continue | |
| 308 | − for lid, obj in _walk_listings(html).items(): | |
| 309 | − found.setdefault(lid, (obj, city)) | |
| 310 | − return found | |
| 311 | − | |
| 312 | − def _fetch_details(self, cache: du.TtlDetailCache, | |
| 313 | − todo: list[str]) -> dict[str, dict]: | |
| 314 | − """Fiches détail EN PARALLÈLE ; met en cache et retourne les payloads.""" | |
| 315 | − if not todo: | |
| 316 | − return {} | |
| 317 | − | |
| 318 | − def _one(lid: str) -> tuple[str, dict]: | |
| 319 | − try: | |
| 320 | − return lid, _parse_detail(self._scrape(f"{BASE}/item/{lid}/")) | |
| 321 | − except Exception: | |
| 322 | − return lid, {} | |
| 323 | − out: dict[str, dict] = {} | |
| 324 | − with _cf.ThreadPoolExecutor(max_workers=CONCURRENCY) as pool: | |
| 325 | − for lid, payload in pool.map(_one, todo): | |
| 326 | − if payload: # {} = échec réseau : pas de cache | |
| 327 | − cache.put(lid, payload) | |
| 328 | − out[lid] = payload | |
| 329 | − return out | |
| 330 | − | |
| 331 | − def _backfill(self, cache: du.TtlDetailCache, | |
| 332 | − done: set[str]) -> list[Listing]: | |
| 333 | − """Rattrapage : fiches ACTIVES en BD encore pauvres, hors recherche. | |
| 334 | − | |
| 335 | − Le flux public tourne (chaque sync ne re-liste qu'une fraction du | |
| 336 | − parc) : sans cette phase, une annonce sortie de la recherche garde à | |
| 337 | − jamais sa fiche BD pauvre (1 photo, pas de description ni GPS). | |
| 338 | − On visite sa page détail (budget LOUKA_FBMP_BACKFILL, cache/TTL | |
| 339 | − habituels) et on ré-émet l'annonce UNIQUEMENT si la fiche est | |
| 340 | − toujours en ligne ET que le détail apporte quelque chose — les | |
| 341 | − annonces mortes suivent donc le cycle normal miss_count → retrait. | |
| 342 | − """ | |
| 343 | − if BACKFILL_LIMIT <= 0: | |
| 344 | − return [] | |
| 145 | + u = (f"{BASE}/{slug}/propertyrentals" | |
| 146 | + f"?minPrice={lo}&maxPrice={hi}&sortBy=creation_time_descend") | |
| 147 | + urls.append(u) | |
| 148 | + by_url[u] = city | |
| 149 | + for cid, city in regions.items(): | |
| 150 | + for lo, hi in REGIONAL_BANDS: | |
| 151 | + u = (f"{BASE}/{cid}/propertyrentals" | |
| 152 | + f"?minPrice={lo}&maxPrice={hi}&sortBy=creation_time_descend") | |
| 153 | + urls.append(u) | |
| 154 | + by_url[u] = city | |
| 155 | + return urls, by_url | |
| 156 | + | |
| 157 | + def _run_actor(self, payload: dict, token: str) -> list[dict]: | |
| 158 | + """Lance l'acteur, attend la fin, retourne les items du dataset.""" | |
| 159 | + r = _requests.post( | |
| 160 | + f"{APIFY_API}/acts/{ACTOR}/runs?waitForFinish=120", | |
| 161 | + json=payload, timeout=180, | |
| 162 | + headers={"Authorization": f"Bearer {token}"}) | |
| 163 | + r.raise_for_status() | |
| 164 | + run = r.json()["data"] | |
| 165 | + deadline = time.time() + RUN_TIMEOUT | |
| 166 | + while run["status"] in ("READY", "RUNNING") and time.time() < deadline: | |
| 167 | + time.sleep(10) | |
| 168 | + run = _requests.get( | |
| 169 | + f"{APIFY_API}/actor-runs/{run['id']}", timeout=60, | |
| 170 | + headers={"Authorization": f"Bearer {token}"}).json()["data"] | |
| 171 | + if run["status"] != "SUCCEEDED": | |
| 172 | + raise RuntimeError(f"acteur {ACTOR} : run {run['id']} " | |
| 173 | + f"terminé en {run['status']}") | |
| 174 | + items: list[dict] = [] | |
| 175 | + offset = 0 | |
| 176 | + while True: | |
| 177 | + batch = _requests.get( | |
| 178 | + f"{APIFY_API}/datasets/{run['defaultDatasetId']}/items" | |
| 179 | + f"?limit=1000&offset={offset}", timeout=120, | |
| 180 | + headers={"Authorization": f"Bearer {token}"}).json() | |
| 181 | + items.extend(batch) | |
| 182 | + if len(batch) < 1000: | |
| 183 | + return items | |
| 184 | + offset += 1000 | |
| 185 | + | |
| 186 | + # -- caches / BD ----------------------------------------------------------- | |
| 187 | + def _fresh_ids(self, cache: du.TtlDetailCache) -> list[str]: | |
| 188 | + """IDs dont le payload détail en cache est encore frais (clé + TTL) : | |
| 189 | + l'acteur ne les revisitera pas.""" | |
| 190 | + rows = cache.con.execute( | |
| 191 | + "SELECT external_id FROM detail_cache" | |
| 192 | + " WHERE source=? AND key=? AND fetched_at > ?", | |
| 193 | + (self.source_id, DETAIL_KEY, | |
| 194 | + time.time() - TTL_DAYS * 86400)).fetchall() | |
| 195 | + return [r["external_id"] for r in rows] | |
| 196 | + | |
| 197 | + def _poor_active_rows(self, cache: du.TtlDetailCache) -> list: | |
| 198 | + """Fiches ACTIVES en BD encore pauvres (candidates au rattrapage).""" | |
| 345 | 199 | rows = cache.con.execute( |
| 346 | 200 | "SELECT external_id, url, title, address, sector, city, unit_type," |
| 347 | 201 | " bedrooms, bathrooms, price, price_label, availability," |
@@ -350,15 +204,44 @@ class FacebookMarketplaceConnector(BaseConnector): | ||
| 350 | 204 | " FROM listings WHERE source=? AND active=1" |
| 351 | 205 | " ORDER BY last_seen DESC", (self.source_id,)).fetchall() |
| 352 | 206 | |
| 353 | − def _poor(r) -> bool: | |
| 207 | + def poor(r) -> bool: | |
| 354 | 208 | try: |
| 355 | 209 | n_img = len(json.loads(r["images"] or "[]")) |
| 356 | 210 | except ValueError: |
| 357 | 211 | n_img = 0 |
| 358 | 212 | return (not (r["description"] or "").strip() |
| 359 | 213 | or r["lat"] is None or n_img <= 1) |
| 214 | + return [r for r in rows if poor(r)] | |
| 360 | 215 | |
| 361 | − def _adds(r, d: dict) -> bool: | |
| 216 | + def _listing_from_row(self, r) -> Listing: | |
| 217 | + """Reconstruit le Listing depuis sa ligne BD (phase de rattrapage).""" | |
| 218 | + def js(s, default): | |
| 219 | + try: | |
| 220 | + return json.loads(s) if s else default | |
| 221 | + except ValueError: | |
| 222 | + return default | |
| 223 | + return Listing( | |
| 224 | + source=self.source_id, external_id=r["external_id"], | |
| 225 | + url=r["url"], title=r["title"] or "", address=r["address"] or "", | |
| 226 | + sector=r["sector"] or "", city=r["city"] or "", | |
| 227 | + unit_type=r["unit_type"] or "", bedrooms=r["bedrooms"], | |
| 228 | + bathrooms=r["bathrooms"], price=r["price"], | |
| 229 | + price_label=r["price_label"] or "", | |
| 230 | + availability=r["availability"] or "", | |
| 231 | + availability_date=r["availability_date"], | |
| 232 | + area_sqft=r["area_sqft"], pets=r["pets"], | |
| 233 | + furnished=(None if r["furnished"] is None else bool(r["furnished"])), | |
| 234 | + description=r["description"] or "", | |
| 235 | + amenities=js(r["amenities"], []), details=js(r["details"], {}), | |
| 236 | + images=js(r["images"], []), lat=r["lat"], lng=r["lng"], | |
| 237 | + ) | |
| 238 | + | |
| 239 | + def _backfill(self, cache: du.TtlDetailCache, poor_rows: list, | |
| 240 | + done: set[str]) -> list[Listing]: | |
| 241 | + """Rattrapage : ré-émet les fiches actives pauvres dont le cache | |
| 242 | + (rempli par l'acteur via extraDetailIds) apporte du neuf. Les | |
| 243 | + annonces mortes suivent le cycle normal miss_count → retrait.""" | |
| 244 | + def adds(r, d: dict) -> bool: | |
| 362 | 245 | if d.get("description") and len(d["description"]) > \ |
| 363 | 246 | len(r["description"] or ""): |
| 364 | 247 | return True |
@@ -372,26 +255,14 @@ class FacebookMarketplaceConnector(BaseConnector): | ||
| 372 | 255 | return True |
| 373 | 256 | return bool(d.get("city")) and not (r["city"] or "") |
| 374 | 257 | |
| 375 | − rows = [r for r in rows | |
| 376 | − if r["external_id"] not in done and _poor(r)] | |
| 377 | − payloads: dict[str, dict] = {} | |
| 378 | − todo: list[str] = [] | |
| 379 | − for r in rows: | |
| 380 | − lid = r["external_id"] | |
| 381 | − payload, fresh = cache.peek(lid) | |
| 382 | − if fresh: | |
| 383 | − if _usable(payload): | |
| 384 | − payloads[lid] = payload # déjà en cache : gratuit | |
| 385 | − elif len(todo) < BACKFILL_LIMIT: | |
| 386 | − todo.append(lid) | |
| 387 | − payloads.update(self._fetch_details(cache, todo)) | |
| 388 | − | |
| 389 | 258 | out: list[Listing] = [] |
| 390 | − for r in rows: | |
| 391 | − d = payloads.get(r["external_id"]) | |
| 259 | + for r in poor_rows: | |
| 260 | + if r["external_id"] in done: | |
| 261 | + continue | |
| 262 | + d, _fresh = cache.peek(r["external_id"]) | |
| 392 | 263 | if not _usable(d) or d.get("gone") or _non_qc(d): |
| 393 | 264 | continue # morte / hors QC / rien de neuf |
| 394 | − if not _adds(r, d): | |
| 265 | + if not adds(r, d): | |
| 395 | 266 | continue # rien à apporter : laisser vivre son cycle |
| 396 | 267 | lst = self._listing_from_row(r) |
| 397 | 268 | du.apply_detail(lst, {k: v for k, v in d.items() |
@@ -404,93 +275,84 @@ class FacebookMarketplaceConnector(BaseConnector): | ||
| 404 | 275 | out.append(lst) |
| 405 | 276 | return out |
| 406 | 277 | |
| 407 | − def _listing_from_row(self, r) -> Listing: | |
| 408 | − """Reconstruit le Listing depuis sa ligne BD (phase de rattrapage).""" | |
| 409 | − def js(s, default): | |
| 410 | − try: | |
| 411 | − return json.loads(s) if s else default | |
| 412 | − except ValueError: | |
| 413 | − return default | |
| 414 | − return Listing( | |
| 415 | − source=self.source_id, external_id=r["external_id"], | |
| 416 | − url=r["url"], title=r["title"] or "", address=r["address"] or "", | |
| 417 | − sector=r["sector"] or "", city=r["city"] or "", | |
| 418 | − unit_type=r["unit_type"] or "", bedrooms=r["bedrooms"], | |
| 419 | − bathrooms=r["bathrooms"], price=r["price"], | |
| 420 | − price_label=r["price_label"] or "", | |
| 421 | − availability=r["availability"] or "", | |
| 422 | − availability_date=r["availability_date"], | |
| 423 | − area_sqft=r["area_sqft"], pets=r["pets"], | |
| 424 | − furnished=(None if r["furnished"] is None else bool(r["furnished"])), | |
| 425 | − description=r["description"] or "", | |
| 426 | − amenities=js(r["amenities"], []), details=js(r["details"], {}), | |
| 427 | − images=js(r["images"], []), lat=r["lat"], lng=r["lng"], | |
| 428 | − ) | |
| 429 | − | |
| 278 | + # -- pipeline principal ---------------------------------------------------- | |
| 430 | 279 | def fetch(self) -> list[Listing]: |
| 431 | − if not os.environ.get("SCRAPFLY_KEY"): | |
| 432 | − raise RuntimeError("SCRAPFLY_KEY manquant (voir .env)") | |
| 433 | − cities = dict(CITIES) | |
| 434 | − if CITY_LIMIT: | |
| 435 | − wanted = {c.strip() for c in CITY_LIMIT.split(",")} | |
| 436 | − cities = {k: v for k, v in CITIES.items() if k in wanted} | |
| 437 | − | |
| 438 | − found = self._search_all(cities) | |
| 439 | − | |
| 440 | − # candidats retenus AVANT tout enrichissement : pas de requête détail | |
| 441 | − # gaspillée sur les annonces sans prix ou déjà louées | |
| 442 | − candidates: list[tuple[str, dict, str]] = [] | |
| 443 | − for lid, (obj, city) in found.items(): | |
| 444 | − if _price(obj) is None: | |
| 445 | − continue # sans prix mensuel valable : ignorer | |
| 446 | − if obj.get("is_sold") or obj.get("is_pending"): | |
| 447 | − continue # déjà loué / en attente | |
| 448 | − candidates.append((lid, obj, city)) | |
| 449 | − | |
| 450 | − # enrichissement détail : cache BD d'abord (peek), puis les fiches | |
| 451 | − # jamais vues / périmées EN PARALLÈLE dans la limite du budget | |
| 452 | − cache = du.TtlDetailCache(self, budget=DETAIL_LIMIT, ttl_days=TTL_DAYS, | |
| 453 | − key=DETAIL_KEY, fetch_html=self._scrape) | |
| 454 | − details: dict[str, dict] = {} | |
| 455 | − todo: list[str] = [] | |
| 280 | + token = os.environ.get("APIFY_TOKEN") | |
| 281 | + if not token: | |
| 282 | + raise RuntimeError("APIFY_TOKEN manquant (voir .env)") | |
| 283 | + urls, city_by_url = self._search_urls() | |
| 284 | + | |
| 285 | + cache = du.TtlDetailCache(self, budget=0, ttl_days=TTL_DAYS, | |
| 286 | + key=DETAIL_KEY, fetch_html=lambda _u: "") | |
| 456 | 287 | try: |
| 457 | − for lid, _obj, _city in candidates: | |
| 458 | − payload, fresh = cache.peek(lid) | |
| 459 | − if _usable(payload): | |
| 460 | − details[lid] = payload # frais OU périmé toléré (v1 inclus) | |
| 461 | − if not fresh and len(todo) < cache.budget: | |
| 462 | − todo.append(lid) | |
| 463 | − details.update(self._fetch_details(cache, todo)) | |
| 288 | + fresh = set(self._fresh_ids(cache)) | |
| 289 | + poor_rows = self._poor_active_rows(cache) | |
| 290 | + extra = [r["external_id"] for r in poor_rows | |
| 291 | + if r["external_id"] not in fresh][:BACKFILL_LIMIT] | |
| 292 | + | |
| 293 | + actor_input: dict = { | |
| 294 | + "searchUrls": urls, | |
| 295 | + "getDetails": True, | |
| 296 | + "maxDetails": DETAIL_LIMIT + BACKFILL_LIMIT, | |
| 297 | + "skipDetailIds": sorted(fresh), | |
| 298 | + "extraDetailIds": extra, | |
| 299 | + "concurrency": CONCURRENCY, | |
| 300 | + "requestDelay": 1, | |
| 301 | + } | |
| 302 | + # abonnement résidentiel Oxylabs (déjà payé) plutôt que le proxy | |
| 303 | + # Apify facturé au Go ; l'acteur retombe sur Apify RESIDENTIAL | |
| 304 | + # si le gabarit est absent | |
| 305 | + ox_u = os.environ.get("OXYLABS_PROXY_USER") | |
| 306 | + ox_p = os.environ.get("OXYLABS_PROXY_PASS") | |
| 307 | + if ox_u and ox_p: | |
| 308 | + actor_input["proxyUrlTemplate"] = ( | |
| 309 | + f"http://{ox_u}-cc-CA-sessid-{{session}}:{ox_p}" | |
| 310 | + f"@pr.oxylabs.io:7777") | |
| 311 | + | |
| 312 | + items = self._run_actor(actor_input, token) | |
| 313 | + | |
| 314 | + # payloads détail -> cache BD (mêmes formes/clés que l'ère Scrapfly) | |
| 315 | + for it in items: | |
| 316 | + if it.get("kind") != "detail": | |
| 317 | + continue | |
| 318 | + if not it.get("ok"): | |
| 319 | + continue # échec réseau acteur : pas de cache | |
| 320 | + payload = {k: v for k, v in it.items() | |
| 321 | + if k not in ("kind", "id", "ok") and v is not None} | |
| 322 | + cache.put(str(it["id"]), payload or {"nopdp": True}) | |
| 464 | 323 | |
| 465 | 324 | out: dict[str, Listing] = {} |
| 466 | − for lid, obj, city in candidates: | |
| 467 | − detail = details.get(lid) or {} | |
| 468 | − if not _usable(detail): | |
| 469 | − detail = {} | |
| 325 | + for it in items: | |
| 326 | + if it.get("kind") != "listing": | |
| 327 | + continue | |
| 328 | + lid = str(it["id"]) | |
| 329 | + price = it.get("price") | |
| 330 | + if price is None or not (PRICE_MIN <= price <= PRICE_MAX): | |
| 331 | + continue # sans prix mensuel valable : ignorer | |
| 332 | + if it.get("is_sold") or it.get("is_pending"): | |
| 333 | + continue # déjà loué / en attente | |
| 334 | + if _non_qc(it): | |
| 335 | + continue # suggestion FB hors Québec dès la recherche | |
| 336 | + detail, _f = cache.peek(lid) | |
| 337 | + detail = detail if _usable(detail) else {} | |
| 470 | 338 | if detail.get("gone"): |
| 471 | 339 | continue # la fiche dit : loué / retiré |
| 472 | 340 | if detail and _non_qc(detail): |
| 473 | 341 | continue # annonce hors Québec glissée dans le flux |
| 474 | − title = obj.get("marketplace_listing_title") or "" | |
| 475 | − price = _price(obj) | |
| 476 | − loc = obj.get("location") or {} | |
| 477 | − coords = loc.get("reverse_geocode") or {} | |
| 478 | − obj_city = (detail.get("city") | |
| 479 | − or coords.get("city") | |
| 480 | − or (coords.get("city_page") or {}).get("display_name") | |
| 481 | − or city) | |
| 482 | − photo = ((obj.get("primary_listing_photo") or {}) | |
| 483 | − .get("image") or {}).get("uri") or "" | |
| 342 | + title = it.get("title") or "" | |
| 484 | 343 | desc = detail.get("description") or "" |
| 344 | + photo = it.get("primary_photo") or "" | |
| 485 | 345 | images = detail.get("images") or ([photo] if photo else []) |
| 346 | + city = (detail.get("city") or it.get("city") | |
| 347 | + or city_by_url.get(it.get("source_url") or "", "")) | |
| 486 | 348 | out[lid] = Listing( |
| 487 | 349 | source=self.source_id, |
| 488 | 350 | external_id=lid, |
| 489 | 351 | url=f"{BASE}/item/{lid}/", |
| 490 | 352 | title=title[:200], |
| 491 | − city=obj_city, | |
| 353 | + city=city, | |
| 492 | 354 | unit_type=_unit_type(title, desc), |
| 493 | − price=price, | |
| 355 | + price=float(price), | |
| 494 | 356 | price_label=f"{price:,.0f} $/mois".replace(",", " "), |
| 495 | 357 | description=desc, |
| 496 | 358 | images=images, |
@@ -500,7 +362,7 @@ class FacebookMarketplaceConnector(BaseConnector): | ||
| 500 | 362 | |
| 501 | 363 | listings = list(out.values()) |
| 502 | 364 | # rattrapage des fiches actives pauvres sorties de la recherche |
| 503 | − listings.extend(self._backfill(cache, set(out))) | |
| 365 | + listings.extend(self._backfill(cache, poor_rows, set(out))) | |
| 504 | 366 | finally: |
| 505 | 367 | cache.close() |
| 506 | 368 | return listings |
| 507 | 369 | |