# bribourg — Bri Bourg (Charlesbourg, Vanier, Beauport)
- site: https://bribourg.com/Logements-a-louer.php (flux RSS DropInBlog + pages d'immeubles)
- méthode: html (RSS DropInBlog + pages d'immeubles PHP statiques)
- annonces: 2 → 2
- couverture après (sur 2 annonces): prix 100%, adresse 100%, dispo 100%, superficie 0%, commodités 100%
- fixture: ok · test: ok (2 passed)
## Champs extraits
- **Flux RSS DropInBlog** (déjà en place) : titre, lien (?p=slug → external_id), adresse (« Adresse : … »), loyer (« Loyer : 860 $ par mois »), disponibilité (« Disponibilité : 1 août 2026 »), caractéristiques (liste `
` : « Chauffé / éclairé / eau chaude », « Entrée laveuse/sécheuse »…), photos DropInBlog, secteur (parenthèse de l'adresse/du titre).
- **Page d'immeuble correspondante** (appariée par numéro civique + rue, désormais via `self.detail()` avec clé = sha1 du contenu RSS) :
- photos additionnelles (déjà en place) ;
- **code postal** (« Code postal : G1M 1T3 ») → ajouté à l'adresse — nouveau ;
- **descriptif de l'immeuble** (« Immeuble situé près de Place Fleur-de-Lys… balcons… ») → ajouté à la description ; la normalisation en dérive p. ex. `balcony` — nouveau ;
- **services à proximité** (autobus, centre commercial, école, garderie, parc…) → ajoutés à la description — nouveau.
- **Page principale** : liens `tel:` / `mailto:` structurés → `details.contact{phone: 418-626-4613, email: bribourg@videotron.ca}` — nouveau.
## Champs indisponibles à la source
- Superficie : jamais publiée (ni RSS ni pages d'immeubles).
- Animaux, meublé, stationnement, étage : non affichés.
- Année de construction / nombre d'unités : affichés en texte libre non étiqueté sur la page d'immeuble (« 1971 16 UNITÉS ») — non repris pour éviter toute interprétation.
## Fragilités
- Le flux RSS dépend du blog id DropInBlog détecté dans la page (repli codé en dur) ; si Bri Bourg change de compte DropInBlog, le repli devient invalide.
- L'appariement annonce → page d'immeuble repose sur numéro civique + mots de la rue dans le nom de fichier PHP ; un renommage de fichier casserait photos/code postal (dégradation douce : l'annonce reste complète côté RSS).
- Les champs de l'annonce sont du texte semi-structuré (« Adresse : … Loyer : … ») parsé par regex — sensible aux variations de rédaction du gestionnaire.
- Seulement ~2 annonces actives : peu de couverture de test pour les variantes de format.
## Améliorations apportées
- Code postal ajouté à l'adresse depuis la page d'immeuble (champ étiqueté).
- Description enrichie du descriptif d'immeuble et des services à proximité (dérivation de commodités supplémentaires par la normalisation, ex. balcons).
- Contact du gestionnaire (tel:/mailto:) dans `details.contact`.
- Visites des pages d'immeubles mises en cache BD via `self.detail()` (clé dérivée du contenu RSS de l'annonce).
## Échantillon avant/après
**3 ½ à louer (Vanier) – Dès aujourd'hui** (860 $, 3½, dispo 1 août 2026)
- avant : address=`510, avenue Claude-Martin, Québec (Vanier)`, details=`{"inclusions": {"heating": true, "electricity": true, "hot_water": true}}`
- après : address=`510, avenue Claude-Martin, Québec (Vanier), G1M 1T3`, details=`{"inclusions": {…}, "balcony": true, "contact": {"phone": "418-626-4613", "email": "bribourg@videotron.ca"}}`, description + « Immeuble : … balcons, fenêtres et porte-patio rénovés … » + services à proximité
**3 ½ à louer (Charlesbourg) – Dès aujourd'hui** (860 $, 3½)
- avant : address=`1353, boulevard Jean-Talon Ouest, Québec (Charlesbourg)`, pas de contact
- après : address=`…, G1G 2L5`, details=`{"inclusions": {"heating": true, "hot_water": true}, "appliances": {"washer_dryer_hookup": true}, "contact": {…}}`, description enrichie