# edifia — Edifia Groupe Immobilier (multi-plateformes) - site: edifiaimmobilier.com (« Trouvez un logement » → edifialocation.com/BuildingStack) + micro-sites levitalappartements.com (Livya), capellalevis.com (sysc), appartementscardinal.com (sysc) - méthode: multi-sources (JSON embarqué : flux RSC Next.js Livya, `units = [[...]]` sysc, `var units = [...]` BuildingStack + pages /b/) - annonces: 184 (Le Vital 49, Capella 125, Cardinal Sud 7, Cardinal Nord 3) - couverture (sur 184 annonces): prix 95%, adresse 100%, dispo 100%, superficie 100%, commodités 98%, photos 100%, GPS 32% - fixture: ok (9 requêtes) · test: ok ## Projets couverts - **Le Vital** (230 unités, Lévis, secteur Desjardins/quartier Umano, 6078 boul. Étienne-Dallaire) : la page « Plans et prix » embarque un module Livya (app.livya.com). Le HTML du module (Next.js App Router) contient le JSON complet des 230 unités dans les chunks `self.__next_f.push` → 33 unités AVAILABLE + 16 avec `futureAvailability` datée = 49 annonces avec prix exact (`rentalPrice`), superficie, balcon, étage, chambres/SDB, GPS et adresse par unité. Amenities réelles de /espaces-communs-et-services/ (blocs Bricks `.icon-box .brxe-heading`, 20 items). - **Capella** (résidence pour aînés autonomes et semi-autonomes, 198 unités, 1500 rue Weyman, Lévis) : sélecteur d'étages « sysc » — JSON `units = [[...]]` par étage dans la page /logements-et-prix/ : 125 unités Available avec prix mensuel par unité, type (lettre), superficies logement/balcon, plan PNG de l'unité. Typologie = index dans [Studio, 3½, 4½] (constante du plugin sysc). Inclusions (câble, téléphonie, électricité, eau chaude, clim…) extraites de la grille d'icônes. - **Le Cardinal Sud** (95 unités, 1125 rue des Rigoles, Val-Bélair, Québec) : même plateforme sysc sur appartementscardinal.com/cardinal-sud/ — 6 unités Available avec date de libération en toutes lettres, typologie « 4etdemiB » → 4½, inclusions (eau chaude + climatisation), plan de vente PNG, GPS via `var map_points`. Prix souvent absent du micro-site → complété par le portail BuildingStack (correspondance immeuble+numéro d'unité). - **Le Cardinal Nord** (132 unités, 1080 boul. Pie-XI Sud, Val-Bélair) : aucun sélecteur actif sur le micro-site → unités du portail edifialocation.com (BuildingStack) : `var units` de /Listing/Listings (prix, pi², chambres, SDB, GPS, contact de l'agente de location) + page /b/ pour les dates de libération et les commodités de l'immeuble ; photos du micro-site. - Le portail BuildingStack sert aussi de filet pour les unités Cardinal Sud absentes du micro-site (ex. l'unité 309). ## Exclusions (anti-doublons / hors périmètre) - **HUMĀ phases 1-2** (Huma 1/Huma 2 sur edifialocation) : connecteur dédié huma.py — filtrées par nom d'immeuble. - **Le Stellar, Chicoutimi** (Saguenay) : hors région — filtré par ville (seuls Québec/Lévis passent). - **Riva Ouest** (Lavaltrie, Lanaudière — pas Lévis) : en construction (automne 2025), aucune unité affichée nulle part. - **Solis** : condos en vente, rien à louer. ## Champs extraits - price : Livya `rentalPrice` (Le Vital), sysc `price` (Capella/Cardinal Sud), BuildingStack `Apartment.Price` (Cardinal Nord + restes). NB : le portail affiche « Contactez-nous » (PriceDisclosure=4) mais son JSON public contient le prix — conservé avec price_label=« Contactez-nous ». - availability : « Disponible — occupation immédiate » / « Libre le 2026-12-01 » (Livya futureAvailability.startsOn), « Libre 1 octobre 2026 » (sysc available_date), « Libre oct. 01, 2026 » (table BuildingStack) — toutes parsées par la normalisation. - area_sqft : superficie habitable explicite partout ; balcon dans la description. - amenities : par projet (20 Vital, 15 Capella, 6-8 Cardinal via .facilities BuildingStack). - images : plan de l'unité en tête (Capella/Cardinal Sud), photos uploads du micro-site, PreviewUrl BuildingStack. - lat/lng : par unité (Livya), marqueurs map_points (Cardinal Sud), Address (BuildingStack). - details.contact : agente de location (nom, tél, courriel) pour les unités BuildingStack. ## Champs indisponibles à la source - 9 unités sans prix : 5 Le Vital à disponibilité future (rentalPrice=0 dans le JSON) et 4 Cardinal Sud micro-site sans équivalent portail — price=None, rien d'inventé. - pets : non structuré pour Vital/Capella (Capella affiche une politique « animal de moins de 12 lbs » en texte libre ; les Cardinals ont « Petits animaux autorisés »/« Grands chiens autorisés » dans les amenities → dérivés par normalize). - GPS Capella : aucun marqueur exploitable sur la page. ## Fragilités - 4 plateformes différentes : un re-design d'un micro-site casse son parseur (couvert par la fixture ; chaque projet est isolé dans un try/except). - Le flux RSC Livya n'est pas une API contractuelle : on repère `"units":[` dans le blob décodé (les libellés i18n contiennent aussi "units" → le marqueur inclut le crochet). L'id d'entité Livya est lu dynamiquement dans la page WP (data-entity), pas codé en dur. - Le prix BuildingStack est présent dans le JSON mais masqué à l'affichage (« Contactez-nous ») — si Edifia le retire du payload, ces prix passeront à None. - La correspondance micro-site ↔ portail pour Cardinal Sud repose sur le nom d'immeuble exact (« Cardinal sud ») + numéro d'unité. - Capella est une RPA : les prix (1 809 $–3 417 $) incluent des services de résidence ; le premier item des amenities le signale. ## Échantillon - `vital-910` : Le Vital — Unité 910 | Studio | 1021 $ | Disponible — occupation immédiate | 364 pi² | GPS 46.7947/-71.1622 | 20 amenities - `capella-1113` : Capella (résidence pour aînés) — Unité 1113 | Studio | 1809 $ | 517 pi² | plan PNG + 12 photos | 15 amenities - `cardinal-sud-601` : Le Cardinal Sud — Unité 601 | 4½ | prix non affiché (None) | Libre 1 octobre 2026 → 2026-10-01 | 1067 pi² | inclusions eau chaude + clim - `cardinal-nord-111` : Le Cardinal Nord — Unité 111 | 4½ | 1702 $ (« Contactez-nous ») | Libre oct. 01, 2026 → 2026-10-01 | 1072 pi² | contact agente de location