spb/lou-ka Public
Lou·Ka — tous les logements à louer du Québec, un seul endroit.
HTML 99.7%
1# place_florimay — Place Florimay (Montmagny, Chaudière-Appalaches)2- site: https://placeflorimay.ca (sélecteur d'unités sur l'accueil ; page /selecteur/ identique)3- méthode: html (sélecteur SVG « do1011 ») + REST WordPress `do-selecteur-plans` (cache BD `self.detail`)4- annonces: **0 au 2026-08-09** — connecteur fonctionnel, inventaire de la source vide (voir ci-dessous)5- couverture: n/a (aucune unité disponible à la source)6- fixture: **non enregistrée** (une fixture à 0 annonce rendrait `test_listings_are_valid` rouge) · test: n/a — à enregistrer dès qu'une unité repasse à « disponible » (`run.py record place_florimay`)78## État du marché à la source (vérifié deux fois)9- L'accueil annonce « Phases 1 et 3 complètes! Quelques unités disponibles en phase 2 », mais le **sélecteur ne contient que la phase 2** (60 unités, 5 étages × 12) et **les 60 polygones portent la classe `indisponible`** (libellé « Louée »).10- Vérification indépendante **unité par unité** via le REST (`/wp-json/do-selecteur-plans/v1/unite?id=<post-id>`, 60 appels) : `etat = "indisponible"` pour les 60 → aucune annonce à produire. Le connecteur retourne donc 0 sans erreur, et produira des annonces automatiquement dès qu'une unité changera d'état.11- Les phases 1 (60 unités) et 3 (50 unités, livrée juin 2026) ne sont pas exposées dans le sélecteur.1213## Champs extraits (mapping validé)14Le mapping a été validé de bout en bout en rejouant le HTML réel avec une unité forcée à « disponible » et la réponse REST réelle de cette unité :15`place_florimay:101 | Place Florimay — Unité 101 | 136, boulevard Taché Ouest, Montmagny, QC G5V 3A5 | Montmagny | 4½ | 1300 $ par mois → 1 300 $ | Libre 1 septembre 2026 → 2026-09-01 | 1 280 pi² | balcon 144 pi² | étage 1 | 7 commodités | plan PDF + 9 photos`16- Polygones SVG : `data-numero` (id du contenu WP, clé de cache), `data-etage` (→ `details.floor`), `data-type` (« 4½ coin », « 3½ ») → type d'unité, `data-prix` (loyer), `data-promotion`.17- REST par unité : `unite` (n° affiché → `external_id`), `etat` + `etat_titre` (« Louée »), `type`, `superficie_habitable` (pi²), `superficie_terrasse` (balcon), `style`, `nb_chambres`, `pdf` (→ `details.plan_pdf`), `gallery` (plan PNG en tête des images), `date_libre`.18- **Prix** : cette variante du plugin **n'expose pas** de champ `montant` (contrairement à La Cour / AULA / Le St-Georges) → le loyer retenu est celui publié sur le polygone (`data-prix`), rien d'autre n'est supposé.19- Commodités de l'immeuble (`.qodef-icon-list-item`) : structure béton, chute à déchets, ascenseur, architecture moderne, lockers, grande insonorisation, toiture plate.20- Photos réelles du projet (uploads de l'accueil), logos/plans/miniatures filtrés.2122## Champs indisponibles à la source23- **Adresse par phase** : le site ne publie qu'une adresse, celle du bureau de location (136, boulevard Taché Ouest) — utilisée comme adresse des annonces, faute de mieux, et signalée ici comme telle. Les adresses 105-125 boul. Taché Ouest citées dans l'étude d'expansion ne figurent **pas** sur le site : elles ne sont pas utilisées.24- Secteur (Montmagny n'a pas de découpage publié), lat/lng, animaux, meublé : non publiés.2526## Fragilités27- **Cloudflare** : 403 pour un UA non-navigateur ; le UA de base.py (Chrome + LouKaBot) passe. `robots.txt` = `Allow: /` pour les agents génériques (blocage ciblé des robots d'entraînement IA : Amazonbot, Bytespider…) ; signaux de contenu « search=yes, ai-train=no, use=reference » — compatible avec un agrégateur qui renvoie vers la source.28- Budget REST plafonné (`max_rest_units = 70`) et cache BD par unité (clé = attributs du polygone) : en régime normal, quelques requêtes par sync.29- Le sélecteur n'expose que la phase 2 : si le promoteur ajoute les phases 1 et 3, elles seront captées sans changement de code (le connecteur lit tous les polygones de la page).30- Plugin partagé avec `la_cour`/`aula`/`le_st_georges`, mais **variante différente** (« do1011 », pas de `data-nom`, pas de `montant`) : d'où un connecteur autonome plutôt qu'une sous-classe.31