# place_florimay — Place Florimay (Montmagny, Chaudière-Appalaches) - site: https://placeflorimay.ca (sélecteur d'unités sur l'accueil ; page /selecteur/ identique) - méthode: html (sélecteur SVG « do1011 ») + REST WordPress `do-selecteur-plans` (cache BD `self.detail`) - annonces: **0 au 2026-08-09** — connecteur fonctionnel, inventaire de la source vide (voir ci-dessous) - couverture: n/a (aucune unité disponible à la source) - 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`) ## État du marché à la source (vérifié deux fois) - 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 »). - Vérification indépendante **unité par unité** via le REST (`/wp-json/do-selecteur-plans/v1/unite?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. - Les phases 1 (60 unités) et 3 (50 unités, livrée juin 2026) ne sont pas exposées dans le sélecteur. ## Champs extraits (mapping validé) Le 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é : `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` - 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`. - 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`. - **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é. - Commodités de l'immeuble (`.qodef-icon-list-item`) : structure béton, chute à déchets, ascenseur, architecture moderne, lockers, grande insonorisation, toiture plate. - Photos réelles du projet (uploads de l'accueil), logos/plans/miniatures filtrés. ## Champs indisponibles à la source - **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. - Secteur (Montmagny n'a pas de découpage publié), lat/lng, animaux, meublé : non publiés. ## Fragilités - **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. - 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. - 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). - 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.