# gestion_isr — Gestion ISR - site: https://www.gestion-isr.com (SPA Vite/React) → portail public https://location.gestion-isr.com (Supabase) - méthode: API REST Supabase — URL + clé anonyme publiques lues dans le HTML du portail, puis /rest/v1/listings?statut=eq.Actif (2 requêtes/sync, zéro rendu JS) - annonces: 21 (fiches immeubles + maisons/appartements individuels ; ~52 unités disponibles détaillées dans les descriptions) - couverture (sur 21 annonces): prix 100%, adresse 100%, dispo 100%, type 100%, ville 100%, GPS 100%, animaux 100%, images 100%, description 100% — superficie publiée seulement au niveau unité (texte) - fixture: ok (2 requêtes) · test: ok (2 verts) ## Champs extraits - Le site vitrine gestion-isr.com est une SPA sans contenu (index de 1,2 Ko) ; son bundle JS révèle `listingsUrl: "https://location.gestion-isr.com"`, un portail dédié dont le HTML embarque `SUPABASE_URL` et la clé anonyme publique `SUPABASE_ANON` (extraites au runtime par regex — résiste à une rotation de clé). - `GET /rest/v1/listings?select=*&statut=eq.Actif` (en-têtes apikey/Bearer) : - `pk` (UUID) → external_id stable ; `id_app` → lien profond `?fiche=` (routage officiel du portail) ; - `titre` → title ; `grandeur` (« 3½ », « Maison ») → unit_type ; - `loyer` (numérique) → price — pour un immeuble c'est le plus bas des unités disponibles (conforme au « à partir de » de Lou-Ka) ; pas de libellé texte publié → price_label vide ; - `id` = adresse civique complète (« 1037 BOUL MERCURE, DRUMMONDVILLE QC J2B 3L4 ») → address ; `ville`/`secteur` → city/sector (villes réelles : Drummondville, Wickham, Bon-Conseil) ; - `date_dispo_affichage` (« Dès maintenant », « 1 Août 2026 ») → availability ; `animaux` structuré → pets (Aucun→non, Animaux acceptés→oui, « Chat, petit chien »→conditions) ; - `adresse_geo` = « lat, lng » → lat/lng ; - `photos` (URLs storage Supabase), repli sur les albums par modèle (`photo_variants`) puis `main_photo` ; - `description` = texte source (emoji, inclusions, enquête de crédit…) ; pour les immeubles on y annexe l'inventaire des unités disponibles (« • 3½ à 1025 $ »), agrégé depuis le tableau `units` (statut « Disponible » ; les unités louées sont ignorées, comme sur le portail). ## Champs indisponibles à la source - Superficie au niveau fiche : publiée seulement pour certaines unités (champ `superficie` du tableau `units`) — laissée au texte pour ne pas attribuer la superficie d'une unité à tout l'immeuble. - furnished : non structuré (un titre mentionne « Possibilité semi-meublé »). - price_label : le loyer est purement numérique chez la source. ## Fragilités - Dépend du schéma Supabase du portail (tables/champs `listings`, `units`) : un renommage casserait le parsing — le test de fixture le détecterait. - La clé anonyme est publique par conception (embarquée dans le HTML du portail, RLS côté Supabase) ; elle apparaît donc aussi dans la fixture, comme dans la page publique. - Le portail « éclate » les immeubles en cartes par modèle de photos ; le connecteur reste à la granularité fiche/immeuble (21) avec l'inventaire des unités en description — moins de bruit de diff, mêmes informations. - `ville` = « Bon-Conseil » chez la source (raccourci usuel de Notre-Dame-du-Bon-Conseil) : conservé tel quel (fidélité). ## Échantillon - dfc5ea5e (az201) : Maison · Rue José Wickham, 1695 $, dès maintenant, 807 rue José Wickham, GPS, 16 photos, chat accepté. - 864a5e0e (az101) : Boul. Mercure Drummondville, 3½ à partir de 1025 $ (unités 3½/5½/6½ dispo), animaux acceptés, internet inclus. - e7e9888e (az191) : Rue du Faubourg Bon-Conseil, 5½ à 1450 $, dès maintenant, 16 photos, petits compagnons acceptés.