# huma — HUMĀ Condos locatifs (Edifia) - site: https://humalevis.com (phases 1-2 → plans d'étages → fiches d'unités + page contact) - méthode: html - annonces: 38 → 38 - couverture après (sur 38 annonces): prix 0%, adresse 100%, dispo 100%, superficie 100%, commodités 100% - fixture: ok · test: ok ## Champs extraits - availability : date affichée sur la fiche (`div.date-unite .date-title`, ex. « 1 septembre 2026 »), sinon le champ ÉTAT — availability_date maintenant dérivée correctement (avant : toujours « Disponible » → « now ») - area_sqft : explicite depuis le champ libellé « SUPERFICIE DU LOGEMENT » (876 pi², etc.) - address : adresse civique de chaque phase depuis la page contact (1221 / 1220, rue de Courchevel, Lévis) — avant vide - lat/lng : marqueur Google Maps « HUMĀ condos locatifs » (JSON `map_points` de la page contact), phase 1 - amenities : listes réelles des pages de phases (« Services et commodité » + « INCLUSIONS MENSUELLES » préfixées `Inclus :` + « OPTIONS OFFERTES » suffixées `— en option`) — avant 2 items codés en dur - details.contact : téléphone + courriel du bureau de location (liens tel:/mailto de la page contact) - description : étage, modèle, superficies logement/balcon/totale (inchangé) ## Champs indisponibles à la source - prix : jamais affiché (ni HTML, ni API) — location sur rendez-vous - pets : la phrase « Votre animal est le bienvenu! Informez-vous de notre politique. » est dans les amenities mais n'est pas structurée (voir Fragilités) - meublé : non mentionné ## Fragilités - ~65 requêtes par sync (2 phases + ~20 étages + ~38 fiches) : dépend du nombre d'unités disponibles - Les fiches d'unités sont derrière un redirect 301 (slash final) — suivi automatiquement par requests - L'appariement phase→adresse repose sur les titres `

HUMĀ phase I/II

` de la page contact - LACUNE GÉNÉRIQUE (normalize.py) : « Votre animal est le bienvenu » (singulier) n'est pas reconnu par les règles pets (_PETS_YES_RE attend « animaux acceptés/admis/bienvenus » au pluriel) → pets reste None ## Améliorations apportées - Date de disponibilité réelle par unité (le connecteur l'ignorait : tout était « Disponible » → « now », maintenant p.ex. 2026-09-01) - Superficie explicite (champ structuré) au lieu de la dérivation par texte - Adresse civique par phase + GPS + contact depuis la page contact (1 requête de plus) - Amenities réelles par phase (15 items dont stationnement intérieur, ascenseurs, bornes VE, inclusions eau chaude/climatisation, options $) au lieu de 2 items codés en dur - details enrichis par finalize() : parking{intérieur}, storage, elevator, ac, hot_water, floor ## Échantillon avant/après - N°311 AVANT : availability=`Disponible`→now, address=``, area=876 (dérivée), amenities=2 items codés en dur, pas de GPS/contact - N°311 APRÈS : availability=`1 septembre 2026`→2026-09-01, address=`1221, rue de Courchevel, Lévis (Québec) G6W 0V8`, area=876 (explicite), 15 amenities réelles, lat/lng=46.7332/-71.2604, contact tél+courriel