Campagne connecteurs province 2026-08-24 : 149 nouveaux connecteurs (+3 685 annonces)
Création massive issue de la recherche province (reports/expansion/ recherche-province-2026-08-24.md), en 17 lots parallèles : - 149 connecteurs actifs (Building Stack, RentCafe/Yardi, Rentsync/ LiftSystem, Planpoint, Livya, silo.immo, Webflow, Wix SSR, WordPress admin-ajax/wp-json/SSR, PDF+pdfplumber, OCR tesseract, Google Sheets CSV) - helpers partagés _planpoint.py et _livya.py - 9 sources documentées non connectables (doublons Cogir, vitrines sans inventaire, OMHQ annuaire, Skyline 0 propriété QC) - registre data/sources.json : 281 → 439 sources - fix groupe_mathieu : découverte via /condos-locatifs/ (le méga-menu Jet n'est servi que par certaines variantes de cache Elementor) - pdfplumber ajouté aux dépendances ; doc régénérée (367 fiches) Syncs initiaux : 3 685 annonces ajoutées. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
351 changed files +14,165 −1,485
modified
data/sources.json
+1580 −0
@@ -2808,6 +2808,1586 @@ | ||
| 2808 | 2808 | "connector": "simplex", |
| 2809 | 2809 | "status": "actif", |
| 2810 | 2810 | "region": "Mauricie" |
| 2811 | + }, | |
| 2812 | + { | |
| 2813 | + "id": "aera3r", | |
| 2814 | + "name": "Aera (réseau Momentum) — Trois-Rivières, Saint-Hyacinthe, La Présentation", | |
| 2815 | + "url": "https://aera3r.com", | |
| 2816 | + "listing_url": "https://aera3r.com/", | |
| 2817 | + "sectors": "Trois-Rivières (centre-ville), Saint-Hyacinthe (Esplanade sur Girouard), La Présentation (Le Petit Quartier)", | |
| 2818 | + "connector": "aera3r", | |
| 2819 | + "status": "actif", | |
| 2820 | + "region": "Mauricie" | |
| 2821 | + }, | |
| 2822 | + { | |
| 2823 | + "id": "aera_chambly", | |
| 2824 | + "name": "Aera Chambly Signature (réseau Aera / Biophilia)", | |
| 2825 | + "url": "https://aerachambly.com", | |
| 2826 | + "listing_url": "https://aerachambly.com/plans", | |
| 2827 | + "sectors": "Chambly (1878, avenue Bourgogne — 144 condos locatifs riverains ; inventaire complet Sold/Reserved au 2026-08-25, le connecteur captera les libérations)", | |
| 2828 | + "connector": "aera_chambly", | |
| 2829 | + "status": "actif", | |
| 2830 | + "region": "Montérégie" | |
| 2831 | + }, | |
| 2832 | + { | |
| 2833 | + "id": "alfid", | |
| 2834 | + "name": "Groupe Alfid", | |
| 2835 | + "url": "https://www.alfidlouer.ca", | |
| 2836 | + "listing_url": "https://www.alfidlouer.ca/properties", | |
| 2837 | + "sectors": "Montréal (Plateau, Ville-Marie, Côte-des-Neiges), Verdun, Anjou", | |
| 2838 | + "connector": "alfid", | |
| 2839 | + "status": "actif", | |
| 2840 | + "region": "Montréal" | |
| 2841 | + }, | |
| 2842 | + { | |
| 2843 | + "id": "apero", | |
| 2844 | + "name": "Apéro Appartement", | |
| 2845 | + "url": "https://www.aperoappartement.com", | |
| 2846 | + "listing_url": "https://www.aperoappartement.com/terrebonne", | |
| 2847 | + "sectors": "Terrebonne (Lachenaie), Charlemagne, Montréal (LaSalle)", | |
| 2848 | + "connector": "apero", | |
| 2849 | + "status": "actif", | |
| 2850 | + "region": "Lanaudière / Montréal" | |
| 2851 | + }, | |
| 2852 | + { | |
| 2853 | + "id": "arpents_verts", | |
| 2854 | + "name": "Domaine les Arpents Verts (Société Immobilière GBS)", | |
| 2855 | + "url": "https://domainelesarpentsverts.com", | |
| 2856 | + "listing_url": "https://domainelesarpentsverts.com/le-projet/", | |
| 2857 | + "sectors": "Saint-Hyacinthe (secteurs Douville et St-Joseph, ~199 portes)", | |
| 2858 | + "connector": "arpents_verts", | |
| 2859 | + "status": "actif", | |
| 2860 | + "region": "Montérégie" | |
| 2861 | + }, | |
| 2862 | + { | |
| 2863 | + "id": "aube", | |
| 2864 | + "name": "Aubé Immobilier", | |
| 2865 | + "url": "https://www.aubeimmo.com", | |
| 2866 | + "listing_url": "https://www.appartements-quebec.ca/Listing/Listings", | |
| 2867 | + "sectors": "Québec (Sainte-Foy, Limoilou)", | |
| 2868 | + "connector": "aube", | |
| 2869 | + "status": "actif", | |
| 2870 | + "region": "Capitale-Nationale" | |
| 2871 | + }, | |
| 2872 | + { | |
| 2873 | + "id": "bati5", | |
| 2874 | + "name": "Bâti5 — Boisés Dion", | |
| 2875 | + "url": "https://www.bati5.ca", | |
| 2876 | + "listing_url": "https://www.bati5.ca/", | |
| 2877 | + "sectors": "Boisbriand (Boisés Dion — 7150, rue Jean-Claude-Langlois)", | |
| 2878 | + "connector": "bati5", | |
| 2879 | + "status": "actif", | |
| 2880 | + "region": "Laurentides" | |
| 2881 | + }, | |
| 2882 | + { | |
| 2883 | + "id": "beloeil_94", | |
| 2884 | + "name": "Le 94 Vieux-Beloeil", | |
| 2885 | + "url": "https://www.94beloeil.ca", | |
| 2886 | + "listing_url": "https://www.94beloeil.ca/", | |
| 2887 | + "sectors": "Beloeil (Vieux-Beloeil, 915 rue Guertin)", | |
| 2888 | + "connector": "beloeil_94", | |
| 2889 | + "status": "actif", | |
| 2890 | + "region": "Montérégie" | |
| 2891 | + }, | |
| 2892 | + { | |
| 2893 | + "id": "boises_cite", | |
| 2894 | + "name": "Les Boisés de la Cité", | |
| 2895 | + "url": "https://lesboisesdelacite.com", | |
| 2896 | + "listing_url": "https://lesboisesdelacite.com/plans-prix/", | |
| 2897 | + "sectors": "Sainte-Marie (Beauce — 15, rue des Sentiers, 43 unités)", | |
| 2898 | + "connector": "boises_cite", | |
| 2899 | + "status": "actif", | |
| 2900 | + "region": "Chaudière-Appalaches" | |
| 2901 | + }, | |
| 2902 | + { | |
| 2903 | + "id": "c3r", | |
| 2904 | + "name": "Gestion C3R", | |
| 2905 | + "url": "https://www.gestionc3r.com", | |
| 2906 | + "listing_url": "https://www.gestionc3r.com/projets", | |
| 2907 | + "sectors": "Saint-Maurice (Terrasses St-Maurice), Saint-Boniface (Chemin du Lac)", | |
| 2908 | + "connector": "c3r", | |
| 2909 | + "status": "actif", | |
| 2910 | + "region": "Mauricie" | |
| 2911 | + }, | |
| 2912 | + { | |
| 2913 | + "id": "cabinetterie", | |
| 2914 | + "name": "Place de la Cabinetterie", | |
| 2915 | + "url": "https://lacabinetterie.ca", | |
| 2916 | + "listing_url": "https://lacabinetterie.ca/", | |
| 2917 | + "sectors": "Saint-Jean-sur-Richelieu", | |
| 2918 | + "connector": "cabinetterie", | |
| 2919 | + "status": "actif", | |
| 2920 | + "region": "Montérégie" | |
| 2921 | + }, | |
| 2922 | + { | |
| 2923 | + "id": "cara", | |
| 2924 | + "name": "CARA (condos locatifs)", | |
| 2925 | + "url": "https://www.condoscara.com", | |
| 2926 | + "listing_url": "https://www.condoscara.com/disponibilites/", | |
| 2927 | + "sectors": "Vaudreuil-Dorion", | |
| 2928 | + "connector": "cara", | |
| 2929 | + "status": "actif", | |
| 2930 | + "region": "Montérégie" | |
| 2931 | + }, | |
| 2932 | + { | |
| 2933 | + "id": "carre_legendes", | |
| 2934 | + "name": "Carré des Légendes", | |
| 2935 | + "url": "https://carredeslegendes.ca", | |
| 2936 | + "listing_url": "https://carredeslegendes.ca/habitations/", | |
| 2937 | + "sectors": "Saint-Jean-sur-Richelieu (boul. Saint-Luc)", | |
| 2938 | + "connector": "carre_legendes", | |
| 2939 | + "status": "actif", | |
| 2940 | + "region": "Montérégie" | |
| 2941 | + }, | |
| 2942 | + { | |
| 2943 | + "id": "carre_windsor", | |
| 2944 | + "name": "Carré Windsor", | |
| 2945 | + "url": "https://carrewindsor.com", | |
| 2946 | + "listing_url": "https://www.cogir.net/immeuble-residentiel-montreal/3823-carre-windsor.html", | |
| 2947 | + "sectors": "Montréal (Griffintown)", | |
| 2948 | + "connector": null, | |
| 2949 | + "status": "non connectable — doublon (immeuble déjà couvert par le connecteur cogir)", | |
| 2950 | + "region": "Montréal" | |
| 2951 | + }, | |
| 2952 | + { | |
| 2953 | + "id": "celeste", | |
| 2954 | + "name": "CÉLESTE LaSalle", | |
| 2955 | + "url": "https://louerceleste.com", | |
| 2956 | + "listing_url": "https://louerceleste.com/appartements-a-loyer/", | |
| 2957 | + "sectors": "LaSalle (815, rue Gagné — immeubles A et B)", | |
| 2958 | + "connector": "celeste", | |
| 2959 | + "status": "actif", | |
| 2960 | + "region": "Montréal" | |
| 2961 | + }, | |
| 2962 | + { | |
| 2963 | + "id": "cent4", | |
| 2964 | + "name": "Terrasse Cent4 — Vestric (La Prairie)", | |
| 2965 | + "url": "https://terrassecent4.com", | |
| 2966 | + "listing_url": "https://terrassecent4.com/les-unites", | |
| 2967 | + "sectors": "La Prairie (1700, chemin Saint-Jean — condos locatifs neufs 3½/4½, Terrasses 2 et 3)", | |
| 2968 | + "connector": "cent4", | |
| 2969 | + "status": "actif", | |
| 2970 | + "region": "Montérégie" | |
| 2971 | + }, | |
| 2972 | + { | |
| 2973 | + "id": "central_rosemont", | |
| 2974 | + "name": "Central Rosemont", | |
| 2975 | + "url": "https://www.centralrosemont.com", | |
| 2976 | + "listing_url": "https://www.centralrosemont.com/appartements-disponibles/", | |
| 2977 | + "sectors": "Rosemont (1295, rue des Carrières)", | |
| 2978 | + "connector": "central_rosemont", | |
| 2979 | + "status": "actif", | |
| 2980 | + "region": "Montréal" | |
| 2981 | + }, | |
| 2982 | + { | |
| 2983 | + "id": "chartwell", | |
| 2984 | + "name": "Chartwell (Québec)", | |
| 2985 | + "url": "https://chartwell.com/fr", | |
| 2986 | + "listing_url": "https://chartwell.com/fr/trouver-une-residence/quebec", | |
| 2987 | + "sectors": "39 résidences pour retraités au Québec — Québec, Lévis, Gatineau, Laval, Montréal, Sherbrooke, Trois-Rivières… (chaîne pancanadienne, filtrée QC seulement)", | |
| 2988 | + "connector": "chartwell", | |
| 2989 | + "status": "actif", | |
| 2990 | + "region": "Province" | |
| 2991 | + }, | |
| 2992 | + { | |
| 2993 | + "id": "cinq_etoiles", | |
| 2994 | + "name": "Gestion Cinq Étoiles (Appartements locatifs Blainville)", | |
| 2995 | + "url": "https://appartementslocatifs.ca", | |
| 2996 | + "listing_url": "https://appartementslocatifs.ca/", | |
| 2997 | + "sectors": "Blainville (L'Émeraude, Le Cassiopée, L'Azur, Le Célesta, L'Élysée)", | |
| 2998 | + "connector": "cinq_etoiles", | |
| 2999 | + "status": "actif", | |
| 3000 | + "region": "Laurentides" | |
| 3001 | + }, | |
| 3002 | + { | |
| 3003 | + "id": "cinquante_ans_plus", | |
| 3004 | + "name": "Logements 50 ans et plus (Gestion T. Francoeur)", | |
| 3005 | + "url": "https://logements50ans.ca", | |
| 3006 | + "listing_url": "https://logements50ans.ca/", | |
| 3007 | + "sectors": "Blainville (Le Chambéry, Boisé du Parc Équestre), Sainte-Adèle (Le Bourg-Joli) — 50 ans et plus", | |
| 3008 | + "connector": "cinquante_ans_plus", | |
| 3009 | + "status": "actif", | |
| 3010 | + "region": "Laurentides" | |
| 3011 | + }, | |
| 3012 | + { | |
| 3013 | + "id": "citiluxx", | |
| 3014 | + "name": "Citiluxx (Groupe Cleary)", | |
| 3015 | + "url": "https://citiluxx.com", | |
| 3016 | + "listing_url": "https://citiluxx.com/plans-appartements-a-louer/", | |
| 3017 | + "sectors": "Saint-Hubert/Longueuil (Faubourg Cousineau, 8121 boul. Cousineau) — condos locatifs tout inclus", | |
| 3018 | + "connector": "citiluxx", | |
| 3019 | + "status": "actif", | |
| 3020 | + "region": "Montérégie" | |
| 3021 | + }, | |
| 3022 | + { | |
| 3023 | + "id": "complexe_st_charles", | |
| 3024 | + "name": "Complexe St-Charles (condos locatifs, rue de la Pruche)", | |
| 3025 | + "url": "https://www.complexestcharles.ca", | |
| 3026 | + "listing_url": "https://www.complexestcharles.ca/", | |
| 3027 | + "sectors": "Terrebonne", | |
| 3028 | + "connector": "complexe_st_charles", | |
| 3029 | + "status": "actif", | |
| 3030 | + "region": "Lanaudière" | |
| 3031 | + }, | |
| 3032 | + { | |
| 3033 | + "id": "condos18", | |
| 3034 | + "name": "Condos Locatifs 18", | |
| 3035 | + "url": "https://condoslocatifs18.ca", | |
| 3036 | + "listing_url": "https://condoslocatifs18.ca/", | |
| 3037 | + "sectors": "Québec (Limoilou) — 1195, 18e Rue, près de l'hôpital de l'Enfant-Jésus ; une annonce par type d'unité (granularité du site)", | |
| 3038 | + "connector": "condos18", | |
| 3039 | + "status": "actif", | |
| 3040 | + "region": "Québec" | |
| 3041 | + }, | |
| 3042 | + { | |
| 3043 | + "id": "consolata", | |
| 3044 | + "name": "La Consolata (Propriétés Mach)", | |
| 3045 | + "url": "https://www.condolaconsolata.com", | |
| 3046 | + "listing_url": "https://www.condolaconsolata.com/", | |
| 3047 | + "sectors": "Saint-Augustin-de-Desmaures — 4940, rue Lionel-Groulx ; même plateforme Vortex que Les 7 Éléments (connecteur hérité), pas de prix affiché", | |
| 3048 | + "connector": "consolata", | |
| 3049 | + "status": "actif", | |
| 3050 | + "region": "Québec" | |
| 3051 | + }, | |
| 3052 | + { | |
| 3053 | + "id": "construction_app", | |
| 3054 | + "name": "Construction APP / Les Habitations APP", | |
| 3055 | + "url": "https://www.constructionappinc.com", | |
| 3056 | + "listing_url": "https://www.constructionappinc.com/vente-et-location/", | |
| 3057 | + "sectors": "Pont-Rouge, Donnacona, Portneuf, Saint-Marc-des-Carrières, Saint-Basile, Val-Bélair, Sainte-Catherine-de-la-Jacques-Cartier", | |
| 3058 | + "connector": "construction_app", | |
| 3059 | + "status": "actif", | |
| 3060 | + "region": "Québec" | |
| 3061 | + }, | |
| 3062 | + { | |
| 3063 | + "id": "deschenes_pepin", | |
| 3064 | + "name": "Groupe Deschênes Pépin (Le Blüm)", | |
| 3065 | + "url": "https://groupedeschenespepin.com", | |
| 3066 | + "listing_url": "https://groupedeschenespepin.com/louer/", | |
| 3067 | + "sectors": "Longueuil, Sainte-Julie (projets Le Blüm, 50 ans et plus)", | |
| 3068 | + "connector": "deschenes_pepin", | |
| 3069 | + "status": "actif", | |
| 3070 | + "region": "Montérégie" | |
| 3071 | + }, | |
| 3072 | + { | |
| 3073 | + "id": "devloc", | |
| 3074 | + "name": "Devloc", | |
| 3075 | + "url": "https://devloc.ca", | |
| 3076 | + "listing_url": "https://app.devloc.ca/properties-public", | |
| 3077 | + "sectors": "Montréal (Hochelaga, Rosemont, Plateau), Longueuil, Repentigny, Saint-Jean-sur-Richelieu, Saint-Jérôme, Trois-Rivières", | |
| 3078 | + "connector": "devloc", | |
| 3079 | + "status": "actif", | |
| 3080 | + "region": "Montréal / Montérégie / Lanaudière / Laurentides / Mauricie" | |
| 3081 | + }, | |
| 3082 | + { | |
| 3083 | + "id": "double_v", | |
| 3084 | + "name": "Le Double V", | |
| 3085 | + "url": "https://www.ledoublev.ca", | |
| 3086 | + "listing_url": "https://www.ledoublev.ca/sainte-julie/", | |
| 3087 | + "sectors": "Sainte-Julie, McMasterville, Saint-Hyacinthe", | |
| 3088 | + "connector": "double_v", | |
| 3089 | + "status": "actif", | |
| 3090 | + "region": "Montérégie" | |
| 3091 | + }, | |
| 3092 | + { | |
| 3093 | + "id": "douek", | |
| 3094 | + "name": "Douek Apartments", | |
| 3095 | + "url": "https://www.douek.ca", | |
| 3096 | + "listing_url": "https://www.douek.ca/", | |
| 3097 | + "sectors": "Westmount, Notre-Dame-de-Grâce, Côte-des-Neiges, Plateau-Mont-Royal, Vieux-Montréal, Saint-Henri, Dollard-des-Ormeaux", | |
| 3098 | + "connector": "douek", | |
| 3099 | + "status": "actif", | |
| 3100 | + "region": "Montréal" | |
| 3101 | + }, | |
| 3102 | + { | |
| 3103 | + "id": "dupin_despres", | |
| 3104 | + "name": "Dupin Després", | |
| 3105 | + "url": "https://dupindespres.com", | |
| 3106 | + "listing_url": "https://dupindespres.com/appartements-a-louer", | |
| 3107 | + "sectors": "Repentigny, Montréal-Est, Saint-Sulpice, Mascouche", | |
| 3108 | + "connector": "dupin_despres", | |
| 3109 | + "status": "actif", | |
| 3110 | + "region": "Lanaudière" | |
| 3111 | + }, | |
| 3112 | + { | |
| 3113 | + "id": "duquette", | |
| 3114 | + "name": "Entreprises Duquette Immobilier", | |
| 3115 | + "url": "https://www.duquette.ca", | |
| 3116 | + "listing_url": "https://www.duquette.ca/wp-json/wp/v2/estate_property?per_page=100", | |
| 3117 | + "sectors": "Saint-Eustache (320 et 405 chemin de la Grande-Côte), Deux-Montagnes", | |
| 3118 | + "connector": "duquette", | |
| 3119 | + "status": "actif", | |
| 3120 | + "region": "Laurentides" | |
| 3121 | + }, | |
| 3122 | + { | |
| 3123 | + "id": "espace_w", | |
| 3124 | + "name": "Espace W (condos locatifs, Cité Mirabel)", | |
| 3125 | + "url": "https://www.espacew.com", | |
| 3126 | + "listing_url": "https://www.espacew.com/unites-et-disponibilites/", | |
| 3127 | + "sectors": "Mirabel (Cité Mirabel)", | |
| 3128 | + "connector": "espace_w", | |
| 3129 | + "status": "actif", | |
| 3130 | + "region": "Laurentides" | |
| 3131 | + }, | |
| 3132 | + { | |
| 3133 | + "id": "esplanade_cartier", | |
| 3134 | + "name": "Esplanade Cartier (Prével)", | |
| 3135 | + "url": "https://esplanadecartier.com", | |
| 3136 | + "listing_url": "https://www.cogir.net/immeuble-residentiel-montreal/3733-esplanade-cartier.html", | |
| 3137 | + "sectors": "Montréal (Ville-Marie — Sainte-Marie)", | |
| 3138 | + "connector": null, | |
| 3139 | + "status": "non connectable — doublon (immeuble déjà couvert par le connecteur cogir)", | |
| 3140 | + "region": "Montréal" | |
| 3141 | + }, | |
| 3142 | + { | |
| 3143 | + "id": "evol", | |
| 3144 | + "name": "EVOL Saint-Jean (Maître Carré)", | |
| 3145 | + "url": "https://evolstjean.com", | |
| 3146 | + "listing_url": "https://evolstjean.com/les-unites.php", | |
| 3147 | + "sectors": "Saint-Jean-sur-Richelieu (270, rue de la Cabinetterie)", | |
| 3148 | + "connector": "evol", | |
| 3149 | + "status": "actif", | |
| 3150 | + "region": "Montérégie" | |
| 3151 | + }, | |
| 3152 | + { | |
| 3153 | + "id": "excell", | |
| 3154 | + "name": "Les immeubles EXCELL (agence, Abitibi-Ouest)", | |
| 3155 | + "url": "https://www.immeublesexcell.com", | |
| 3156 | + "listing_url": "https://www.immeublesexcell.com/fr/logements/", | |
| 3157 | + "sectors": "La Sarre, Macamic, Taschereau (Abitibi-Ouest)", | |
| 3158 | + "connector": "excell", | |
| 3159 | + "status": "actif", | |
| 3160 | + "region": "Abitibi-Témiscamingue" | |
| 3161 | + }, | |
| 3162 | + { | |
| 3163 | + "id": "fitz", | |
| 3164 | + "name": "Le Fitz (condos locatifs Lévis)", | |
| 3165 | + "url": "https://lefitz.ca", | |
| 3166 | + "listing_url": "https://lefitz.ca/plan-unites/", | |
| 3167 | + "sectors": "Lévis (77, route du Président-Kennedy — 3 tours)", | |
| 3168 | + "connector": "fitz", | |
| 3169 | + "status": "actif", | |
| 3170 | + "region": "Québec" | |
| 3171 | + }, | |
| 3172 | + { | |
| 3173 | + "id": "fluet", | |
| 3174 | + "name": "Groupe Fluet", | |
| 3175 | + "url": "https://www.groupefluet.com", | |
| 3176 | + "listing_url": "https://www.groupefluet.com/manoirdescascades", | |
| 3177 | + "sectors": "Saint-Hyacinthe (Manoir des Cascades, Seigneurie des Pères, Le Notre-Dame I-II-III), Sainte-Marie-Madeleine (triplex rue Noiseux) — préretraités/retraités autonomes", | |
| 3178 | + "connector": "fluet", | |
| 3179 | + "status": "actif", | |
| 3180 | + "region": "Montérégie" | |
| 3181 | + }, | |
| 3182 | + { | |
| 3183 | + "id": "forum_mtl", | |
| 3184 | + "name": "Forum Properties (Berson, Lustra, 100 Windsor)", | |
| 3185 | + "url": "https://www.forumproperties.com", | |
| 3186 | + "listing_url": "https://www.forumproperties.com/fr/residentiel/", | |
| 3187 | + "sectors": "Montréal (Plateau — Berson), Terrebonne (Lustra), Westmount (100 Windsor)", | |
| 3188 | + "connector": "forum_mtl", | |
| 3189 | + "status": "actif", | |
| 3190 | + "region": "Montréal / Lanaudière" | |
| 3191 | + }, | |
| 3192 | + { | |
| 3193 | + "id": "gbd", | |
| 3194 | + "name": "GBD Location", | |
| 3195 | + "url": "https://www.gbdlocation.com", | |
| 3196 | + "listing_url": "https://www.gbdlocation.com/", | |
| 3197 | + "sectors": "Saint-Eustache (East River/Albatros), Sainte-Marthe-sur-le-Lac (Escapade, Centrocité, Triplex rue André), Deux-Montagnes (Quartier Urbain)", | |
| 3198 | + "connector": "gbd", | |
| 3199 | + "status": "actif", | |
| 3200 | + "region": "Laurentides" | |
| 3201 | + }, | |
| 3202 | + { | |
| 3203 | + "id": "gcs_gabriel", | |
| 3204 | + "name": "GCS Le Gabriel", | |
| 3205 | + "url": "https://gcs-legabriel.ca", | |
| 3206 | + "listing_url": "https://gcs-legabriel.ca/", | |
| 3207 | + "sectors": "Québec (Sainte-Foy) — 2860, rue Gabriel-Le Prévost, 121 condos locatifs ; prix « à partir de » par typologie (granularité du site)", | |
| 3208 | + "connector": "gcs_gabriel", | |
| 3209 | + "status": "actif", | |
| 3210 | + "region": "Québec" | |
| 3211 | + }, | |
| 3212 | + { | |
| 3213 | + "id": "gerik", | |
| 3214 | + "name": "Gestion immobilière Gerik", | |
| 3215 | + "url": "https://gerik.ca", | |
| 3216 | + "listing_url": "https://gerik.ca/appartements-a-louer-gatineau/", | |
| 3217 | + "sectors": "Gatineau (Hull, Aylmer, Masson-Angers), Cantley", | |
| 3218 | + "connector": "gerik", | |
| 3219 | + "status": "actif", | |
| 3220 | + "region": "Outaouais" | |
| 3221 | + }, | |
| 3222 | + { | |
| 3223 | + "id": "gestion_1139", | |
| 3224 | + "name": "Gestion 1139", | |
| 3225 | + "url": "https://gestion1139.com", | |
| 3226 | + "listing_url": "https://gestion1139.com/", | |
| 3227 | + "sectors": "Drummondville et environs", | |
| 3228 | + "connector": "gestion_1139", | |
| 3229 | + "status": "actif", | |
| 3230 | + "region": "Centre-du-Québec" | |
| 3231 | + }, | |
| 3232 | + { | |
| 3233 | + "id": "gestion_bloc", | |
| 3234 | + "name": "Gestion Bloc", | |
| 3235 | + "url": "https://www.gestionbloc.ca", | |
| 3236 | + "listing_url": "https://www.gestionbloc.ca/logements", | |
| 3237 | + "sectors": "Québec (Val-Bélair, Cap-Rouge, Limoilou…), Lévis et Rive-Sud, Donnacona", | |
| 3238 | + "connector": "gestion_bloc", | |
| 3239 | + "status": "actif", | |
| 3240 | + "region": "Québec" | |
| 3241 | + }, | |
| 3242 | + { | |
| 3243 | + "id": "gestion_cem", | |
| 3244 | + "name": "Gestion CEM (portail Eversa)", | |
| 3245 | + "url": "https://gestioncem.eversa.app", | |
| 3246 | + "listing_url": "https://gestioncem.eversa.app/listings/list", | |
| 3247 | + "sectors": "Longueuil, Châteauguay, Saint-Lambert, Montréal (Sud-Ouest/Monk), Montréal-Est", | |
| 3248 | + "connector": "gestion_cem", | |
| 3249 | + "status": "actif", | |
| 3250 | + "region": "Montérégie / Montréal" | |
| 3251 | + }, | |
| 3252 | + { | |
| 3253 | + "id": "gestion_mj", | |
| 3254 | + "name": "Gestion Immobilière M.J", | |
| 3255 | + "url": "https://gestionmj.com", | |
| 3256 | + "listing_url": "https://gestionmj.com/", | |
| 3257 | + "sectors": "Montréal — Ahuntsic-Cartierville (rue Meilleur, rue Verville, avenue du Parc)", | |
| 3258 | + "connector": "gestion_mj", | |
| 3259 | + "status": "actif", | |
| 3260 | + "region": "Montréal" | |
| 3261 | + }, | |
| 3262 | + { | |
| 3263 | + "id": "grandeur_natura", | |
| 3264 | + "name": "Grandeur Natura (Groupe Mathieux)", | |
| 3265 | + "url": "https://grandeurnatura.ca", | |
| 3266 | + "listing_url": "https://grandeurnatura.ca/", | |
| 3267 | + "sectors": "Terrebonne/Urbanova (1199 rue Marcel-de la Sablonnière, 6-plex locatifs)", | |
| 3268 | + "connector": "grandeur_natura", | |
| 3269 | + "status": "actif", | |
| 3270 | + "region": "Lanaudière" | |
| 3271 | + }, | |
| 3272 | + { | |
| 3273 | + "id": "grilli_citea", | |
| 3274 | + "name": "Groupe Grilli Samuel — projet Citéa", | |
| 3275 | + "url": "https://grillisamuel.com", | |
| 3276 | + "listing_url": "https://projetcitea.com/condos-locatifs/", | |
| 3277 | + "sectors": "Terrebonne/Urbanova (950-970 avenue Pierre-Dansereau, condos locatifs tout inclus)", | |
| 3278 | + "connector": "grilli_citea", | |
| 3279 | + "status": "actif", | |
| 3280 | + "region": "Lanaudière" | |
| 3281 | + }, | |
| 3282 | + { | |
| 3283 | + "id": "groupe_mathieu", | |
| 3284 | + "name": "Groupe Mathieu", | |
| 3285 | + "url": "https://groupemathieu.com", | |
| 3286 | + "listing_url": "https://groupemathieu.com/", | |
| 3287 | + "sectors": "Blainville (Station 54/56, Le Siège Social, Place Notre Dame), Sainte-Thérèse (Ste-Thé, Quartier Belmont), Terrebonne (Noüvo District)", | |
| 3288 | + "connector": "groupe_mathieu", | |
| 3289 | + "status": "actif", | |
| 3290 | + "region": "Laurentides / Lanaudière" | |
| 3291 | + }, | |
| 3292 | + { | |
| 3293 | + "id": "gwlra", | |
| 3294 | + "name": "GWL Realty Advisors Residential", | |
| 3295 | + "url": "https://www.gwlraresidential.com", | |
| 3296 | + "listing_url": "https://www.gwlraresidential.com/apartments/qc/montreal/le-demetrius/floorplans", | |
| 3297 | + "sectors": "Centre-ville de Montréal (Le Demetrius — seul immeuble QC actif)", | |
| 3298 | + "connector": "gwlra", | |
| 3299 | + "status": "actif", | |
| 3300 | + "region": "Montréal" | |
| 3301 | + }, | |
| 3302 | + { | |
| 3303 | + "id": "hapopex", | |
| 3304 | + "name": "HAPOPEX — OBNL d'habitation", | |
| 3305 | + "url": "https://www.hapopex.org", | |
| 3306 | + "listing_url": "https://www.hapopex.org/logements-a-louer", | |
| 3307 | + "sectors": "Montréal-Nord, Lachine, Côte-des-Neiges", | |
| 3308 | + "connector": "hapopex", | |
| 3309 | + "status": "actif", | |
| 3310 | + "region": "Montréal" | |
| 3311 | + }, | |
| 3312 | + { | |
| 3313 | + "id": "helio", | |
| 3314 | + "name": "Entreprises Hélio", | |
| 3315 | + "url": "https://www.entrepriseshelio.ca", | |
| 3316 | + "listing_url": "https://www.entrepriseshelio.ca/a-louer/", | |
| 3317 | + "sectors": "Longueuil, La Prairie", | |
| 3318 | + "connector": "helio", | |
| 3319 | + "status": "actif", | |
| 3320 | + "region": "Montérégie" | |
| 3321 | + }, | |
| 3322 | + { | |
| 3323 | + "id": "horizon_terrebonne", | |
| 3324 | + "name": "Horizon Terrebonne (Groupe Socam)", | |
| 3325 | + "url": "https://horizonterrebonne.com", | |
| 3326 | + "listing_url": "https://horizonterrebonne.com/condos/", | |
| 3327 | + "sectors": "Terrebonne", | |
| 3328 | + "connector": "horizon_terrebonne", | |
| 3329 | + "status": "actif", | |
| 3330 | + "region": "Lanaudière" | |
| 3331 | + }, | |
| 3332 | + { | |
| 3333 | + "id": "humano", | |
| 3334 | + "name": "Humano District", | |
| 3335 | + "url": "https://humanodistrict.ca", | |
| 3336 | + "listing_url": "https://humanodistrict.ca/appartements/", | |
| 3337 | + "sectors": "Sherbrooke (rue Galt Ouest — Galt et Maison Générale)", | |
| 3338 | + "connector": "humano", | |
| 3339 | + "status": "actif", | |
| 3340 | + "region": "Estrie" | |
| 3341 | + }, | |
| 3342 | + { | |
| 3343 | + "id": "immo_3r", | |
| 3344 | + "name": "IMMO 3R", | |
| 3345 | + "url": "https://immo3r.com", | |
| 3346 | + "listing_url": "https://immo3r.com/location/trois-rivieres/", | |
| 3347 | + "sectors": "Trois-Rivières (Cap-de-la-Madeleine), Shawinigan, Bécancour, Nicolet, Saint-Maurice", | |
| 3348 | + "connector": "immo_3r", | |
| 3349 | + "status": "actif", | |
| 3350 | + "region": "Mauricie" | |
| 3351 | + }, | |
| 3352 | + { | |
| 3353 | + "id": "imvest", | |
| 3354 | + "name": "Société Imvest (Le Méribel)", | |
| 3355 | + "url": "https://www.societeimvest.ca", | |
| 3356 | + "listing_url": "https://www.societeimvest.ca/immeubles/le-meribel/", | |
| 3357 | + "sectors": "Lévis (Saint-Romuald — 1191, rue de Courchevel, 2 phases)", | |
| 3358 | + "connector": "imvest", | |
| 3359 | + "status": "actif", | |
| 3360 | + "region": "Québec" | |
| 3361 | + }, | |
| 3362 | + { | |
| 3363 | + "id": "in_via", | |
| 3364 | + "name": "IN VIA appartements urbains (CAP Immobilier)", | |
| 3365 | + "url": "https://www.inviamirabel.com", | |
| 3366 | + "listing_url": "https://www.inviamirabel.com/appartements/", | |
| 3367 | + "sectors": "Mirabel (Saint-Janvier)", | |
| 3368 | + "connector": "in_via", | |
| 3369 | + "status": "actif", | |
| 3370 | + "region": "Laurentides" | |
| 3371 | + }, | |
| 3372 | + { | |
| 3373 | + "id": "inovario", | |
| 3374 | + "name": "Inovario", | |
| 3375 | + "url": "https://inovario.com", | |
| 3376 | + "listing_url": "https://inovario.com/appartement-a-louer/", | |
| 3377 | + "sectors": "Châteauguay (rue St-Denis, Quartier du Centre Signature)", | |
| 3378 | + "connector": "inovario", | |
| 3379 | + "status": "actif", | |
| 3380 | + "region": "Montérégie" | |
| 3381 | + }, | |
| 3382 | + { | |
| 3383 | + "id": "inspire_laval", | |
| 3384 | + "name": "Groupe Inspire", | |
| 3385 | + "url": "https://groupeinspire.ca", | |
| 3386 | + "listing_url": "https://groupeinspire.ca/espaces_disponibles/", | |
| 3387 | + "sectors": "Laval (2525 Havre-des-Îles), Montréal (Randall, Wilderton, Madison, Ridgewood, Hurteau, Bois-de-Boulogne, LaSalle), Côte Saint-Luc (5555 Trent)", | |
| 3388 | + "connector": "inspire_laval", | |
| 3389 | + "status": "actif", | |
| 3390 | + "region": "Laval" | |
| 3391 | + }, | |
| 3392 | + { | |
| 3393 | + "id": "iparc", | |
| 3394 | + "name": "iParc", | |
| 3395 | + "url": "https://iparc.ca", | |
| 3396 | + "listing_url": "https://iparc.ca/property-category/a-louer/", | |
| 3397 | + "sectors": "Montréal (Hochelaga-Maisonneuve, Berri/Quartier latin, Rosemont, Pointe-aux-Trembles)", | |
| 3398 | + "connector": "iparc", | |
| 3399 | + "status": "actif", | |
| 3400 | + "region": "Montréal" | |
| 3401 | + }, | |
| 3402 | + { | |
| 3403 | + "id": "jardins_anna", | |
| 3404 | + "name": "Les Jardins d'Anna", | |
| 3405 | + "url": "https://lesjardinsdanna.com", | |
| 3406 | + "listing_url": "https://lesjardinsdanna.com/location/", | |
| 3407 | + "sectors": "Nicolet", | |
| 3408 | + "connector": "jardins_anna", | |
| 3409 | + "status": "actif", | |
| 3410 | + "region": "Centre-du-Québec" | |
| 3411 | + }, | |
| 3412 | + { | |
| 3413 | + "id": "jardins_nd", | |
| 3414 | + "name": "Les Jardins Notre Dame", | |
| 3415 | + "url": "https://logement-victoriaville.jardinsnotredame.com", | |
| 3416 | + "listing_url": "https://logement-victoriaville.jardinsnotredame.com/", | |
| 3417 | + "sectors": "Victoriaville (465, rue Notre-Dame Ouest)", | |
| 3418 | + "connector": "jardins_nd", | |
| 3419 | + "status": "actif", | |
| 3420 | + "region": "Centre-du-Québec" | |
| 3421 | + }, | |
| 3422 | + { | |
| 3423 | + "id": "jcl", | |
| 3424 | + "name": "Petites annonces Groupe JCL", | |
| 3425 | + "url": "https://annonces.groupejcl.com", | |
| 3426 | + "listing_url": "https://annonces.groupejcl.com/categories/immobilier/logements-a-louer/", | |
| 3427 | + "sectors": "Basses-Laurentides / Rive-Nord (Sainte-Thérèse, Saint-Jérôme, Saint-Eustache et environs)", | |
| 3428 | + "connector": "jcl", | |
| 3429 | + "status": "actif", | |
| 3430 | + "region": "Laurentides" | |
| 3431 | + }, | |
| 3432 | + { | |
| 3433 | + "id": "junic", | |
| 3434 | + "name": "Junic — Agora Village Urbain", | |
| 3435 | + "url": "https://junic.ca", | |
| 3436 | + "listing_url": "https://residentiel.agora-plateau.com/appartements/", | |
| 3437 | + "sectors": "Gatineau (Le Plateau — 20 et 35 rue de Hambourg) ; VILL (villappartements.com) : portail résident avec login seulement, sans annonces publiques", | |
| 3438 | + "connector": "junic", | |
| 3439 | + "status": "actif", | |
| 3440 | + "region": "Outaouais" | |
| 3441 | + }, | |
| 3442 | + { | |
| 3443 | + "id": "kare", | |
| 3444 | + "name": "Kare Gestion Immobilière", | |
| 3445 | + "url": "https://www.gestionkare.com", | |
| 3446 | + "listing_url": "https://www.gestionkare.com/units/", | |
| 3447 | + "sectors": "Sherbrooke (Les Nations, Fleurimont, Rock Forest, Lennoxville), Waterloo, Windsor, Richmond, Magog", | |
| 3448 | + "connector": "kare", | |
| 3449 | + "status": "actif", | |
| 3450 | + "region": "Estrie" | |
| 3451 | + }, | |
| 3452 | + { | |
| 3453 | + "id": "l_laval", | |
| 3454 | + "name": "Le L Laval", | |
| 3455 | + "url": "https://l-laval.com", | |
| 3456 | + "listing_url": "https://l-laval.com/plans-condos-locatifs-laval/", | |
| 3457 | + "sectors": "Laval (1585, boulevard des Laurentides)", | |
| 3458 | + "connector": "l_laval", | |
| 3459 | + "status": "actif", | |
| 3460 | + "region": "Laval" | |
| 3461 | + }, | |
| 3462 | + { | |
| 3463 | + "id": "lac_jerome", | |
| 3464 | + "name": "Habitations du Lac Jérôme (Le Seize, La Quaza, Le Hexa)", | |
| 3465 | + "url": "https://habitationsdulacjerome.com", | |
| 3466 | + "listing_url": "https://habitationsdulacjerome.com/", | |
| 3467 | + "sectors": "Saint-Jérôme", | |
| 3468 | + "connector": "lac_jerome", | |
| 3469 | + "status": "actif", | |
| 3470 | + "region": "Laurentides" | |
| 3471 | + }, | |
| 3472 | + { | |
| 3473 | + "id": "lak_nature", | |
| 3474 | + "name": "LAK Appartements Nature (Acropole)", | |
| 3475 | + "url": "https://lakappartementsnature.ca", | |
| 3476 | + "listing_url": "https://lakappartementsnature.ca/", | |
| 3477 | + "sectors": "Lac-Beauport — 1004, boul. du Lac, 62 unités près de la station Le Relais ; sélecteur de plans SVG + API wp-json (inventaire complet loué au 2026-08-25)", | |
| 3478 | + "connector": "lak_nature", | |
| 3479 | + "status": "actif", | |
| 3480 | + "region": "Québec" | |
| 3481 | + }, | |
| 3482 | + { | |
| 3483 | + "id": "lameer", | |
| 3484 | + "name": "Gestion Lameer", | |
| 3485 | + "url": "https://www.lameer.ca", | |
| 3486 | + "listing_url": "https://www.lameer.ca/properties", | |
| 3487 | + "sectors": "Montréal (centre-ville, CDN, Lachine, Verdun), Côte Saint-Luc, Mont-Royal, Pointe-Claire", | |
| 3488 | + "connector": "lameer", | |
| 3489 | + "status": "actif", | |
| 3490 | + "region": "Montréal" | |
| 3491 | + }, | |
| 3492 | + { | |
| 3493 | + "id": "lbm", | |
| 3494 | + "name": "Groupe Rive-Nord / LBM Gestion Locative", | |
| 3495 | + "url": "https://grouperivenord.ca", | |
| 3496 | + "listing_url": "https://grouperivenord.ca/", | |
| 3497 | + "sectors": "Sainte-Marthe-sur-le-Lac (Le 2922, Le 3215), Saint-Joseph-du-Lac (Le 3533) — condos tout inclus, chemin d'Oka", | |
| 3498 | + "connector": "lbm", | |
| 3499 | + "status": "actif", | |
| 3500 | + "region": "Laurentides" | |
| 3501 | + }, | |
| 3502 | + { | |
| 3503 | + "id": "le_730", | |
| 3504 | + "name": "Le 730 Notre-Dame (condos locatifs, marina)", | |
| 3505 | + "url": "https://730.ca", | |
| 3506 | + "listing_url": "https://730.ca/", | |
| 3507 | + "sectors": "Repentigny", | |
| 3508 | + "connector": "le_730", | |
| 3509 | + "status": "actif", | |
| 3510 | + "region": "Lanaudière" | |
| 3511 | + }, | |
| 3512 | + { | |
| 3513 | + "id": "le_fjord", | |
| 3514 | + "name": "Le Fjord (condos locatifs tout inclus)", | |
| 3515 | + "url": "https://www.le-fjord.com", | |
| 3516 | + "listing_url": "https://www.le-fjord.com/unites/", | |
| 3517 | + "sectors": "Lévis (11, rue Fortier — occupation printemps 2027)", | |
| 3518 | + "connector": "le_fjord", | |
| 3519 | + "status": "actif", | |
| 3520 | + "region": "Québec" | |
| 3521 | + }, | |
| 3522 | + { | |
| 3523 | + "id": "le_george", | |
| 3524 | + "name": "Le George", | |
| 3525 | + "url": "https://legeorge.ca", | |
| 3526 | + "listing_url": "https://legeorge.ca/choisir-mon-unite/", | |
| 3527 | + "sectors": "Ville-Marie (1001, rue Lucien-L'Allier — centre-ville)", | |
| 3528 | + "connector": "le_george", | |
| 3529 | + "status": "actif", | |
| 3530 | + "region": "Montréal" | |
| 3531 | + }, | |
| 3532 | + { | |
| 3533 | + "id": "le_pilier", | |
| 3534 | + "name": "Le Pilier Lévis", | |
| 3535 | + "url": "https://lepilierlevis.com", | |
| 3536 | + "listing_url": "https://lepilierlevis.com/projet/", | |
| 3537 | + "sectors": "Lévis (1275, rue J.-B.-Demers)", | |
| 3538 | + "connector": "le_pilier", | |
| 3539 | + "status": "actif", | |
| 3540 | + "region": "Québec" | |
| 3541 | + }, | |
| 3542 | + { | |
| 3543 | + "id": "lemay_fleury", | |
| 3544 | + "name": "Lemay Fleury Immobilier", | |
| 3545 | + "url": "https://www.lemayfleury.com", | |
| 3546 | + "listing_url": "https://www.lemayfleury.com/monfette", | |
| 3547 | + "sectors": "Victoriaville, Kingsey Falls, Val-des-Sources", | |
| 3548 | + "connector": "lemay_fleury", | |
| 3549 | + "status": "actif", | |
| 3550 | + "region": "Centre-du-Québec" | |
| 3551 | + }, | |
| 3552 | + { | |
| 3553 | + "id": "levivo", | |
| 3554 | + "name": "LeVivo Condos Locatifs", | |
| 3555 | + "url": "https://www.levivo.ca", | |
| 3556 | + "listing_url": "https://www.levivo.ca/fr/projets/longueuil-1", | |
| 3557 | + "sectors": "Longueuil, Greenfield Park, La Prairie (4 projets)", | |
| 3558 | + "connector": "levivo", | |
| 3559 | + "status": "actif", | |
| 3560 | + "region": "Montérégie" | |
| 3561 | + }, | |
| 3562 | + { | |
| 3563 | + "id": "lienard", | |
| 3564 | + "name": "Liénard (condos locatifs Sainte-Foy)", | |
| 3565 | + "url": "https://lienard.ca", | |
| 3566 | + "listing_url": "https://lienard.ca/plans-et-disponibilites/", | |
| 3567 | + "sectors": "Québec (Sainte-Foy — 950, rue Liénard et 1000, avenue Myrand)", | |
| 3568 | + "connector": "lienard", | |
| 3569 | + "status": "actif", | |
| 3570 | + "region": "Québec" | |
| 3571 | + }, | |
| 3572 | + { | |
| 3573 | + "id": "linea", | |
| 3574 | + "name": "Linéa (District 55)", | |
| 3575 | + "url": "https://linea.ca", | |
| 3576 | + "listing_url": "https://linea.ca/unites/phase-3/", | |
| 3577 | + "sectors": "Trois-Rivières (District 55, boulevard des Athlètes — phases 1 à 3)", | |
| 3578 | + "connector": "linea", | |
| 3579 | + "status": "actif", | |
| 3580 | + "region": "Mauricie" | |
| 3581 | + }, | |
| 3582 | + { | |
| 3583 | + "id": "lobato", | |
| 3584 | + "name": "Groupe Lobato — vallée du Richelieu", | |
| 3585 | + "url": "https://groupelobato.com", | |
| 3586 | + "listing_url": "https://groupelobato.com/projets/", | |
| 3587 | + "sectors": "Beloeil (Faubourg du Richelieu), McMasterville (Carrefour Laurier, rue Constable), Mont-Saint-Hilaire (rue de la Sucrerie), Saint-Jean-sur-Richelieu (Havre du Richelieu)", | |
| 3588 | + "connector": "lobato", | |
| 3589 | + "status": "actif", | |
| 3590 | + "region": "Montérégie" | |
| 3591 | + }, | |
| 3592 | + { | |
| 3593 | + "id": "localys", | |
| 3594 | + "name": "Gestion Localys", | |
| 3595 | + "url": "https://www.gestionlocalys.com/fr", | |
| 3596 | + "listing_url": "https://www.gestionlocalys.com/fr/logements", | |
| 3597 | + "sectors": "Montréal (Ville-Marie, Sud-Ouest, Plateau, Hochelaga-Maisonneuve, Villeray, Montréal-Nord), Westmount", | |
| 3598 | + "connector": "localys", | |
| 3599 | + "status": "actif", | |
| 3600 | + "region": "Montréal" | |
| 3601 | + }, | |
| 3602 | + { | |
| 3603 | + "id": "location_sb", | |
| 3604 | + "name": "Location Résidentielle SB", | |
| 3605 | + "url": "https://locationresidentielle.com", | |
| 3606 | + "listing_url": "https://locationresidentielle.com/a-louer/", | |
| 3607 | + "sectors": "Saint-Georges (Beauce) — jumelés, appartements et maisons ; cartes « liste d'attente » et « non disponible » écartées", | |
| 3608 | + "connector": "location_sb", | |
| 3609 | + "status": "actif", | |
| 3610 | + "region": "Chaudière-Appalaches" | |
| 3611 | + }, | |
| 3612 | + { | |
| 3613 | + "id": "logements_horizon", | |
| 3614 | + "name": "Logements Horizon", | |
| 3615 | + "url": "https://logementshorizon.com", | |
| 3616 | + "listing_url": "https://logementshorizon.com/nos-condos/", | |
| 3617 | + "sectors": "Granby", | |
| 3618 | + "connector": null, | |
| 3619 | + "status": "non connectable — site vitrine WordPress sans annonces : la page nos-condos ne liste que des commodités, aucune unité, prix ni disponibilité publiés", | |
| 3620 | + "region": "Montérégie (Granby)" | |
| 3621 | + }, | |
| 3622 | + { | |
| 3623 | + "id": "loggia", | |
| 3624 | + "name": "Loggia Saint-Lambert", | |
| 3625 | + "url": "https://www.loggiasaintlambert.com", | |
| 3626 | + "listing_url": "https://www.loggiasaintlambert.com/le-projet/", | |
| 3627 | + "sectors": "Saint-Lambert (av. Saint-Charles, Loggia 1-2-3)", | |
| 3628 | + "connector": "loggia", | |
| 3629 | + "status": "actif", | |
| 3630 | + "region": "Montérégie" | |
| 3631 | + }, | |
| 3632 | + { | |
| 3633 | + "id": "logicom", | |
| 3634 | + "name": "Les Immeubles Logicom", | |
| 3635 | + "url": "https://immeubleslogicom.com", | |
| 3636 | + "listing_url": "https://immeubleslogicom.com/appartements-a-louer/", | |
| 3637 | + "sectors": "Québec (Sainte-Foy, Sillery, Cap-Rouge…) et Lévis", | |
| 3638 | + "connector": "logicom", | |
| 3639 | + "status": "actif", | |
| 3640 | + "region": "Québec" | |
| 3641 | + }, | |
| 3642 | + { | |
| 3643 | + "id": "logiluxx", | |
| 3644 | + "name": "Logiluxx (Investissements Cleary)", | |
| 3645 | + "url": "https://logiluxx.com", | |
| 3646 | + "listing_url": "https://logiluxx.com/sthubert/", | |
| 3647 | + "sectors": "Saint-Hubert/Longueuil (Faubourg Cousineau, 2 phases) et Boucherville — tout inclus LEED, 50 ans et mieux", | |
| 3648 | + "connector": "logiluxx", | |
| 3649 | + "status": "actif", | |
| 3650 | + "region": "Montérégie" | |
| 3651 | + }, | |
| 3652 | + { | |
| 3653 | + "id": "logispro_mauricie", | |
| 3654 | + "name": "LogisPro Mauricie", | |
| 3655 | + "url": "https://logispro.ca", | |
| 3656 | + "listing_url": "https://logispro.ca/appartements-a-louer/", | |
| 3657 | + "sectors": "Trois-Rivières, Cap-de-la-Madeleine, Shawinigan, Bécancour (Gentilly), Nicolet", | |
| 3658 | + "connector": "logispro_mauricie", | |
| 3659 | + "status": "actif", | |
| 3660 | + "region": "Mauricie" | |
| 3661 | + }, | |
| 3662 | + { | |
| 3663 | + "id": "lok36", | |
| 3664 | + "name": "LOK 36", | |
| 3665 | + "url": "https://www.lok36.com", | |
| 3666 | + "listing_url": "https://www.lok36.com/prix-plans/", | |
| 3667 | + "sectors": "Blainville (36, boulevard de la Seigneurie Ouest)", | |
| 3668 | + "connector": "lok36", | |
| 3669 | + "status": "actif", | |
| 3670 | + "region": "Laurentides" | |
| 3671 | + }, | |
| 3672 | + { | |
| 3673 | + "id": "louis_alexandre", | |
| 3674 | + "name": "Le Louis-Alexandre", | |
| 3675 | + "url": "https://condoslouisalexandre.ca", | |
| 3676 | + "listing_url": "https://condoslouisalexandre.ca/appartements-disponibles-longueuil/", | |
| 3677 | + "sectors": "Longueuil (Vieux-Longueuil)", | |
| 3678 | + "connector": "louis_alexandre", | |
| 3679 | + "status": "actif", | |
| 3680 | + "region": "Montérégie" | |
| 3681 | + }, | |
| 3682 | + { | |
| 3683 | + "id": "lsr", | |
| 3684 | + "name": "LSR GesDev — NOVIA (centre-ville Longueuil et Novia de la Gare Candiac)", | |
| 3685 | + "url": "https://www.lsrgesdev.ca", | |
| 3686 | + "listing_url": "https://lenovia.ca", | |
| 3687 | + "sectors": "Longueuil (NOVIA centre-ville, widget Livya), Candiac (Novia de la Gare, Planpoint)", | |
| 3688 | + "connector": "lsr", | |
| 3689 | + "status": "actif", | |
| 3690 | + "region": "Montérégie" | |
| 3691 | + }, | |
| 3692 | + { | |
| 3693 | + "id": "m3_laval", | |
| 3694 | + "name": "M3 Mirabel (condos locatifs)", | |
| 3695 | + "url": "https://www.m3mirabel.com", | |
| 3696 | + "listing_url": "https://www.m3mirabel.com/plans/", | |
| 3697 | + "sectors": "Mirabel", | |
| 3698 | + "connector": "m3_laval", | |
| 3699 | + "status": "actif", | |
| 3700 | + "region": "Laurentides" | |
| 3701 | + }, | |
| 3702 | + { | |
| 3703 | + "id": "marquise_8", | |
| 3704 | + "name": "Marquise 8", | |
| 3705 | + "url": "https://marquise8.com", | |
| 3706 | + "listing_url": "https://marquise8.com/#unite", | |
| 3707 | + "sectors": "Laval (Chomedey, 3641 av. Jean-Béraud — tout inclus)", | |
| 3708 | + "connector": "marquise_8", | |
| 3709 | + "status": "actif", | |
| 3710 | + "region": "Laval" | |
| 3711 | + }, | |
| 3712 | + { | |
| 3713 | + "id": "martin_roy", | |
| 3714 | + "name": "Construction Martin Roy", | |
| 3715 | + "url": "https://constructionmartinroy.com", | |
| 3716 | + "listing_url": "https://constructionmartinroy.com/logement-a-louer/", | |
| 3717 | + "sectors": "Saint-Georges (Beauce) — 18 adresses ; seules les unités non louées sont ingérées (inventaire complet loué au 2026-08-25)", | |
| 3718 | + "connector": "martin_roy", | |
| 3719 | + "status": "actif", | |
| 3720 | + "region": "Chaudière-Appalaches" | |
| 3721 | + }, | |
| 3722 | + { | |
| 3723 | + "id": "mercille", | |
| 3724 | + "name": "Groupe Mercille", | |
| 3725 | + "url": "https://groupemercille.com", | |
| 3726 | + "listing_url": "https://groupemercille.com/appartements-residentiels", | |
| 3727 | + "sectors": "Longueuil (secteur du métro : Le D'Assigny, Le Neuville, Le Sérigny)", | |
| 3728 | + "connector": "mercille", | |
| 3729 | + "status": "actif", | |
| 3730 | + "region": "Montérégie" | |
| 3731 | + }, | |
| 3732 | + { | |
| 3733 | + "id": "metropolis", | |
| 3734 | + "name": "Gestion Immobilière Metropolis", | |
| 3735 | + "url": "https://www.gestionmetropolis.ca", | |
| 3736 | + "listing_url": "https://www.gestionmetropolis.ca/fr/logements-a-louer/", | |
| 3737 | + "sectors": "Gatineau / Outaouais", | |
| 3738 | + "connector": null, | |
| 3739 | + "status": "non connectable — site vitrine sans annonces (location par téléphone/courriel seulement, aucun inventaire public)", | |
| 3740 | + "region": "Outaouais" | |
| 3741 | + }, | |
| 3742 | + { | |
| 3743 | + "id": "miner", | |
| 3744 | + "name": "Le Miner", | |
| 3745 | + "url": "https://leminer.ca", | |
| 3746 | + "listing_url": "https://leminer.ca/unites", | |
| 3747 | + "sectors": "Granby (354 rue Principale)", | |
| 3748 | + "connector": "miner", | |
| 3749 | + "status": "actif", | |
| 3750 | + "region": "Montérégie (Granby)" | |
| 3751 | + }, | |
| 3752 | + { | |
| 3753 | + "id": "morguard", | |
| 3754 | + "name": "Morguard (Morguard Living)", | |
| 3755 | + "url": "https://www.morguardliving.ca", | |
| 3756 | + "listing_url": "https://www.morguardliving.ca/residential", | |
| 3757 | + "sectors": "Montréal (centre-ville — Maisonneuve, Crescent, Mackay, des Pins), Dollard-des-Ormeaux, Côte-Saint-Luc, Pointe-Claire", | |
| 3758 | + "connector": "morguard", | |
| 3759 | + "status": "actif", | |
| 3760 | + "region": "Montréal" | |
| 3761 | + }, | |
| 3762 | + { | |
| 3763 | + "id": "mostra", | |
| 3764 | + "name": "Mostra (Cogir)", | |
| 3765 | + "url": "https://www.mostra.ca", | |
| 3766 | + "listing_url": "https://www.mostra.ca/fr/disponibilites-condo-longueuil.html", | |
| 3767 | + "sectors": "Longueuil, Candiac, Laval (Centropolis), Mascouche, Hochelaga-Maisonneuve", | |
| 3768 | + "connector": "mostra", | |
| 3769 | + "status": "actif", | |
| 3770 | + "region": "Montérégie / Laval / Lanaudière / Montréal" | |
| 3771 | + }, | |
| 3772 | + { | |
| 3773 | + "id": "mountbridge", | |
| 3774 | + "name": "MountBridge (incl. ELEVA)", | |
| 3775 | + "url": "https://mountbridge.ca", | |
| 3776 | + "listing_url": "https://mountbridge.ca/properties/", | |
| 3777 | + "sectors": "Montréal (Ahuntsic, Ville-Marie, Villeray…), Longueuil, Boisbriand, Sainte-Thérèse", | |
| 3778 | + "connector": "mountbridge", | |
| 3779 | + "status": "actif", | |
| 3780 | + "region": "Montréal" | |
| 3781 | + }, | |
| 3782 | + { | |
| 3783 | + "id": "nelson", | |
| 3784 | + "name": "Le Nelson", | |
| 3785 | + "url": "https://lenelson.com", | |
| 3786 | + "listing_url": "https://lenelson.com/appartements-a-louer/logements-a-louer-cowansville-premiere-etage", | |
| 3787 | + "sectors": "Cowansville (111 rue Jean-Besré)", | |
| 3788 | + "connector": "nelson", | |
| 3789 | + "status": "actif (0 annonce au test : 52 unités toutes louées)", | |
| 3790 | + "region": "Montérégie (Brome-Missisquoi)" | |
| 3791 | + }, | |
| 3792 | + { | |
| 3793 | + "id": "nexliving", | |
| 3794 | + "name": "NexLiving Communities (REIT)", | |
| 3795 | + "url": "https://residential.nexliving.ca", | |
| 3796 | + "listing_url": "https://residential.nexliving.ca/qc/gatineau/apartments", | |
| 3797 | + "sectors": "Gatineau (Pointe-Gatineau, Place du Golf, Saint-James, Prado, Nelson-Morin, Progrès, Futaie, Lanctot, JGR), Thurso (Fraser), Val-d'Or (Roland-Audet)", | |
| 3798 | + "connector": "nexliving", | |
| 3799 | + "status": "actif", | |
| 3800 | + "region": "Outaouais / Abitibi-Témiscamingue" | |
| 3801 | + }, | |
| 3802 | + { | |
| 3803 | + "id": "nomade", | |
| 3804 | + "name": "Nomade Gestion immobilière", | |
| 3805 | + "url": "https://nomadegestion.com", | |
| 3806 | + "listing_url": "https://nomadegestion.com/", | |
| 3807 | + "sectors": "Québec : Charlesbourg (Gros-Pin, Louis-XIV), Limoilou, Vanier, Val-Bélair, Neufchâtel — liste prix/disponibilités publiée en PDF Squarespace (lien découvert dynamiquement)", | |
| 3808 | + "connector": "nomade", | |
| 3809 | + "status": "actif", | |
| 3810 | + "region": "Québec" | |
| 3811 | + }, | |
| 3812 | + { | |
| 3813 | + "id": "novo_stjean", | |
| 3814 | + "name": "NOVO St-Jean (Atimco)", | |
| 3815 | + "url": "https://www.novostjean.com", | |
| 3816 | + "listing_url": "https://www.novostjean.com/", | |
| 3817 | + "sectors": "Saint-Jean-sur-Richelieu", | |
| 3818 | + "connector": "novo_stjean", | |
| 3819 | + "status": "actif", | |
| 3820 | + "region": "Montérégie" | |
| 3821 | + }, | |
| 3822 | + { | |
| 3823 | + "id": "obohec", | |
| 3824 | + "name": "O'bohec (Voyer & Tremblay)", | |
| 3825 | + "url": "https://obohec.ca", | |
| 3826 | + "listing_url": "https://obohec.ca/projets-locatifs/obohec/", | |
| 3827 | + "sectors": "Blainville (boulevard Michèle-Bohec — 3 immeubles)", | |
| 3828 | + "connector": "obohec", | |
| 3829 | + "status": "actif", | |
| 3830 | + "region": "Laurentides" | |
| 3831 | + }, | |
| 3832 | + { | |
| 3833 | + "id": "ocartier", | |
| 3834 | + "name": "OCartier (phase 2)", | |
| 3835 | + "url": "https://ocartier.ca", | |
| 3836 | + "listing_url": "https://ocartier.ca/plans/", | |
| 3837 | + "sectors": "Laval (Pont-Viau, 30 rue St-Hubert)", | |
| 3838 | + "connector": "ocartier", | |
| 3839 | + "status": "actif", | |
| 3840 | + "region": "Laval" | |
| 3841 | + }, | |
| 3842 | + { | |
| 3843 | + "id": "omhq", | |
| 3844 | + "name": "OMHQ — Office municipal d'habitation de Québec (parc non subventionné)", | |
| 3845 | + "url": "https://www.omhq.qc.ca", | |
| 3846 | + "listing_url": "https://www.omhq.qc.ca/liste", | |
| 3847 | + "sectors": "Québec (tous quartiers)", | |
| 3848 | + "connector": null, | |
| 3849 | + "status": "non connectable — /liste est un annuaire Joomla (COGIWEB fwrerealtor) du parc immobilier COOP/OBNL : fiches d'immeubles avec composition des logements, mais aucune annonce de location (ni disponibilité, ni prix, ni unité offerte)", | |
| 3850 | + "region": "Québec" | |
| 3851 | + }, | |
| 3852 | + { | |
| 3853 | + "id": "org_dupuis", | |
| 3854 | + "name": "Organisation Dupuis", | |
| 3855 | + "url": "https://www.organisationdupuis.ca", | |
| 3856 | + "listing_url": "https://locationorganisationdupuis.bstk.io/Listing/Listings", | |
| 3857 | + "sectors": "Granby, Bromont, Waterloo, Sherbrooke, Terrebonne, L'Assomption, Bécancour, Sorel-Tracy, Trois-Rivières, Victoriaville (Edmundston N.-B. exclu)", | |
| 3858 | + "connector": "org_dupuis", | |
| 3859 | + "status": "actif", | |
| 3860 | + "region": "Montérégie / Estrie / multi-régions" | |
| 3861 | + }, | |
| 3862 | + { | |
| 3863 | + "id": "pentagones", | |
| 3864 | + "name": "Les Pentagones", | |
| 3865 | + "url": "https://pentagones.ca", | |
| 3866 | + "listing_url": "https://pentagones.ca/immeubles-residentiels/", | |
| 3867 | + "sectors": "Québec", | |
| 3868 | + "connector": null, | |
| 3869 | + "status": "non connectable — fiches d'immeubles sans annonces ni prix/dispo (locations via Tri-Logis, déjà connecté)", | |
| 3870 | + "region": "Capitale-Nationale" | |
| 3871 | + }, | |
| 3872 | + { | |
| 3873 | + "id": "phg", | |
| 3874 | + "name": "Habitations PHG", | |
| 3875 | + "url": "https://habitationsphg.com", | |
| 3876 | + "listing_url": "https://app.livya.com/habitations-phg", | |
| 3877 | + "sectors": "Deux-Montagnes et environs (portefeuille Livya)", | |
| 3878 | + "connector": "phg", | |
| 3879 | + "status": "actif", | |
| 3880 | + "region": "Laurentides" | |
| 3881 | + }, | |
| 3882 | + { | |
| 3883 | + "id": "place_barrage", | |
| 3884 | + "name": "Place du Barrage", | |
| 3885 | + "url": "https://www.placedubarrage.com", | |
| 3886 | + "listing_url": "https://www.placedubarrage.com/appartements", | |
| 3887 | + "sectors": "Windsor (2 rue Vertu)", | |
| 3888 | + "connector": "place_barrage", | |
| 3889 | + "status": "actif", | |
| 3890 | + "region": "Estrie" | |
| 3891 | + }, | |
| 3892 | + { | |
| 3893 | + "id": "plantation", | |
| 3894 | + "name": "Domaine de la Plantation", | |
| 3895 | + "url": "https://www.domainedelaplantation.ca", | |
| 3896 | + "listing_url": "https://www.domainedelaplantation.ca/", | |
| 3897 | + "sectors": "Shawinigan (Saint-Georges-de-Champlain)", | |
| 3898 | + "connector": "plantation", | |
| 3899 | + "status": "actif", | |
| 3900 | + "region": "Mauricie" | |
| 3901 | + }, | |
| 3902 | + { | |
| 3903 | + "id": "port_de_mer", | |
| 3904 | + "name": "Port de Mer", | |
| 3905 | + "url": "https://portdemer.ca", | |
| 3906 | + "listing_url": "https://portdemer.ca/fr/accueil", | |
| 3907 | + "sectors": "Longueuil (Place Charles-LeMoyne, face au métro) — 389 unités", | |
| 3908 | + "connector": "port_de_mer", | |
| 3909 | + "status": "actif", | |
| 3910 | + "region": "Montérégie" | |
| 3911 | + }, | |
| 3912 | + { | |
| 3913 | + "id": "primo", | |
| 3914 | + "name": "Primo Immobilier — Lumicité Condominiums et Quartier Trinité", | |
| 3915 | + "url": "https://primoimmobilier.ca", | |
| 3916 | + "listing_url": "https://primoimmobilier.ca", | |
| 3917 | + "sectors": "Saint-Mathieu-de-Beloeil (Lumicité Condominiums), Saint-Basile-le-Grand (Quartier Trinité) — condos locatifs de luxe, granularité projet (prix « à partir de »)", | |
| 3918 | + "connector": "primo", | |
| 3919 | + "status": "actif", | |
| 3920 | + "region": "Montérégie" | |
| 3921 | + }, | |
| 3922 | + { | |
| 3923 | + "id": "pro_urbain", | |
| 3924 | + "name": "Gestion Pro-Urbain", | |
| 3925 | + "url": "https://gestionpro-urbain.com", | |
| 3926 | + "listing_url": "https://gestionpro-urbain.com/fr/proprietes", | |
| 3927 | + "sectors": "Charlemagne, Repentigny, Berthierville, Saint-Paul, Saint-Jacques, Saint-Ambroise-de-Kildare, Saint-Charles-Borromée", | |
| 3928 | + "connector": "pro_urbain", | |
| 3929 | + "status": "actif", | |
| 3930 | + "region": "Lanaudière" | |
| 3931 | + }, | |
| 3932 | + { | |
| 3933 | + "id": "probloc", | |
| 3934 | + "name": "Probloc CL inc.", | |
| 3935 | + "url": "https://peweb.magextechnologies.com/RentalListings/Ffllf1/Probloc-Cl-Inc", | |
| 3936 | + "listing_url": "https://peweb.magextechnologies.com/RentalListings/Ffllf1/Probloc-Cl-Inc", | |
| 3937 | + "sectors": "Bécancour (Gentilly et autres secteurs)", | |
| 3938 | + "connector": "probloc", | |
| 3939 | + "status": "actif", | |
| 3940 | + "region": "Centre-du-Québec" | |
| 3941 | + }, | |
| 3942 | + { | |
| 3943 | + "id": "prona", | |
| 3944 | + "name": "Gestion Prona", | |
| 3945 | + "url": "https://gestionprona.ca", | |
| 3946 | + "listing_url": "https://gestionprona.ca/properties/", | |
| 3947 | + "sectors": "Cowansville, Saint-Jean-sur-Richelieu, Saint-Hubert, Candiac, Saint-Hyacinthe, Montréal, Québec, Lévis, Blainville", | |
| 3948 | + "connector": "prona", | |
| 3949 | + "status": "actif", | |
| 3950 | + "region": "Montérégie" | |
| 3951 | + }, | |
| 3952 | + { | |
| 3953 | + "id": "quartier_7", | |
| 3954 | + "name": "Quartier 7 (condos locatifs, avenue de la Gare)", | |
| 3955 | + "url": "https://quartier7mascouche.com", | |
| 3956 | + "listing_url": "https://quartier7mascouche.com/condos-neufs-a-louer-mascouche/", | |
| 3957 | + "sectors": "Mascouche", | |
| 3958 | + "connector": "quartier_7", | |
| 3959 | + "status": "actif", | |
| 3960 | + "region": "Lanaudière" | |
| 3961 | + }, | |
| 3962 | + { | |
| 3963 | + "id": "quartier_horizon", | |
| 3964 | + "name": "Quartier Horizon", | |
| 3965 | + "url": "https://quartierhorizon.com", | |
| 3966 | + "listing_url": "https://quartierhorizon.com/plans/", | |
| 3967 | + "sectors": "Lévis (Saint-Jean-Chrysostome) — 1802, rue des Fines-Herbes ; unités data-etat=disponible seulement", | |
| 3968 | + "connector": "quartier_horizon", | |
| 3969 | + "status": "actif", | |
| 3970 | + "region": "Québec" | |
| 3971 | + }, | |
| 3972 | + { | |
| 3973 | + "id": "rakotta", | |
| 3974 | + "name": "Rakotta Real Estate (Dorchester, Gramercy, Le 2100)", | |
| 3975 | + "url": "https://www.rakotta.com", | |
| 3976 | + "listing_url": "https://www.rakotta.com/properties", | |
| 3977 | + "sectors": "Montréal (Centre-ville — René-Lévesque O., Sherbrooke O., de Maisonneuve O.) ; baux 12 mois seulement (meublé flexible 1-11 mois exclu)", | |
| 3978 | + "connector": "rakotta", | |
| 3979 | + "status": "actif", | |
| 3980 | + "region": "Montréal" | |
| 3981 | + }, | |
| 3982 | + { | |
| 3983 | + "id": "res_cogir", | |
| 3984 | + "name": "Résidences Cogir (RPA)", | |
| 3985 | + "url": "https://residencescogir.com", | |
| 3986 | + "listing_url": "https://residencescogir.com/trouver-une-residence", | |
| 3987 | + "sectors": "85 résidences pour aînés (RPA) au Québec — Jazz, ex-Sélection, Villa… (Montréal, Québec, Lévis, Laval, Rive-Sud, Outaouais, Saguenay, Abitibi, Bas-St-Laurent…)", | |
| 3988 | + "connector": "res_cogir", | |
| 3989 | + "status": "actif", | |
| 3990 | + "region": "Province" | |
| 3991 | + }, | |
| 3992 | + { | |
| 3993 | + "id": "res_soleil", | |
| 3994 | + "name": "Les Résidences Soleil", | |
| 3995 | + "url": "https://residencessoleil.ca", | |
| 3996 | + "listing_url": "https://residencessoleil.ca/nos-residences/", | |
| 3997 | + "sectors": "15 manoirs pour aînés (Groupe Savoie) — Montréal, Laval, Brossard, Boucherville, Sainte-Julie, Mont-St-Hilaire, Sorel, Granby, Sherbrooke, Pointe-aux-Trembles…", | |
| 3998 | + "connector": "res_soleil", | |
| 3999 | + "status": "actif", | |
| 4000 | + "region": "Province" | |
| 4001 | + }, | |
| 4002 | + { | |
| 4003 | + "id": "royal_laval", | |
| 4004 | + "name": "Gestion Immobilière Royal", | |
| 4005 | + "url": "https://gestionroyal.com", | |
| 4006 | + "listing_url": "https://gestionroyal.com/a-louer/", | |
| 4007 | + "sectors": "Laval (Laval-des-Rapides) et Montréal", | |
| 4008 | + "connector": "royal_laval", | |
| 4009 | + "status": "actif", | |
| 4010 | + "region": "Laval" | |
| 4011 | + }, | |
| 4012 | + { | |
| 4013 | + "id": "saint_michel", | |
| 4014 | + "name": "Le Saint-Michel", | |
| 4015 | + "url": "https://lesaintmichel.ca", | |
| 4016 | + "listing_url": "https://lesaintmichel.ca/appartements/", | |
| 4017 | + "sectors": "Montréal-Nord (3250, boul. Henri-Bourassa Est)", | |
| 4018 | + "connector": "saint_michel", | |
| 4019 | + "status": "actif", | |
| 4020 | + "region": "Montréal" | |
| 4021 | + }, | |
| 4022 | + { | |
| 4023 | + "id": "samcon", | |
| 4024 | + "name": "Samcon (condos locatifs)", | |
| 4025 | + "url": "https://www.samcon.ca", | |
| 4026 | + "listing_url": "https://www.samcon.ca/projects-for-rent/", | |
| 4027 | + "sectors": "Montréal (Terrasse Boyer, Place Lajeunesse, Promenade des Ormeaux, Place du Quesne)", | |
| 4028 | + "connector": "samcon", | |
| 4029 | + "status": "actif", | |
| 4030 | + "region": "Montréal" | |
| 4031 | + }, | |
| 4032 | + { | |
| 4033 | + "id": "san_leon", | |
| 4034 | + "name": "San Leon (phases 4-5)", | |
| 4035 | + "url": "https://sanleon.ca", | |
| 4036 | + "listing_url": "https://app.planpoint.io/api/groups/find", | |
| 4037 | + "sectors": "Boisbriand (Faubourg Boisbriand — 3230, avenue des Grandes Tourelles)", | |
| 4038 | + "connector": "san_leon", | |
| 4039 | + "status": "actif", | |
| 4040 | + "region": "Laurentides" | |
| 4041 | + }, | |
| 4042 | + { | |
| 4043 | + "id": "saro", | |
| 4044 | + "name": "Les Constructions Saro", | |
| 4045 | + "url": "https://constructionsaro.com", | |
| 4046 | + "listing_url": "https://constructionsaro.com/Default.aspx", | |
| 4047 | + "sectors": "Saint-Hubert (Longueuil, parc de la Cité) — 3½ à 7½ haut de gamme, 50 ans et plus", | |
| 4048 | + "connector": "saro", | |
| 4049 | + "status": "actif", | |
| 4050 | + "region": "Montérégie" | |
| 4051 | + }, | |
| 4052 | + { | |
| 4053 | + "id": "sept_elements", | |
| 4054 | + "name": "Les 7 Éléments (Propriétés Mach)", | |
| 4055 | + "url": "https://www.condoles7elements.com", | |
| 4056 | + "listing_url": "https://www.condoles7elements.com/", | |
| 4057 | + "sectors": "Québec (Lebourgneuf) — 1998, rue Marie-Anne-Gaudreau ; plateforme Vortex, superficies extraites des plans PDF, pas de prix affiché", | |
| 4058 | + "connector": "sept_elements", | |
| 4059 | + "status": "actif", | |
| 4060 | + "region": "Québec" | |
| 4061 | + }, | |
| 4062 | + { | |
| 4063 | + "id": "serra", | |
| 4064 | + "name": "SERRA Montréal (1124 De Bleury)", | |
| 4065 | + "url": "https://www.serramtl.com", | |
| 4066 | + "listing_url": "https://www.serramtl.com/availabilities", | |
| 4067 | + "sectors": "Montréal (Ville-Marie — centre-ville, 1124 rue De Bleury)", | |
| 4068 | + "connector": "serra", | |
| 4069 | + "status": "actif", | |
| 4070 | + "region": "Montréal" | |
| 4071 | + }, | |
| 4072 | + { | |
| 4073 | + "id": "sherplex", | |
| 4074 | + "name": "Sherplex immobilier", | |
| 4075 | + "url": "https://www.appartementssherbrooke.com", | |
| 4076 | + "listing_url": "https://www.appartementssherbrooke.com/appartements-a-louer-en-estrie", | |
| 4077 | + "sectors": "Weedon, Coaticook, Magog, Saint-François-Xavier-de-Brompton, Saint-Denis-de-Brompton", | |
| 4078 | + "connector": "sherplex", | |
| 4079 | + "status": "actif", | |
| 4080 | + "region": "Estrie" | |
| 4081 | + }, | |
| 4082 | + { | |
| 4083 | + "id": "signature_bois_franc", | |
| 4084 | + "name": "Signature Bois-Franc — condos locatifs", | |
| 4085 | + "url": "https://location.signatureboisfranc.com", | |
| 4086 | + "listing_url": "https://location.signatureboisfranc.com/unites-disponibles/", | |
| 4087 | + "sectors": "Montréal (Saint-Laurent — Bois-Franc)", | |
| 4088 | + "connector": "signature_bois_franc", | |
| 4089 | + "status": "actif", | |
| 4090 | + "region": "Montréal" | |
| 4091 | + }, | |
| 4092 | + { | |
| 4093 | + "id": "signature_boisbriand", | |
| 4094 | + "name": "Signature Boisbriand", | |
| 4095 | + "url": "https://signatureboisbriand.com", | |
| 4096 | + "listing_url": "https://signatureboisbriand.com/unites-disponibles/", | |
| 4097 | + "sectors": "Boisbriand (Faubourg Boisbriand — 1040-1050, rue des Francs-Bourgeois)", | |
| 4098 | + "connector": "signature_boisbriand", | |
| 4099 | + "status": "actif", | |
| 4100 | + "region": "Laurentides" | |
| 4101 | + }, | |
| 4102 | + { | |
| 4103 | + "id": "skyline", | |
| 4104 | + "name": "Skyline Living (REIT pancanadien)", | |
| 4105 | + "url": "https://www.skylineliving.ca", | |
| 4106 | + "listing_url": "https://www.skylineliving.ca/en/apartments-for-rent", | |
| 4107 | + "sectors": "—", | |
| 4108 | + "connector": null, | |
| 4109 | + "status": "non connectable — REIT pancanadien, aucun immeuble au Québec (API Rentsync vérifiée : 0 propriété QC)", | |
| 4110 | + "region": "—" | |
| 4111 | + }, | |
| 4112 | + { | |
| 4113 | + "id": "sofia", | |
| 4114 | + "name": "Le Sofia — Groupe Lacombe (Varennes)", | |
| 4115 | + "url": "https://sofiavarennes.com", | |
| 4116 | + "listing_url": "https://sofiavarennes.com/plans.php", | |
| 4117 | + "sectors": "Varennes (1845, rue du Souvenir — 48 condos locatifs face au fleuve)", | |
| 4118 | + "connector": "sofia", | |
| 4119 | + "status": "actif", | |
| 4120 | + "region": "Montérégie" | |
| 4121 | + }, | |
| 4122 | + { | |
| 4123 | + "id": "solaris", | |
| 4124 | + "name": "Solaris Boisbriand", | |
| 4125 | + "url": "https://www.solarisboisbriand.com", | |
| 4126 | + "listing_url": "https://www.solarisboisbriand.com/plans", | |
| 4127 | + "sectors": "Boisbriand (Faubourg Boisbriand — 1030, rue des Francs-Bourgeois)", | |
| 4128 | + "connector": "solaris", | |
| 4129 | + "status": "actif", | |
| 4130 | + "region": "Laurentides" | |
| 4131 | + }, | |
| 4132 | + { | |
| 4133 | + "id": "solis_levis", | |
| 4134 | + "name": "Solis Lévis", | |
| 4135 | + "url": "https://solislevis.com", | |
| 4136 | + "listing_url": "https://solislevis.com/appartements-retraites-autonomes/", | |
| 4137 | + "sectors": "Lévis (RPA 55+ autonomes — studios, 3½, 4½, rue Weyman)", | |
| 4138 | + "connector": "solis_levis", | |
| 4139 | + "status": "actif", | |
| 4140 | + "region": "Québec" | |
| 4141 | + }, | |
| 4142 | + { | |
| 4143 | + "id": "sotramont", | |
| 4144 | + "name": "Sotramont (Liveo / Curtiss)", | |
| 4145 | + "url": "https://sotramont.com", | |
| 4146 | + "listing_url": "https://sotramont.com/projets-maison-ville-condo-vendre-louer/?category=locatifs", | |
| 4147 | + "sectors": "Pointe-Claire (Liveo Greenwich 1-2-3), Mascouche (Liveo 1-2), Repentigny (Liveo 1-2), Saint-Laurent (Curtiss Charlie, Bois-Franc)", | |
| 4148 | + "connector": "sotramont", | |
| 4149 | + "status": "actif", | |
| 4150 | + "region": "Montréal / Lanaudière" | |
| 4151 | + }, | |
| 4152 | + { | |
| 4153 | + "id": "sovima", | |
| 4154 | + "name": "Sovima Habitation — AlterEGO, Le Nest, Quartier Vauquelin, Le Neuf Cent", | |
| 4155 | + "url": "https://www.sovimahabitation.com", | |
| 4156 | + "listing_url": "https://www.sovimahabitation.com", | |
| 4157 | + "sectors": "Brossard (AlterEGO sur le fleuve), Saint-Bruno-de-Montarville (Le Nest), Longueuil (Quartier Vauquelin 2), Repentigny (Le Neuf Cent Notre-Dame)", | |
| 4158 | + "connector": "sovima", | |
| 4159 | + "status": "actif", | |
| 4160 | + "region": "Montérégie" | |
| 4161 | + }, | |
| 4162 | + { | |
| 4163 | + "id": "sphere", | |
| 4164 | + "name": "Sphère immobilier", | |
| 4165 | + "url": "https://sphereimmobilier.com", | |
| 4166 | + "listing_url": "https://sphereimmobilier.com/", | |
| 4167 | + "sectors": "Sherbrooke et environs", | |
| 4168 | + "connector": null, | |
| 4169 | + "status": "non connectable — portfolio Elementor vitrine : descriptions de projets seulement, aucune unité ni prix ni disponibilité (projet Papetiers prévu automne 2026)", | |
| 4170 | + "region": "Estrie" | |
| 4171 | + }, | |
| 4172 | + { | |
| 4173 | + "id": "square_philippe", | |
| 4174 | + "name": "Square Philippe", | |
| 4175 | + "url": "https://squarephilippe.com", | |
| 4176 | + "listing_url": "https://squarephilippe.com/a-louer/unites/", | |
| 4177 | + "sectors": "Gatineau", | |
| 4178 | + "connector": "square_philippe", | |
| 4179 | + "status": "actif", | |
| 4180 | + "region": "Outaouais" | |
| 4181 | + }, | |
| 4182 | + { | |
| 4183 | + "id": "st_charles_granby", | |
| 4184 | + "name": "Le St-Charles", | |
| 4185 | + "url": "https://www.stcharlesgranby.com", | |
| 4186 | + "listing_url": "https://www.stcharlesgranby.com/", | |
| 4187 | + "sectors": "Granby (41 rue Saint-Charles Nord)", | |
| 4188 | + "connector": "st_charles_granby", | |
| 4189 | + "status": "actif", | |
| 4190 | + "region": "Montérégie (Granby)" | |
| 4191 | + }, | |
| 4192 | + { | |
| 4193 | + "id": "station_g", | |
| 4194 | + "name": "Station G appartements locatifs (Cogir)", | |
| 4195 | + "url": "https://stationglocatifs.com", | |
| 4196 | + "listing_url": "https://stationglocatifs.com/plans/", | |
| 4197 | + "sectors": "Mascouche", | |
| 4198 | + "connector": null, | |
| 4199 | + "status": "non connectable — doublon : immeuble Cogir déjà couvert par le connecteur cogir (cogir.net/immeuble-residentiel-mascouche/2685-station-g.html)", | |
| 4200 | + "region": "Lanaudière" | |
| 4201 | + }, | |
| 4202 | + { | |
| 4203 | + "id": "station_horizon", | |
| 4204 | + "name": "Station Horizon", | |
| 4205 | + "url": "https://stationhorizon.com", | |
| 4206 | + "listing_url": "https://stationhorizon.com/plans-des-unites-phase-1/", | |
| 4207 | + "sectors": "Mont-Saint-Hilaire (Village de la Gare)", | |
| 4208 | + "connector": "station_horizon", | |
| 4209 | + "status": "actif", | |
| 4210 | + "region": "Montérégie" | |
| 4211 | + }, | |
| 4212 | + { | |
| 4213 | + "id": "summit", | |
| 4214 | + "name": "Summit Property Management", | |
| 4215 | + "url": "https://www.summitmanagement.ca", | |
| 4216 | + "listing_url": "https://www.summitmanagement.ca/apartments", | |
| 4217 | + "sectors": "Montréal (Le Triangle/CDN — Vue 5-6-7, centre-ville — LIV, IVY, Le V, Le Duke, Skyla, Le 400 Sherbrooke O., RIVA, Allegra)", | |
| 4218 | + "connector": "summit", | |
| 4219 | + "status": "actif", | |
| 4220 | + "region": "Montréal" | |
| 4221 | + }, | |
| 4222 | + { | |
| 4223 | + "id": "symbio", | |
| 4224 | + "name": "Symbio (Développement FTG / Claridge)", | |
| 4225 | + "url": "https://symbiohabitat.ca", | |
| 4226 | + "listing_url": "https://symbiohabitat.ca/appartements/", | |
| 4227 | + "sectors": "Terrebonne — Lachenaie (1475 rue Yves-Blais, 219 unités)", | |
| 4228 | + "connector": "symbio", | |
| 4229 | + "status": "actif", | |
| 4230 | + "region": "Lanaudière" | |
| 4231 | + }, | |
| 4232 | + { | |
| 4233 | + "id": "terrasse_pionniers", | |
| 4234 | + "name": "Terrasse des Pionniers (appartements neufs)", | |
| 4235 | + "url": "https://terrassedespionniers.ca", | |
| 4236 | + "listing_url": "https://terrassedespionniers.ca/#nos-logements", | |
| 4237 | + "sectors": "Mont-Blanc", | |
| 4238 | + "connector": "terrasse_pionniers", | |
| 4239 | + "status": "actif", | |
| 4240 | + "region": "Laurentides" | |
| 4241 | + }, | |
| 4242 | + { | |
| 4243 | + "id": "tour_fides", | |
| 4244 | + "name": "La Tour Fides", | |
| 4245 | + "url": "https://latourfides.com", | |
| 4246 | + "listing_url": "https://latourfides.securecafe.com/onlineleasing/la-tour-fides/floorplans.aspx?nocache=-1", | |
| 4247 | + "sectors": "Montréal (Ville-Marie — 235 boul. René-Lévesque Est, 290 unités)", | |
| 4248 | + "connector": "tour_fides", | |
| 4249 | + "status": "actif", | |
| 4250 | + "region": "Montréal" | |
| 4251 | + }, | |
| 4252 | + { | |
| 4253 | + "id": "tours_st_martin", | |
| 4254 | + "name": "Les Tours Saint-Martin", | |
| 4255 | + "url": "https://lestourssaintmartin.ca", | |
| 4256 | + "listing_url": "https://lestourssaintmartin.ca/plans/", | |
| 4257 | + "sectors": "Laval (Chomedey — 2976, boulevard Saint-Martin Ouest, phases 1 et 2)", | |
| 4258 | + "connector": "tours_st_martin", | |
| 4259 | + "status": "actif", | |
| 4260 | + "region": "Laval" | |
| 4261 | + }, | |
| 4262 | + { | |
| 4263 | + "id": "trams", | |
| 4264 | + "name": "T.R.A.M.S Property Management", | |
| 4265 | + "url": "https://tramsmgmt.com", | |
| 4266 | + "listing_url": "https://tramsmgmt.com/residential-properties-for-rent/", | |
| 4267 | + "sectors": "Kirkland (Chateau Ste-Marie), Dollard-des-Ormeaux (L'Ambiance Ouest), Anjou (Palacio D'Anjou)", | |
| 4268 | + "connector": "trams", | |
| 4269 | + "status": "actif", | |
| 4270 | + "region": "Montréal" | |
| 4271 | + }, | |
| 4272 | + { | |
| 4273 | + "id": "treana", | |
| 4274 | + "name": "TREANA", | |
| 4275 | + "url": "https://treana.ca", | |
| 4276 | + "listing_url": "https://treana.ca/saint-jean-sur-richelieu/", | |
| 4277 | + "sectors": "Saint-Jean-sur-Richelieu, Sainte-Catherine, Venise-en-Québec", | |
| 4278 | + "connector": "treana", | |
| 4279 | + "status": "actif", | |
| 4280 | + "region": "Montérégie" | |
| 4281 | + }, | |
| 4282 | + { | |
| 4283 | + "id": "trouve_ton_appart", | |
| 4284 | + "name": "Trouve Ton Appart (Construction Léandre Demers)", | |
| 4285 | + "url": "https://www.trouve-ton-appart.com", | |
| 4286 | + "listing_url": "https://www.trouve-ton-appart.com/logements/", | |
| 4287 | + "sectors": "Beauce et Lotbinière : Sainte-Marie, Saint-Agapit, Saint-Apollinaire, Saint-Flavien — seules les unités disponibles (pastille verte) sont ingérées", | |
| 4288 | + "connector": "trouve_ton_appart", | |
| 4289 | + "status": "actif", | |
| 4290 | + "region": "Chaudière-Appalaches" | |
| 4291 | + }, | |
| 4292 | + { | |
| 4293 | + "id": "uneo", | |
| 4294 | + "name": "Unéo Gestion Immobilière", | |
| 4295 | + "url": "https://uneo.ca", | |
| 4296 | + "listing_url": "https://uneo.ca/projets", | |
| 4297 | + "sectors": "Saint-Jean-sur-Richelieu (Les Loiselle), Saint-Hyacinthe (Habitations sur le Vert), Otterburn Park (Carré Louis-Lévesque)", | |
| 4298 | + "connector": "uneo", | |
| 4299 | + "status": "actif", | |
| 4300 | + "region": "Montérégie" | |
| 4301 | + }, | |
| 4302 | + { | |
| 4303 | + "id": "vallem", | |
| 4304 | + "name": "Vallem — quartier Lumicité (Saint-Mathieu-de-Beloeil)", | |
| 4305 | + "url": "https://vallem.ca", | |
| 4306 | + "listing_url": "https://vallem.ca/plans/", | |
| 4307 | + "sectors": "Saint-Mathieu-de-Beloeil (4605, chemin du Crépuscule — condos locatifs + marché d'alimentation)", | |
| 4308 | + "connector": "vallem", | |
| 4309 | + "status": "actif", | |
| 4310 | + "region": "Montérégie" | |
| 4311 | + }, | |
| 4312 | + { | |
| 4313 | + "id": "vallensis", | |
| 4314 | + "name": "Vallensis", | |
| 4315 | + "url": "https://vallensis.ca", | |
| 4316 | + "listing_url": "https://vallensis.ca/", | |
| 4317 | + "sectors": "Salaberry-de-Valleyfield (503 rue Jacques-Cartier)", | |
| 4318 | + "connector": "vallensis", | |
| 4319 | + "status": "actif", | |
| 4320 | + "region": "Montérégie" | |
| 4321 | + }, | |
| 4322 | + { | |
| 4323 | + "id": "vestric", | |
| 4324 | + "name": "Vestric — Condos locatifs", | |
| 4325 | + "url": "https://vestric.ca", | |
| 4326 | + "listing_url": "https://vestric.ca/les-unites", | |
| 4327 | + "sectors": "Candiac (200 av. des Chênes)", | |
| 4328 | + "connector": "vestric", | |
| 4329 | + "status": "actif", | |
| 4330 | + "region": "Montérégie" | |
| 4331 | + }, | |
| 4332 | + { | |
| 4333 | + "id": "vi_laval", | |
| 4334 | + "name": "Vï Condos Locatifs (Danam Lacourse)", | |
| 4335 | + "url": "https://www.vicondoslocatifs.com", | |
| 4336 | + "listing_url": "https://www.vicondoslocatifs.com/vi-terrebonne/", | |
| 4337 | + "sectors": "Terrebonne/Urbanova (225 carré Denise-Pelletier), Mascouche (1505 place de l'Esplanade)", | |
| 4338 | + "connector": "vi_laval", | |
| 4339 | + "status": "actif", | |
| 4340 | + "region": "Lanaudière" | |
| 4341 | + }, | |
| 4342 | + { | |
| 4343 | + "id": "vision_immo", | |
| 4344 | + "name": "Vision Immo", | |
| 4345 | + "url": "https://visionimmo.com", | |
| 4346 | + "listing_url": "https://visionimmo.com/logements-a-louer/", | |
| 4347 | + "sectors": "Montréal (Lachine, Saint-Henri), Terrebonne (Urbanova), Longueuil — condos locatifs neufs", | |
| 4348 | + "connector": "vision_immo", | |
| 4349 | + "status": "actif", | |
| 4350 | + "region": "Montréal" | |
| 4351 | + }, | |
| 4352 | + { | |
| 4353 | + "id": "vita_stl", | |
| 4354 | + "name": "Appartements VITA", | |
| 4355 | + "url": "https://appartementsvita.ca", | |
| 4356 | + "listing_url": "https://appartementsvita.ca/", | |
| 4357 | + "sectors": "Saint-Laurent (2505, boul. Marcel-Laurin — 2 phases, REM Bois-Franc)", | |
| 4358 | + "connector": "vita_stl", | |
| 4359 | + "status": "actif", | |
| 4360 | + "region": "Montréal" | |
| 4361 | + }, | |
| 4362 | + { | |
| 4363 | + "id": "viventi", | |
| 4364 | + "name": "Viventi", | |
| 4365 | + "url": "https://viventilaval.com", | |
| 4366 | + "listing_url": "https://viventilaval.com/nos-unites/", | |
| 4367 | + "sectors": "Laval (Saint-Vincent-de-Paul, 1100 boul. Vanier — 50 ans et plus)", | |
| 4368 | + "connector": "viventi", | |
| 4369 | + "status": "actif", | |
| 4370 | + "region": "Laval" | |
| 4371 | + }, | |
| 4372 | + { | |
| 4373 | + "id": "voltige", | |
| 4374 | + "name": "Le Voltige (DevImmo — Hélia, Belvédère, Aria, Panora)", | |
| 4375 | + "url": "https://voltigemtl.ca", | |
| 4376 | + "listing_url": "https://voltigemtl.ca/plans/", | |
| 4377 | + "sectors": "Montréal (Ahuntsic — Marché Central / Sauvé Ouest)", | |
| 4378 | + "connector": "voltige", | |
| 4379 | + "status": "actif", | |
| 4380 | + "region": "Montréal" | |
| 4381 | + }, | |
| 4382 | + { | |
| 4383 | + "id": "westwalk", | |
| 4384 | + "name": "Westwalk DDO", | |
| 4385 | + "url": "https://westwalk.ca", | |
| 4386 | + "listing_url": "https://westwalk.ca/en/apartments-for-rent-dollard-des-ormeaux/", | |
| 4387 | + "sectors": "Dollard-des-Ormeaux (West-Island)", | |
| 4388 | + "connector": "westwalk", | |
| 4389 | + "status": "actif", | |
| 4390 | + "region": "Montréal" | |
| 2811 | 4391 | } |
| 2812 | 4392 | ] |
| 2813 | 4393 | } |
modified
docs/connecteurs/INDEX.md
+376 −218
@@ -1,229 +1,378 @@ | ||
| 1 | 1 | # Lou-Ka — Index des connecteurs |
| 2 | 2 | |
| 3 | −_Généré automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Généré automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**218 connecteurs documentés** (216 activés, 2 désactivés) · **60633 annonces actives** au total · registre : 281 entrées. | |
| 5 | +**367 connecteurs documentés** (365 activés, 2 désactivés) · **64639 annonces actives** au total · registre : 439 entrées. | |
| 6 | 6 | |
| 7 | 7 | | Connecteur | Nom | Région | Type d'accès | Backend | Actives/Total | GPS | Prix | Photos | État | Dernier sync OK | |
| 8 | 8 | |---|---|---|---|---|---|---|---|---|---|---| |
| 9 | −| [`aalto`](aalto.md) | Aalto Suites (Zibi / Dream) | Outaouais | API JSON interne du site | direct | 24/35 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:44 | | |
| 10 | −| [`acceslogis_gb`](acceslogis_gb.md) | Accès Logis GB | Lanaudière / Mauric… | pages HTML (rendu serveur) | direct | 10/11 | 20 % | 100 % | 100 % | actif | 2026-08-22 17:44 | | |
| 11 | −| [`agence_sherbrooke`](agence_sherbrooke.md) | Agence de location Sherbrooke (groupe P… | Estrie | sitemap XML + pages HTML | direct | 13/19 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:44 | | |
| 12 | −| [`akelius`](akelius.md) | Akelius Montréal | Montréal | pages HTML (rendu serveur) | direct | 231/302 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:44 | | |
| 13 | −| [`alexcellence`](alexcellence.md) | Immeubles Alexcellence | Estrie | pages HTML (rendu serveur) | direct | 6/6 | 50 % | 100 % | 100 % | actif | 2026-08-22 17:44 | | |
| 14 | −| [`alias_appartements`](alias_appartements.md) | Alias Appartements | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:44 | | |
| 15 | −| [`alouer_sherbrooke`](alouer_sherbrooke.md) | À Louer Sherbrooke | Estrie | API admin-ajax (WordPress) | direct | 1/1 | 0 % | 0 % | 100 % | actif | 2026-08-22 17:44 | | |
| 16 | −| [`apartments_com`](apartments_com.md) | Apartments.com (CoStar) | Province | API JSON interne du site | direct | 615/615 | 40 % | 100 % | 100 % | actif | 2026-08-22 19:17 | | |
| 17 | −| [`app_urbains`](app_urbains.md) | Appartements Urbains | Québec | sitemap XML + pages HTML | direct | 17/21 | 100 % | 82 % | 100 % | actif | 2026-08-22 17:44 | | |
| 18 | −| [`appartements_rimouski`](appartements_rimouski.md) | Appartements Rimouski (Immeubles DTM) | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 20/24 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:44 | | |
| 19 | −| [`ascensio`](ascensio.md) | Groupe Ascensio | Estrie | pages HTML (rendu serveur) | direct | 9/10 | 44 % | 100 % | 100 % | actif | 2026-08-22 17:44 | | |
| 20 | −| [`atimco`](atimco.md) | Atimco | Montérégie | sitemap XML + pages HTML | direct | 299/299 | 100 % | 99 % | 96 % | actif | 2026-08-22 17:45 | | |
| 21 | −| [`atlas_immo`](atlas_immo.md) | Atlas société immobilière | Chaudière-Appalaches | pages HTML (rendu serveur) | direct | 0/0 | — | — | — | actif | 2026-08-22 17:45 | | |
| 22 | −| [`aula`](aula.md) | AULA Lévis | Québec | API REST WordPress (wp-json) | direct | 68/70 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:45 | | |
| 23 | −| [`axia`](axia.md) | Axia Appartements | Montréal | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:45 | | |
| 24 | −| [`barnes_quebec`](barnes_quebec.md) | BARNES Québec (location) | Montréal | API JSON interne du site | direct | 101/110 | 100 % | 99 % | 100 % | actif | 2026-08-22 17:45 | | |
| 25 | −| [`beaudoin`](beaudoin.md) | Société Beaudoin Immobilier | Montréal | API REST WordPress (wp-json) | direct | 12/12 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:45 | | |
| 26 | −| [`beaulieu_groupe`](beaulieu_groupe.md) | Beaulieu Groupe Immobilier (BGI) | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 5/5 | 100 % | 0 % | 100 % | actif | 2026-08-22 17:45 | | |
| 27 | −| [`bestlife`](bestlife.md) | Les Gestions Bestlife | Estrie | pages HTML (rendu serveur) | direct | 15/16 | 87 % | 100 % | 100 % | actif | 2026-08-22 17:45 | | |
| 28 | −| [`boardwalk`](boardwalk.md) | Boardwalk REIT | Montréal | pages HTML (rendu serveur) | direct | 100/100 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:46 | | |
| 29 | −| [`bons_locataires`](bons_locataires.md) | Bons Locataires | Grand Montréal | sitemap XML + pages HTML | direct | 17/17 | 100 % | 35 % | 94 % | actif | 2026-08-22 17:50 | | |
| 30 | −| [`boreal_abitibi`](boreal_abitibi.md) | Constructions Boréal Abitibi | Abitibi-Témiscaming… | API admin-ajax (WordPress) | direct | 3/6 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:50 | | |
| 31 | −| [`bribourg`](bribourg.md) | Bribourg | Québec | pages HTML (rendu serveur) | direct | 2/5 | 0 % | 0 % | 100 % | actif | 2026-08-22 17:50 | | |
| 32 | −| [`brigil`](brigil.md) | Brigil | Outaouais | API JSON interne du site | direct | 42/42 | 98 % | 24 % | 100 % | actif | 2026-08-22 17:50 | | |
| 33 | −| [`brio`](brio.md) | Les Immeubles Brio | Québec | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:50 | | |
| 34 | −| [`brivia_1sp`](brivia_1sp.md) | Groupe Brivia (1 Square Phillips) | Montréal | API JSON interne du site | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:50 | | |
| 35 | −| [`brochu`](brochu.md) | Groupe Immobilier Brochu | Québec | pages HTML (rendu serveur) | direct | 7/7 | 86 % | 57 % | 100 % | actif | 2026-08-22 17:50 | | |
| 36 | −| [`cap_gestion`](cap_gestion.md) | CAP Gestion (CAP Immobilier) | Laurentides / Lanau… | pages HTML (rendu serveur) | direct | 122/123 | 98 % | 100 % | 100 % | actif | 2026-08-22 17:50 | | |
| 37 | −| [`capital_rdr`](capital_rdr.md) | Gestion Capital RDR | Mauricie | sitemap XML + pages HTML | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:50 | | |
| 38 | −| [`capreit`](capreit.md) | CAPREIT | Québec | API admin-ajax (WordPress) | direct | 116/123 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:50 | | |
| 39 | −| [`carat_immobilier`](carat_immobilier.md) | Carat Immobilier | Abitibi-Témiscaming… | sitemap XML + pages HTML | direct | 3/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:50 | | |
| 40 | −| [`centurion`](centurion.md) | Centurion / CP Living (Quartier QB) | Québec | API JSON interne du site | direct | 4/4 | 100 % | 75 % | 100 % | actif | 2026-08-22 17:50 | | |
| 41 | −| [`cite_immobilier`](cite_immobilier.md) | Cité Immobilier | Centre-du-Québec | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 0 % | 0 % | actif | 2026-08-22 17:50 | | |
| 42 | −| [`cogir`](cogir.md) | Cogir Immobilier | Québec | pages HTML (rendu serveur) | direct | 282/300 | 92 % | 96 % | 100 % | actif | 2026-08-22 17:52 | | |
| 43 | −| [`contraste`](contraste.md) | Contraste Immobilier | Québec | pages HTML (rendu serveur) | direct | 208/234 | 100 % | 86 % | 100 % | actif | 2026-08-22 17:52 | | |
| 44 | −| [`copley`](copley.md) | Groupe Copley | Montréal | pages HTML (rendu serveur) | direct | 52/52 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:53 | | |
| 45 | −| [`cosoltec`](cosoltec.md) | Cosoltec (Evado, Le Monroe, Natür) | Laurentides | API JSON interne du site | direct | 44/57 | 100 % | 80 % | 100 % | actif | 2026-08-22 17:53 | | |
| 46 | −| [`courtemanche`](courtemanche.md) | Gestion Immobilière Courtemanche | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 0/0 | — | — | — | actif | 2026-08-22 17:53 | | |
| 47 | −| [`cromwell`](cromwell.md) | Cromwell Management | Montréal | pages HTML (rendu serveur) | direct | 12/12 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:53 | | |
| 48 | −| [`denux`](denux.md) | Groupe Denux | Montréal | API JSON interne du site | direct | 20/20 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:53 | | |
| 49 | −| [`desmarais`](desmarais.md) | Immeubles Desmarais | Outaouais | pages HTML (rendu serveur) | direct | 14/14 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:53 | | |
| 50 | −| [`desroches`](desroches.md) | Immeubles Claude Desroches | Montérégie | pages HTML (rendu serveur) | direct | 6/6 | 100 % | 100 % | 50 % | actif | 2026-08-22 17:53 | | |
| 51 | −| [`devcore`](devcore.md) | Devcore Group | Côte-Nord | API REST WordPress (wp-json) | direct | 14/14 | 0 % | 7 % | 100 % | actif | 2026-08-22 17:54 | | |
| 52 | −| [`devimco`](devimco.md) | Devimco Appartements | Montréal | API JSON interne du site | direct | 231/576 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:54 | | |
| 53 | −| [`dma_locago`](dma_locago.md) | DMA / Locago (Douville, Moffet & Associ… | Québec | pages HTML (rendu serveur) | direct | 116/126 | 28 % | 98 % | 100 % | actif | 2026-08-22 17:55 | | |
| 54 | −| [`duproprio`](duproprio.md) | DuProprio (location) | Province | sitemap XML + pages HTML | direct | 3894/4109 | 100 % | 100 % | 99 % | actif | 2026-08-22 17:55 | | |
| 55 | −| [`dynamic`](dynamic.md) | Gestion immobilière Dynamic | Estrie | pages HTML (rendu serveur) | direct | 44/55 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:44 | | |
| 56 | −| [`edifia`](edifia.md) | Edifia Groupe Immobilier | Québec | pages HTML (rendu serveur) | direct | 177/185 | 100 % | 94 % | 100 % | actif | 2026-08-22 17:55 | | |
| 57 | −| [`elements`](elements.md) | Quartier les Éléments | Québec | pages HTML (rendu serveur) | direct | 2/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:56 | | |
| 58 | −| [`elite`](elite.md) | Elite Immobilier | Outaouais | pages HTML (rendu serveur) | direct | 12/12 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:56 | | |
| 59 | −| [`elk`](elk.md) | ELK Property Management | Outaouais | pages HTML (rendu serveur) | direct | 3/3 | 67 % | 100 % | 100 % | actif | 2026-08-22 17:56 | | |
| 60 | −| [`equinoxe_batimo`](equinoxe_batimo.md) | Batimo/EMD — Collection Équinoxe | Montréal | API admin-ajax (WordPress) | direct | 626/662 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:58 | | |
| 61 | −| [`evoludev`](evoludev.md) | Groupe Evoludev | Lanaudière | pages HTML (rendu serveur) | direct | 134/134 | 100 % | 99 % | 100 % | actif | 2026-08-22 17:58 | | |
| 62 | −| [`fb_marketplace`](fb_marketplace.md) | Facebook Marketplace (location) | Province | API JSON interne du site | direct | 1732/23481 | 56 % | 100 % | 100 % | actif | 2026-08-22 19:25 | | |
| 63 | −| [`ferrovia`](ferrovia.md) | Ferrovia (condos locatifs Mirabel) | Laurentides | pages HTML (rendu serveur) | direct | 22/24 | 100 % | 0 % | 100 % | actif | 2026-08-22 18:05 | | |
| 64 | −| [`firma`](firma.md) | Groupe Firma | Montréal | API REST WordPress (wp-json) | direct | 12/12 | 75 % | 8 % | 100 % | actif | 2026-08-22 18:06 | | |
| 65 | −| [`floria`](floria.md) | Gestion Floria | Estrie | pages HTML (rendu serveur) | direct | 21/21 | 100 % | 24 % | 95 % | actif | 2026-08-22 18:06 | | |
| 66 | −| [`forsa`](forsa.md) | Gestion immobilière Forsa | Lanaudière | pages HTML (rendu serveur) | direct | 10/13 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:06 | | |
| 67 | −| [`fournelle`](fournelle.md) | Appartements Fournelle (Groupe Fournell… | Centre-du-Québec | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-22 18:06 | | |
| 68 | −| [`garic`](garic.md) | Garic Gestion Immobilière | Outaouais | API admin-ajax (WordPress) | direct | 45/54 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:06 | | |
| 69 | −| [`gesteco`](gesteco.md) | Gesteco | Montérégie | API JSON interne du site | direct | 9/15 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:06 | | |
| 70 | −| [`gestimmo_estrie`](gestimmo_estrie.md) | Gestimmo Estrie | Estrie | pages HTML (rendu serveur) | direct | 41/41 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:06 | | |
| 71 | −| [`gestion_fauvel`](gestion_fauvel.md) | Gestion Fauvel | Centre-du-Québec | pages HTML (rendu serveur) | direct | 11/11 | 91 % | 91 % | 100 % | actif | 2026-08-22 18:06 | | |
| 72 | −| [`gestion_habitation`](gestion_habitation.md) | Gestion Habitation | Abitibi-Témiscaming… | sitemap XML + pages HTML | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-22 18:06 | | |
| 73 | −| [`gestion_isr`](gestion_isr.md) | Gestion ISR | Centre-du-Québec | pages HTML (rendu serveur) | direct | 20/22 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:06 | | |
| 74 | −| [`gestion_jdm`](gestion_jdm.md) | JDM Gestion immobilière | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 2/2 | 100 % | 0 % | 100 % | actif | 2026-08-22 18:06 | | |
| 75 | −| [`gestion_laprise`](gestion_laprise.md) | Gestion Laprise | Côte-Nord | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 50 % | 100 % | actif | 2026-08-22 18:06 | | |
| 76 | −| [`gestion_legrand`](gestion_legrand.md) | Gestion Le Grand | Centre-du-Québec | API REST WordPress (wp-json) | direct | 5/5 | 40 % | 100 % | 100 % | actif | 2026-08-22 18:07 | | |
| 77 | −| [`gestion_montreal`](gestion_montreal.md) | Gestion Montréal | Montréal | pages HTML (rendu serveur) | direct | 23/26 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:07 | | |
| 78 | −| [`gestion_tb`](gestion_tb.md) | Gestion TB (portail Appartements TB) | Centre-du-Québec | pages HTML (rendu serveur) | direct | 30/36 | 0 % | 100 % | 100 % | actif | 2026-08-22 18:07 | | |
| 79 | −| [`gestion_valco`](gestion_valco.md) | Gestion Valco | Mauricie | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 0 % | 50 % | actif | 2026-08-22 18:07 | | |
| 80 | −| [`gestipro`](gestipro.md) | Gestipro | Québec | pages HTML (rendu serveur) | direct | 103/124 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:07 | | |
| 81 | −| [`gia_t`](gia_t.md) | GIA-T — Gestion Immobilière Abitibi-Tém… | Abitibi-Témiscaming… | pages HTML (rendu serveur) | direct | 5/7 | 80 % | 100 % | 100 % | actif | 2026-08-22 18:07 | | |
| 82 | −| [`gimcote`](gimcote.md) | GIM Côté | Québec | pages HTML (rendu serveur) | direct | 86/91 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:07 | | |
| 83 | −| [`gio`](gio.md) | Gestion Immobilière de l'Outaouais (GIO) | Outaouais | pages HTML (rendu serveur) | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:07 | | |
| 84 | −| [`girescom`](girescom.md) | Girescom gestion immobilière | Québec | pages HTML (rendu serveur) | direct | 40/41 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:07 | | |
| 85 | −| [`girs`](girs.md) | GIRS — Gestion Immobilière de la Rive S… | Chaudière-Appalaches | sitemap XML + pages HTML | direct | 8/8 | 100 % | 0 % | 100 % | actif | 2026-08-22 18:07 | | |
| 86 | −| [`gparadis`](gparadis.md) | GParadis | Québec | pages HTML (rendu serveur) | direct | 22/22 | 82 % | 0 % | 100 % | actif | 2026-08-22 18:07 | | |
| 87 | −| [`groupe_dallaire`](groupe_dallaire.md) | Groupe Dallaire (Faubourg du Moulin) | Québec | API admin-ajax (WordPress) | Scrapfly | 255/259 | 100 % | 100 % | 100 % | actif (dégradé) | 2026-08-22 18:08 | | |
| 88 | −| [`groupe_jacques`](groupe_jacques.md) | Groupe Jacques | Centre-du-Québec | pages HTML (rendu serveur) | direct | 10/11 | 100 % | 60 % | 100 % | actif | 2026-08-22 18:08 | | |
| 89 | −| [`groupe_maurice`](groupe_maurice.md) | Le Groupe Maurice | Province | API REST WordPress (wp-json) | direct | 203/203 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:08 | | |
| 90 | −| [`groupe_robin`](groupe_robin.md) | Groupe Robin | Mauricie | API admin-ajax (WordPress) | direct | 71/76 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:08 | | |
| 91 | −| [`groupe_theoret`](groupe_theoret.md) | Groupe Théorêt (Gestion Immobilière) | Mauricie | pages HTML (rendu serveur) | direct | 24/24 | 83 % | 100 % | 0 % | actif | 2026-08-22 18:08 | | |
| 92 | −| [`habitations_jeanne`](habitations_jeanne.md) | Les Habitations Jeanne | Côte-Nord | sitemap XML + pages HTML | direct | 14/14 | 100 % | 0 % | 100 % | actif | 2026-08-22 18:08 | | |
| 93 | −| [`habitations_sf`](habitations_sf.md) | Les Habitations SF (S&F Gestion) | Lanaudière | pages HTML (rendu serveur) | direct | 7/7 | 43 % | 86 % | 100 % | actif | 2026-08-22 18:08 | | |
| 94 | −| [`halfred`](halfred.md) | Halfred | Outaouais | pages HTML (rendu serveur) | direct | 165/171 | 93 % | 100 % | 100 % | actif | 2026-08-22 18:09 | | |
| 95 | −| [`hazelview`](hazelview.md) | Hazelview Properties | Montréal | API JSON interne du site | direct | 6/6 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:10 | | |
| 96 | −| [`headway`](headway.md) | La Corporation Headway | Québec | pages HTML (rendu serveur) | direct | 7/7 | 100 % | 0 % | 100 % | actif | 2026-08-22 18:10 | | |
| 97 | −| [`heafey`](heafey.md) | Groupe Heafey (Le We 2, Le We 3, Loggia… | Outaouais | API JSON interne du site | direct | 246/261 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:10 | | |
| 98 | −| [`hestia`](hestia.md) | Hestia Groupe immobilier | Mauricie | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:10 | | |
| 99 | −| [`huma`](huma.md) | HUMĀ Condos locatifs | Québec | pages HTML (rendu serveur) | direct | 38/38 | 100 % | 0 % | 100 % | actif | 2026-08-22 18:10 | | |
| 100 | −| [`immeubles_aeb`](immeubles_aeb.md) | Immeubles AEB | Saguenay–Lac-Saint-… | pages HTML (rendu serveur) | direct | 26/26 | 100 % | 100 % | 81 % | actif | 2026-08-22 18:10 | | |
| 101 | −| [`immeubles_bc`](immeubles_bc.md) | Les Immeubles Beaulieu et Collin | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 20/30 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:10 | | |
| 102 | −| [`immeubles_bois`](immeubles_bois.md) | Les Immeubles Bois | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 23/23 | 87 % | 0 % | 100 % | actif | 2026-08-22 18:11 | | |
| 103 | −| [`immeubles_db`](immeubles_db.md) | Les Immeubles D.B. Busque-Massé | Estrie | pages HTML (rendu serveur) | direct | 13/13 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:11 | | |
| 104 | −| [`immeubles_dcl`](immeubles_dcl.md) | Les Immeubles DCL | Abitibi-Témiscaming… | pages HTML (rendu serveur) | direct | 7/11 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:11 | | |
| 105 | −| [`immeubles_guillot`](immeubles_guillot.md) | Les Immeubles Guillot | Québec | pages HTML (rendu serveur) | direct | 7/7 | 57 % | 0 % | 100 % | actif | 2026-08-22 18:11 | | |
| 106 | −| [`immeubles_ouellet`](immeubles_ouellet.md) | Les Immeubles Vianney Ouellet & Fils | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:11 | | |
| 107 | −| [`immeubles_pm`](immeubles_pm.md) | Les Immeubles PM | Estrie | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:11 | | |
| 108 | −| [`immnasr`](immnasr.md) | Les Immeubles Michel Nazair | Outaouais | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:11 | | |
| 109 | −| [`immobilia`](immobilia.md) | Immobilia Rimouski | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 1/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:11 | | |
| 110 | −| [`immogex`](immogex.md) | Immogex | Centre-du-Québec | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:11 | | |
| 111 | −| [`immomarketing`](immomarketing.md) | IMMOMARKETING (Immoappart) | Québec | pages HTML (rendu serveur) | direct | 83/94 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:11 | | |
| 112 | −| [`immostar`](immostar.md) | Immostar | Québec | API REST WordPress (wp-json) | direct | 156/165 | 78 % | 99 % | 100 % | actif | 2026-08-22 18:12 | | |
| 113 | −| [`info_logement`](info_logement.md) | Info-Logement | Lanaudière | pages HTML (rendu serveur) | direct | 56/64 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:12 | | |
| 114 | −| [`interrent`](interrent.md) | InterRent REIT (CLV Group) | Montréal | pages HTML (rendu serveur) | direct | 194/215 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:12 | | |
| 115 | −| [`jutras`](jutras.md) | Habitations Jutras | Centre-du-Québec | pages HTML (rendu serveur) | direct | 35/35 | 0 % | 60 % | 100 % | actif | 2026-08-22 18:12 | | |
| 116 | −| [`kangalou`](kangalou.md) | Kangalou | Province | API JSON interne du site | direct | 7776/8415 | 100 % | 100 % | 99 % | actif | 2026-08-22 18:14 | | |
| 117 | −| [`kass`](kass.md) | KASS Property Management | Outaouais | pages HTML (rendu serveur) | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:14 | | |
| 118 | −| [`katasa`](katasa.md) | Groupe Katasa | Outaouais | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-22 18:15 | | |
| 119 | −| [`kijiji`](kijiji.md) | Kijiji Québec (location) | Province | pages HTML (rendu serveur) | direct | 5327/9432 | 100 % | 97 % | 99 % | actif | 2026-08-22 18:25 | | |
| 120 | −| [`la_cour`](la_cour.md) | La Cour Appartements | Québec | API REST WordPress (wp-json) | direct | 19/21 | 100 % | 100 % | 100 % | actif | 2026-08-22 17:45 | | |
| 121 | −| [`laberge`](laberge.md) | Groupe Laberge | Québec | pages HTML (rendu serveur) | direct | 57/62 | 93 % | 100 % | 100 % | actif | 2026-08-22 18:25 | | |
| 122 | −| [`labonte`](labonte.md) | Gestion Labonté | Estrie | pages HTML (rendu serveur) | direct | 18/18 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:25 | | |
| 123 | −| [`lachance`](lachance.md) | Les Entreprises Lachance | Estrie | sitemap XML + pages HTML | direct | 75/98 | 93 % | 100 % | 100 % | actif | 2026-08-22 18:26 | | |
| 124 | −| [`lacite`](lacite.md) | La Cité Gatineau (Adam Real Estate) | Outaouais | pages HTML (rendu serveur) | direct | 6/7 | 100 % | 0 % | 100 % | actif | 2026-08-22 18:28 | | |
| 125 | −| [`lafrance_mathieu`](lafrance_mathieu.md) | Lafrance & Mathieu | Québec | pages HTML (rendu serveur) | direct | 37/41 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:29 | | |
| 126 | −| [`lakle`](lakle.md) | La Klé | Québec | API REST WordPress (wp-json) | direct | 43/49 | 100 % | 53 % | 100 % | actif | 2026-08-22 18:29 | | |
| 127 | −| [`lambert`](lambert.md) | Société Immobilière Lambert | Mauricie | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 50 % | 100 % | actif | 2026-08-22 18:29 | | |
| 128 | −| [`laureat_richard`](laureat_richard.md) | Logements Lauréat Richard | Estrie | pages HTML (rendu serveur) | direct | 23/23 | 100 % | 0 % | 100 % | actif | 2026-08-22 18:29 | | |
| 129 | −| [`le_baronet`](le_baronet.md) | Le Baronet | Chaudière-Appalaches | sitemap XML + pages HTML | direct | 4/6 | 0 % | 100 % | 100 % | actif | 2026-08-22 18:30 | | |
| 130 | −| [`le_st_georges`](le_st_georges.md) | Le St-Georges | Chaudière-Appalaches | API REST WordPress (wp-json) | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:30 | | |
| 131 | −| [`leclif`](leclif.md) | Le Clif | Québec | pages HTML (rendu serveur) | direct | 10/10 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:30 | | |
| 132 | −| [`ledomaine`](ledomaine.md) | Les Habitations Le Domaine | Montréal | pages HTML (rendu serveur) | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:30 | | |
| 133 | −| [`lelaureat`](lelaureat.md) | Résidences Le Lauréat | Estrie | pages HTML (rendu serveur) | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:30 | | |
| 134 | −| [`lequerre`](lequerre.md) | Habitations L'Équerre | Estrie | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:30 | | |
| 135 | −| [`lespac`](lespac.md) | LesPAC (location) | Province | pages HTML (rendu serveur) | direct | 2246/2891 | 100 % | 97 % | 93 % | actif | 2026-08-22 18:33 | | |
| 136 | −| [`leviu`](leviu.md) | Le VIU / VIU2 (Groupe Heafey) | Outaouais | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-22 18:33 | | |
| 137 | −| [`location_di`](location_di.md) | Location DI (Groupe Sphère DI) | Mauricie / Lanaudiè… | pages HTML (rendu serveur) | direct | 9/16 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:33 | | |
| 138 | −| [`location_saguenay`](location_saguenay.md) | Location Saguenay | Saguenay–Lac-Saint-… | pages HTML (rendu serveur) | direct | 21/21 | 76 % | 0 % | 100 % | actif | 2026-08-22 18:33 | | |
| 139 | −| [`loftsmtl`](loftsmtl.md) | Lofts MTL | Montréal | API JSON interne du site | direct | 9/9 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:33 | | |
| 140 | −| [`logement_mauricie`](logement_mauricie.md) | Logement Mauricie (regroupement de prop… | Mauricie | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:33 | | |
| 141 | −| [`logis_experts`](logis_experts.md) | Logis-Experts | Québec | API JSON interne du site | direct | 487/519 | 100 % | 100 % | 38 % | actif | 2026-08-22 18:33 | | |
| 142 | −| [`logisbourg`](logisbourg.md) | Logisbourg | Québec | pages HTML (rendu serveur) | direct | 11/14 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:33 | | |
| 143 | −| [`logisco`](logisco.md) | Logisco | Québec | pages HTML (rendu serveur) | direct | 160/184 | 99 % | 100 % | 100 % | actif | 2026-08-22 18:33 | | |
| 144 | −| [`logisma`](logisma.md) | Logisma | Québec | API REST WordPress (wp-json) | direct | 12/20 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:33 | | |
| 145 | −| [`logispro`](logispro.md) | LogisPro Rimouski | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 4/4 | 100 % | 75 % | 100 % | actif | 2026-08-22 18:34 | | |
| 146 | −| [`logisquebec`](logisquebec.md) | LogisQuébec | Province | sitemap XML + pages HTML | direct | 9702/10212 | 100 % | 99 % | 100 % | actif | 2026-08-22 18:39 | | |
| 147 | −| [`lokalia`](lokalia.md) | Espaces Lokalia | Québec | API admin-ajax (WordPress) | direct | 130/141 | 100 % | 82 % | 100 % | actif | 2026-08-22 18:40 | | |
| 148 | −| [`louer_ca`](louer_ca.md) | Louer.ca | Province | API GraphQL interne | direct | 4564/5908 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:47 | | |
| 149 | −| [`louer_saguenay`](louer_saguenay.md) | Louer Saguenay | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:47 | | |
| 150 | −| [`louis14`](louis14.md) | Quartier Louis Quatorze (Groupe Damco) | Québec | pages HTML (rendu serveur) | direct | 17/18 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:47 | | |
| 151 | −| [`lr_gestion`](lr_gestion.md) | LR Gestion immobilière (LR Location) | Outaouais | pages HTML (rendu serveur) | direct | 106/116 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:47 | | |
| 152 | −| [`luxuor`](luxuor.md) | Les Immeubles Luxuor | Saguenay–Lac-Saint-… | pages HTML (rendu serveur) | direct | 4/4 | 75 % | 0 % | 100 % | actif | 2026-08-22 18:47 | | |
| 153 | −| [`lynk_olymbec`](lynk_olymbec.md) | Lynk (Olymbec) | Montréal | pages HTML (rendu serveur) | Firecrawl | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:47 | | |
| 154 | −| [`m_immobilier`](m_immobilier.md) | M Immobilier (location) | Montréal | pages HTML (rendu serveur) | direct | 186/207 | 58 % | 100 % | 100 % | actif | 2026-08-22 18:48 | | |
| 155 | −| [`majestic`](majestic.md) | Le Majestic du Lac Boivin | Montérégie | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 0 % | actif | 2026-08-22 18:48 | | |
| 156 | −| [`matinale`](matinale.md) | Gestion Matinale | Estrie | pages HTML (rendu serveur) | direct | 44/46 | 59 % | 100 % | 100 % | actif | 2026-08-22 18:49 | | |
| 157 | −| [`may_bourg`](may_bourg.md) | Gestion May Bourg | Centre-du-Québec | API REST WordPress (wp-json) | direct | 6/7 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:49 | | |
| 158 | −| [`medway`](medway.md) | Groupe Medway | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 482/499 | 91 % | 100 % | 100 % | actif | 2026-08-22 18:50 | | |
| 159 | −| [`mellem`](mellem.md) | Mellem (Groupe Mach) | Outaouais | sitemap XML + pages HTML | direct | 78/90 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:50 | | |
| 160 | −| [`mercini`](mercini.md) | Groupe Mercini (Gestion Faleschini Merc… | Québec | pages HTML (rendu serveur) | direct | 45/53 | 96 % | 100 % | 100 % | actif | 2026-08-22 18:50 | | |
| 161 | −| [`metcap`](metcap.md) | MetCap Living | Montréal | pages HTML (rendu serveur) | direct | 8/8 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:50 | | |
| 162 | −| [`minto`](minto.md) | Minto Apartments | Montréal | pages HTML (rendu serveur) | direct | 19/20 | 84 % | 100 % | 100 % | actif | 2026-08-22 18:50 | | |
| 163 | −| [`mkar`](mkar.md) | Gestion Immobilière MKAR | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 5/5 | 100 % | 0 % | 100 % | actif | 2026-08-22 18:50 | | |
| 164 | −| [`moderno`](moderno.md) | Moderno Construction | Lanaudière | pages HTML (rendu serveur) | direct | 7/7 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:50 | | |
| 165 | −| [`mondev`](mondev.md) | Mondev | Montréal | pages HTML (rendu serveur) | direct | 43/49 | 47 % | 100 % | 100 % | actif | 2026-08-22 18:51 | | |
| 166 | −| [`montagnais`](montagnais.md) | Le Montagnais, résidences étudiantes | Estrie | API admin-ajax (WordPress) | direct | 31/31 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:51 | | |
| 167 | −| [`morin`](morin.md) | Constructions Morin | Estrie | pages HTML (rendu serveur) | direct | 6/7 | 83 % | 100 % | 100 % | actif | 2026-08-22 18:51 | | |
| 168 | −| [`msi`](msi.md) | MSI Gestion immobilière | Québec | pages HTML (rendu serveur) | direct | 96/109 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:52 | | |
| 169 | −| [`multi_logis`](multi_logis.md) | Multi-Logis | Côte-Nord | sitemap XML + pages HTML | direct | 27/27 | 100 % | 96 % | 70 % | actif | 2026-08-22 18:52 | | |
| 170 | −| [`niddamour`](niddamour.md) | Nid d'Amour | Montréal | API JSON interne du site | direct | 14/14 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:52 | | |
| 171 | −| [`novelo`](novelo.md) | Les Appartements Novelo | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:52 | | |
| 172 | −| [`oklouer`](oklouer.md) | OK Louer (location temporaire) | Québec | pages HTML (rendu serveur) | direct | 41/41 | 98 % | 100 % | 100 % | actif | 2026-08-22 18:52 | | |
| 173 | −| [`omhm`](omhm.md) | OMHM — logements abordables | Montréal | pages HTML (rendu serveur) | direct | 3/4 | 67 % | 100 % | 0 % | actif | 2026-08-22 18:52 | | |
| 174 | −| [`osgoode`](osgoode.md) | Osgoode Properties | Outaouais | API JSON interne du site | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:52 | | |
| 175 | −| [`oxford`](oxford.md) | Appartements Oxford | Estrie | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-22 18:53 | | |
| 176 | −| [`per`](per.md) | Les Immeubles Paul-E. Richard | Québec | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:53 | | |
| 177 | −| [`picard`](picard.md) | Picard Immobilier | Québec | pages HTML (rendu serveur) | direct | 29/34 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:53 | | |
| 178 | −| [`place_florimay`](place_florimay.md) | Place Florimay | Chaudière-Appalaches | API REST WordPress (wp-json) | direct | 0/0 | — | — | — | actif | 2026-08-22 18:53 | | |
| 179 | −| [`plan_a`](plan_a.md) | Plan A Immobilier | Montréal | pages HTML (rendu serveur) | direct | 11/11 | 91 % | 91 % | 100 % | actif | 2026-08-22 18:53 | | |
| 180 | −| [`progim`](progim.md) | Progim | Montréal | pages HTML (rendu serveur) | direct | 65/73 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:53 | | |
| 181 | −| [`projection_immo`](projection_immo.md) | Projection Immobilière | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 1/1 | 100 % | 0 % | 100 % | actif | 2026-08-22 18:53 | | |
| 182 | −| [`promenade_des_forts`](promenade_des_forts.md) | Promenade des Forts | Québec | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:54 | | |
| 183 | −| [`proprio_direct`](proprio_direct.md) | Proprio Direct (location) | Province | API JSON interne du site | direct | 183/193 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:54 | | |
| 184 | −| [`quanta`](quanta.md) | Gestion Quanta | Outaouais | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-22 18:54 | | |
| 185 | −| [`quartier_mosaique`](quartier_mosaique.md) | Quartier Mosaïque (Constrobourg) | Québec | pages HTML (rendu serveur) | direct | 24/24 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:54 | | |
| 186 | −| [`quartier_oree`](quartier_oree.md) | Quartier Orée | Chaudière-Appalaches | pages HTML (rendu serveur) | direct | 28/31 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:54 | | |
| 187 | −| [`quartier_plus`](quartier_plus.md) | Le Quartier Plus | Chaudière-Appalaches | sitemap XML + pages HTML | direct | 59/59 | 100 % | 97 % | 100 % | actif | 2026-08-22 18:54 | | |
| 188 | −| [`quartier_sila`](quartier_sila.md) | Quartier Sila | Québec | pages HTML (rendu serveur) | direct | 198/200 | 100 % | 26 % | 100 % | actif | 2026-08-22 18:54 | | |
| 189 | −| [`realstar`](realstar.md) | Realstar | Montréal | API JSON interne du site | direct | 9/9 | 100 % | 100 % | 100 % | actif | 2026-08-22 18:54 | | |
| 190 | −| [`remax_quebec`](remax_quebec.md) | RE/MAX Québec (location) | Province | pages HTML (rendu serveur) | direct | 3227/3521 | 100 % | 100 % | 99 % | actif | 2026-08-22 19:00 | | |
| 191 | −| [`rentals_ca`](rentals_ca.md) | Rentals.ca (Québec) | Province | API GraphQL interne | Scrapfly | 4433/5654 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:05 | | |
| 192 | −| [`rentalys`](rentalys.md) | Rentalys | Montréal | pages HTML (rendu serveur) | direct | 10/10 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:05 | | |
| 9 | +| [`aalto`](aalto.md) | Aalto Suites (Zibi / Dream) | Outaouais | API JSON interne du site | direct | 24/35 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:37 | | |
| 10 | +| [`acceslogis_gb`](acceslogis_gb.md) | Accès Logis GB | Lanaudière / Mauric… | pages HTML (rendu serveur) | direct | 10/11 | 20 % | 100 % | 100 % | actif | 2026-08-25 01:37 | | |
| 11 | +| [`aera3r`](aera3r.md) | Aera (réseau Momentum) — Trois-Rivières… | Mauricie | pages HTML (rendu serveur) | direct | 6/6 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:34 | | |
| 12 | +| [`aera_chambly`](aera_chambly.md) | Aera Chambly Signature (réseau Aera / B… | Montérégie | pages HTML (rendu serveur) | direct | 0/0 | — | — | — | actif | 2026-08-25 01:34 | | |
| 13 | +| [`agence_sherbrooke`](agence_sherbrooke.md) | Agence de location Sherbrooke (groupe P… | Estrie | sitemap XML + pages HTML | direct | 17/19 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:37 | | |
| 14 | +| [`akelius`](akelius.md) | Akelius Montréal | Montréal | pages HTML (rendu serveur) | direct | 219/306 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:37 | | |
| 15 | +| [`alexcellence`](alexcellence.md) | Immeubles Alexcellence | Estrie | pages HTML (rendu serveur) | direct | 6/6 | 50 % | 100 % | 100 % | actif | 2026-08-25 01:37 | | |
| 16 | +| [`alfid`](alfid.md) | Groupe Alfid | Montréal | API JSON interne du site | direct | 57/57 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:34 | | |
| 17 | +| [`alias_appartements`](alias_appartements.md) | Alias Appartements | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:37 | | |
| 18 | +| [`alouer_sherbrooke`](alouer_sherbrooke.md) | À Louer Sherbrooke | Estrie | API admin-ajax (WordPress) | direct | 1/1 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:37 | | |
| 19 | +| [`apartments_com`](apartments_com.md) | Apartments.com (CoStar) | Province | API JSON interne du site | direct | 615/615 | 68 % | 100 % | 100 % | actif | 2026-08-25 01:37 | | |
| 20 | +| [`apero`](apero.md) | Apéro Appartement | Lanaudière / Montré… | API JSON interne du site | direct | 482/482 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:34 | | |
| 21 | +| [`app_urbains`](app_urbains.md) | Appartements Urbains | Québec | sitemap XML + pages HTML | direct | 17/24 | 100 % | 88 % | 100 % | actif | 2026-08-25 01:37 | | |
| 22 | +| [`appartements_rimouski`](appartements_rimouski.md) | Appartements Rimouski (Immeubles DTM) | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 21/24 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:37 | | |
| 23 | +| [`arpents_verts`](arpents_verts.md) | Domaine les Arpents Verts (Société Immo… | Montérégie | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:35 | | |
| 24 | +| [`ascensio`](ascensio.md) | Groupe Ascensio | Estrie | pages HTML (rendu serveur) | direct | 9/11 | 56 % | 100 % | 100 % | actif | 2026-08-25 01:37 | | |
| 25 | +| [`atimco`](atimco.md) | Atimco | Montérégie | sitemap XML + pages HTML | direct | 297/299 | 100 % | 99 % | 96 % | actif | 2026-08-25 01:38 | | |
| 26 | +| [`atlas_immo`](atlas_immo.md) | Atlas société immobilière | Chaudière-Appalaches | pages HTML (rendu serveur) | direct | 0/0 | — | — | — | actif | 2026-08-25 01:38 | | |
| 27 | +| [`aube`](aube.md) | Aubé Immobilier | Capitale-Nationale | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:35 | | |
| 28 | +| [`aula`](aula.md) | AULA Lévis | Québec | API REST WordPress (wp-json) | direct | 68/70 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:38 | | |
| 29 | +| [`axia`](axia.md) | Axia Appartements | Montréal | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:38 | | |
| 30 | +| [`barnes_quebec`](barnes_quebec.md) | BARNES Québec (location) | Montréal | API JSON interne du site | direct | 106/115 | 97 % | 96 % | 100 % | actif | 2026-08-25 01:38 | | |
| 31 | +| [`bati5`](bati5.md) | Bâti5 — Boisés Dion | Laurentides | pages HTML (rendu serveur) | direct | 1/1 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:35 | | |
| 32 | +| [`beaudoin`](beaudoin.md) | Société Beaudoin Immobilier | Montréal | API REST WordPress (wp-json) | direct | 12/12 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:38 | | |
| 33 | +| [`beaulieu_groupe`](beaulieu_groupe.md) | Beaulieu Groupe Immobilier (BGI) | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 5/5 | 100 % | 0 % | 100 % | actif | 2026-08-25 01:38 | | |
| 34 | +| [`beloeil_94`](beloeil_94.md) | Le 94 Vieux-Beloeil | Montérégie | pages HTML (rendu serveur) | direct | 1/1 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:35 | | |
| 35 | +| [`bestlife`](bestlife.md) | Les Gestions Bestlife | Estrie | pages HTML (rendu serveur) | direct | 15/16 | 87 % | 100 % | 100 % | actif | 2026-08-25 01:38 | | |
| 36 | +| [`boardwalk`](boardwalk.md) | Boardwalk REIT | Montréal | pages HTML (rendu serveur) | direct | 100/100 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:39 | | |
| 37 | +| [`boises_cite`](boises_cite.md) | Les Boisés de la Cité | Chaudière-Appalaches | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:35 | | |
| 38 | +| [`bons_locataires`](bons_locataires.md) | Bons Locataires | Grand Montréal | sitemap XML + pages HTML | direct | 17/17 | 100 % | 35 % | 94 % | actif | 2026-08-25 01:43 | | |
| 39 | +| [`boreal_abitibi`](boreal_abitibi.md) | Constructions Boréal Abitibi | Abitibi-Témiscaming… | API admin-ajax (WordPress) | direct | 4/6 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:43 | | |
| 40 | +| [`bribourg`](bribourg.md) | Bribourg | Québec | pages HTML (rendu serveur) | direct | 2/5 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:44 | | |
| 41 | +| [`brigil`](brigil.md) | Brigil | Outaouais | API JSON interne du site | direct | 42/42 | 98 % | 24 % | 100 % | actif | 2026-08-25 01:44 | | |
| 42 | +| [`brio`](brio.md) | Les Immeubles Brio | Québec | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 43 | +| [`brivia_1sp`](brivia_1sp.md) | Groupe Brivia (1 Square Phillips) | Montréal | API JSON interne du site | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 44 | +| [`brochu`](brochu.md) | Groupe Immobilier Brochu | Québec | pages HTML (rendu serveur) | direct | 7/7 | 86 % | 57 % | 100 % | actif | 2026-08-25 01:44 | | |
| 45 | +| [`c3r`](c3r.md) | Gestion C3R | Mauricie | API JSON interne du site | direct | 8/8 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:35 | | |
| 46 | +| [`cabinetterie`](cabinetterie.md) | Place de la Cabinetterie | Montérégie | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 33 % | 100 % | actif | 2026-08-25 01:35 | | |
| 47 | +| [`cap_gestion`](cap_gestion.md) | CAP Gestion (CAP Immobilier) | Laurentides / Lanau… | pages HTML (rendu serveur) | direct | 122/123 | 98 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 48 | +| [`capital_rdr`](capital_rdr.md) | Gestion Capital RDR | Mauricie | sitemap XML + pages HTML | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 49 | +| [`capreit`](capreit.md) | CAPREIT | Québec | API admin-ajax (WordPress) | direct | 116/123 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 50 | +| [`cara`](cara.md) | CARA (condos locatifs) | Montérégie | pages HTML (rendu serveur) | direct | 10/10 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:35 | | |
| 51 | +| [`carat_immobilier`](carat_immobilier.md) | Carat Immobilier | Abitibi-Témiscaming… | sitemap XML + pages HTML | direct | 3/4 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 52 | +| [`carre_legendes`](carre_legendes.md) | Carré des Légendes | Montérégie | pages HTML (rendu serveur) | direct | 5/5 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:35 | | |
| 53 | +| [`celeste`](celeste.md) | CÉLESTE LaSalle | Montréal | API REST WordPress (wp-json) | direct | 0/0 | — | — | — | actif | 2026-08-25 01:35 | | |
| 54 | +| [`cent4`](cent4.md) | Terrasse Cent4 — Vestric (La Prairie) | Montérégie | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:35 | | |
| 55 | +| [`central_rosemont`](central_rosemont.md) | Central Rosemont | Montréal | pages HTML (rendu serveur) | direct | 6/6 | 0 % | 83 % | 100 % | actif | 2026-08-25 01:35 | | |
| 56 | +| [`centurion`](centurion.md) | Centurion / CP Living (Quartier QB) | Québec | API JSON interne du site | direct | 4/4 | 100 % | 75 % | 100 % | actif | 2026-08-25 01:44 | | |
| 57 | +| [`chartwell`](chartwell.md) | Chartwell (Québec) | Province | sitemap XML + pages HTML | direct | 134/134 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:36 | | |
| 58 | +| [`cinq_etoiles`](cinq_etoiles.md) | Gestion Cinq Étoiles (Appartements loca… | Laurentides | pages HTML (rendu serveur) | direct | 11/11 | 0 % | 45 % | 100 % | actif | 2026-08-25 01:36 | | |
| 59 | +| [`cinquante_ans_plus`](cinquante_ans_plus.md) | Logements 50 ans et plus (Gestion T. Fr… | Laurentides | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:36 | | |
| 60 | +| [`cite_immobilier`](cite_immobilier.md) | Cité Immobilier | Centre-du-Québec | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 0 % | 0 % | actif | 2026-08-25 01:44 | | |
| 61 | +| [`citiluxx`](citiluxx.md) | Citiluxx (Groupe Cleary) | Montérégie | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:36 | | |
| 62 | +| [`cogir`](cogir.md) | Cogir Immobilier | Québec | pages HTML (rendu serveur) | direct | 283/301 | 92 % | 96 % | 100 % | actif | 2026-08-25 01:46 | | |
| 63 | +| [`complexe_st_charles`](complexe_st_charles.md) | Complexe St-Charles (condos locatifs, r… | Lanaudière | pages HTML (rendu serveur) | direct | 15/15 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:36 | | |
| 64 | +| [`condos18`](condos18.md) | Condos Locatifs 18 | Québec | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:36 | | |
| 65 | +| [`consolata`](consolata.md) | La Consolata (Propriétés Mach) | Québec | pages HTML (rendu serveur) | direct | 10/10 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:37 | | |
| 66 | +| [`construction_app`](construction_app.md) | Construction APP / Les Habitations APP | Québec | pages HTML (rendu serveur) | direct | 23/23 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:37 | | |
| 67 | +| [`contraste`](contraste.md) | Contraste Immobilier | Québec | pages HTML (rendu serveur) | direct | 209/235 | 100 % | 86 % | 100 % | actif | 2026-08-25 01:46 | | |
| 68 | +| [`copley`](copley.md) | Groupe Copley | Montréal | pages HTML (rendu serveur) | direct | 52/52 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:46 | | |
| 69 | +| [`cosoltec`](cosoltec.md) | Cosoltec (Evado, Le Monroe, Natür) | Laurentides | API JSON interne du site | direct | 44/57 | 100 % | 80 % | 100 % | actif | 2026-08-25 01:46 | | |
| 70 | +| [`courtemanche`](courtemanche.md) | Gestion Immobilière Courtemanche | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 0/0 | — | — | — | actif | 2026-08-25 01:46 | | |
| 71 | +| [`cromwell`](cromwell.md) | Cromwell Management | Montréal | pages HTML (rendu serveur) | direct | 12/12 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:46 | | |
| 72 | +| [`denux`](denux.md) | Groupe Denux | Montréal | API JSON interne du site | direct | 20/20 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:47 | | |
| 73 | +| [`deschenes_pepin`](deschenes_pepin.md) | Groupe Deschênes Pépin (Le Blüm) | Montérégie | pages HTML (rendu serveur) | direct | 5/5 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:37 | | |
| 74 | +| [`desmarais`](desmarais.md) | Immeubles Desmarais | Outaouais | pages HTML (rendu serveur) | direct | 14/14 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:47 | | |
| 75 | +| [`desroches`](desroches.md) | Immeubles Claude Desroches | Montérégie | pages HTML (rendu serveur) | direct | 6/6 | 100 % | 100 % | 50 % | actif | 2026-08-25 01:47 | | |
| 76 | +| [`devcore`](devcore.md) | Devcore Group | Côte-Nord | API REST WordPress (wp-json) | direct | 14/14 | 0 % | 7 % | 100 % | actif | 2026-08-25 01:47 | | |
| 77 | +| [`devimco`](devimco.md) | Devimco Appartements | Montréal | API JSON interne du site | direct | 481/598 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:48 | | |
| 78 | +| [`devloc`](devloc.md) | Devloc | Montréal / Montérég… | API JSON interne du site | direct | 104/104 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:37 | | |
| 79 | +| [`dma_locago`](dma_locago.md) | DMA / Locago (Douville, Moffet & Associ… | Québec | pages HTML (rendu serveur) | direct | 118/128 | 28 % | 98 % | 100 % | actif | 2026-08-25 01:48 | | |
| 80 | +| [`double_v`](double_v.md) | Le Double V | Montérégie | pages HTML (rendu serveur) | direct | 92/92 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:37 | | |
| 81 | +| [`douek`](douek.md) | Douek Apartments | Montréal | pages HTML (rendu serveur) | direct | 10/10 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:37 | | |
| 82 | +| [`dupin_despres`](dupin_despres.md) | Dupin Després | Lanaudière | pages HTML (rendu serveur) | direct | 30/30 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:38 | | |
| 83 | +| [`duproprio`](duproprio.md) | DuProprio (location) | Province | sitemap XML + pages HTML | direct | 3838/4132 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:33 | | |
| 84 | +| [`duquette`](duquette.md) | Entreprises Duquette Immobilier | Laurentides | API REST WordPress (wp-json) | direct | 6/6 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:38 | | |
| 85 | +| [`dynamic`](dynamic.md) | Gestion immobilière Dynamic | Estrie | pages HTML (rendu serveur) | direct | 44/55 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:37 | | |
| 86 | +| [`edifia`](edifia.md) | Edifia Groupe Immobilier | Québec | pages HTML (rendu serveur) | direct | 177/185 | 100 % | 94 % | 100 % | actif | 2026-08-24 22:33 | | |
| 87 | +| [`elements`](elements.md) | Quartier les Éléments | Québec | pages HTML (rendu serveur) | direct | 2/4 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:34 | | |
| 88 | +| [`elite`](elite.md) | Elite Immobilier | Outaouais | pages HTML (rendu serveur) | direct | 12/12 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:34 | | |
| 89 | +| [`elk`](elk.md) | ELK Property Management | Outaouais | pages HTML (rendu serveur) | direct | 3/3 | 67 % | 100 % | 100 % | actif | 2026-08-24 22:34 | | |
| 90 | +| [`equinoxe_batimo`](equinoxe_batimo.md) | Batimo/EMD — Collection Équinoxe | Montréal | API admin-ajax (WordPress) | direct | 624/662 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:35 | | |
| 91 | +| [`espace_w`](espace_w.md) | Espace W (condos locatifs, Cité Mirabel) | Laurentides | pages HTML (rendu serveur) | direct | 59/59 | 100 % | 0 % | 100 % | actif | 2026-08-25 01:38 | | |
| 92 | +| [`evol`](evol.md) | EVOL Saint-Jean (Maître Carré) | Montérégie | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:38 | | |
| 93 | +| [`evoludev`](evoludev.md) | Groupe Evoludev | Lanaudière | pages HTML (rendu serveur) | direct | 134/134 | 100 % | 99 % | 100 % | actif | 2026-08-24 22:35 | | |
| 94 | +| [`excell`](excell.md) | Les immeubles EXCELL (agence, Abitibi-O… | Abitibi-Témiscaming… | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 100 % | 33 % | actif | 2026-08-25 01:38 | | |
| 95 | +| [`fb_marketplace`](fb_marketplace.md) | Facebook Marketplace (location) | Province | API JSON interne du site | direct | 1599/26851 | 61 % | 100 % | 100 % | actif | 2026-08-24 22:42 | | |
| 96 | +| [`ferrovia`](ferrovia.md) | Ferrovia (condos locatifs Mirabel) | Laurentides | pages HTML (rendu serveur) | direct | 22/24 | 100 % | 0 % | 100 % | actif | 2026-08-24 22:42 | | |
| 97 | +| [`firma`](firma.md) | Groupe Firma | Montréal | API REST WordPress (wp-json) | direct | 12/12 | 75 % | 8 % | 100 % | actif | 2026-08-24 22:42 | | |
| 98 | +| [`fitz`](fitz.md) | Le Fitz (condos locatifs Lévis) | Québec | API admin-ajax (WordPress) | direct | 108/108 | 0 % | 100 % | 99 % | actif | 2026-08-25 01:38 | | |
| 99 | +| [`floria`](floria.md) | Gestion Floria | Estrie | pages HTML (rendu serveur) | direct | 21/21 | 100 % | 24 % | 95 % | actif | 2026-08-24 22:42 | | |
| 100 | +| [`fluet`](fluet.md) | Groupe Fluet | Montérégie | pages HTML (rendu serveur) | direct | 16/16 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:39 | | |
| 101 | +| [`forsa`](forsa.md) | Gestion immobilière Forsa | Lanaudière | pages HTML (rendu serveur) | direct | 9/13 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:42 | | |
| 102 | +| [`forum_mtl`](forum_mtl.md) | Forum Properties (Berson, Lustra, 100 W… | Montréal / Lanaudiè… | API JSON interne du site | direct | 54/54 | 100 % | 52 % | 100 % | actif | 2026-08-25 01:39 | | |
| 103 | +| [`fournelle`](fournelle.md) | Appartements Fournelle (Groupe Fournell… | Centre-du-Québec | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-24 22:42 | | |
| 104 | +| [`garic`](garic.md) | Garic Gestion Immobilière | Outaouais | API admin-ajax (WordPress) | direct | 45/54 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:42 | | |
| 105 | +| [`gbd`](gbd.md) | GBD Location | Laurentides | pages HTML (rendu serveur) | direct | 6/6 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:39 | | |
| 106 | +| [`gcs_gabriel`](gcs_gabriel.md) | GCS Le Gabriel | Québec | pages HTML (rendu serveur) | direct | 6/6 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:39 | | |
| 107 | +| [`gerik`](gerik.md) | Gestion immobilière Gerik | Outaouais | pages HTML (rendu serveur) | direct | 9/9 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:39 | | |
| 108 | +| [`gesteco`](gesteco.md) | Gesteco | Montérégie | API JSON interne du site | direct | 8/15 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:43 | | |
| 109 | +| [`gestimmo_estrie`](gestimmo_estrie.md) | Gestimmo Estrie | Estrie | pages HTML (rendu serveur) | direct | 41/41 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:43 | | |
| 110 | +| [`gestion_1139`](gestion_1139.md) | Gestion 1139 | Centre-du-Québec | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:39 | | |
| 111 | +| [`gestion_bloc`](gestion_bloc.md) | Gestion Bloc | Québec | pages HTML (rendu serveur) | direct | 21/21 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:39 | | |
| 112 | +| [`gestion_cem`](gestion_cem.md) | Gestion CEM (portail Eversa) | Montérégie / Montré… | pages HTML (rendu serveur) | direct | 26/26 | 88 % | 100 % | 96 % | actif | 2026-08-25 01:39 | | |
| 113 | +| [`gestion_fauvel`](gestion_fauvel.md) | Gestion Fauvel | Centre-du-Québec | pages HTML (rendu serveur) | direct | 11/11 | 91 % | 91 % | 100 % | actif | 2026-08-24 22:43 | | |
| 114 | +| [`gestion_habitation`](gestion_habitation.md) | Gestion Habitation | Abitibi-Témiscaming… | sitemap XML + pages HTML | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-24 22:43 | | |
| 115 | +| [`gestion_isr`](gestion_isr.md) | Gestion ISR | Centre-du-Québec | pages HTML (rendu serveur) | direct | 20/22 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:43 | | |
| 116 | +| [`gestion_jdm`](gestion_jdm.md) | JDM Gestion immobilière | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 2/2 | 100 % | 0 % | 100 % | actif | 2026-08-24 22:43 | | |
| 117 | +| [`gestion_laprise`](gestion_laprise.md) | Gestion Laprise | Côte-Nord | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 50 % | 100 % | actif | 2026-08-24 22:43 | | |
| 118 | +| [`gestion_legrand`](gestion_legrand.md) | Gestion Le Grand | Centre-du-Québec | API REST WordPress (wp-json) | direct | 5/5 | 40 % | 100 % | 100 % | actif | 2026-08-24 22:43 | | |
| 119 | +| [`gestion_mj`](gestion_mj.md) | Gestion Immobilière M.J | Montréal | API REST WordPress (wp-json) | direct | 9/9 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:39 | | |
| 120 | +| [`gestion_montreal`](gestion_montreal.md) | Gestion Montréal | Montréal | pages HTML (rendu serveur) | direct | 23/26 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:43 | | |
| 121 | +| [`gestion_tb`](gestion_tb.md) | Gestion TB (portail Appartements TB) | Centre-du-Québec | pages HTML (rendu serveur) | direct | 28/37 | 0 % | 100 % | 100 % | actif | 2026-08-24 22:43 | | |
| 122 | +| [`gestion_valco`](gestion_valco.md) | Gestion Valco | Mauricie | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 0 % | 50 % | actif | 2026-08-24 22:43 | | |
| 123 | +| [`gestipro`](gestipro.md) | Gestipro | Québec | pages HTML (rendu serveur) | direct | 99/125 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:43 | | |
| 124 | +| [`gia_t`](gia_t.md) | GIA-T — Gestion Immobilière Abitibi-Tém… | Abitibi-Témiscaming… | pages HTML (rendu serveur) | direct | 5/7 | 80 % | 100 % | 100 % | actif | 2026-08-24 22:43 | | |
| 125 | +| [`gimcote`](gimcote.md) | GIM Côté | Québec | pages HTML (rendu serveur) | direct | 71/95 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:43 | | |
| 126 | +| [`gio`](gio.md) | Gestion Immobilière de l'Outaouais (GIO) | Outaouais | pages HTML (rendu serveur) | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:43 | | |
| 127 | +| [`girescom`](girescom.md) | Girescom gestion immobilière | Québec | pages HTML (rendu serveur) | direct | 40/41 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:43 | | |
| 128 | +| [`girs`](girs.md) | GIRS — Gestion Immobilière de la Rive S… | Chaudière-Appalaches | sitemap XML + pages HTML | direct | 8/8 | 100 % | 0 % | 100 % | actif | 2026-08-24 22:44 | | |
| 129 | +| [`gparadis`](gparadis.md) | GParadis | Québec | pages HTML (rendu serveur) | direct | 22/22 | 82 % | 0 % | 100 % | actif | 2026-08-24 22:44 | | |
| 130 | +| [`grandeur_natura`](grandeur_natura.md) | Grandeur Natura (Groupe Mathieux) | Lanaudière | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:39 | | |
| 131 | +| [`grilli_citea`](grilli_citea.md) | Groupe Grilli Samuel — projet Citéa | Lanaudière | API REST WordPress (wp-json) | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:39 | | |
| 132 | +| [`groupe_dallaire`](groupe_dallaire.md) | Groupe Dallaire (Faubourg du Moulin) | Québec | API admin-ajax (WordPress) | Scrapfly | 255/259 | 100 % | 100 % | 100 % | actif (dégradé) | 2026-08-24 22:50 | | |
| 133 | +| [`groupe_jacques`](groupe_jacques.md) | Groupe Jacques | Centre-du-Québec | pages HTML (rendu serveur) | direct | 10/11 | 100 % | 60 % | 100 % | actif | 2026-08-24 22:51 | | |
| 134 | +| [`groupe_mathieu`](groupe_mathieu.md) | Groupe Mathieu | Laurentides / Lanau… | pages HTML (rendu serveur) | direct | 16/16 | 0 % | 94 % | 100 % | actif | 2026-08-25 01:59 | | |
| 135 | +| [`groupe_maurice`](groupe_maurice.md) | Le Groupe Maurice | Province | API REST WordPress (wp-json) | direct | 203/203 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:51 | | |
| 136 | +| [`groupe_robin`](groupe_robin.md) | Groupe Robin | Mauricie | API admin-ajax (WordPress) | direct | 72/77 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:51 | | |
| 137 | +| [`groupe_theoret`](groupe_theoret.md) | Groupe Théorêt (Gestion Immobilière) | Mauricie | pages HTML (rendu serveur) | direct | 23/43 | 74 % | 100 % | 0 % | actif | 2026-08-24 22:51 | | |
| 138 | +| [`gwlra`](gwlra.md) | GWL Realty Advisors Residential | Montréal | sitemap XML + pages HTML | Scrapfly | 1/1 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:40 | | |
| 139 | +| [`habitations_jeanne`](habitations_jeanne.md) | Les Habitations Jeanne | Côte-Nord | sitemap XML + pages HTML | direct | 14/14 | 100 % | 0 % | 100 % | actif | 2026-08-24 22:51 | | |
| 140 | +| [`habitations_sf`](habitations_sf.md) | Les Habitations SF (S&F Gestion) | Lanaudière | pages HTML (rendu serveur) | direct | 7/7 | 43 % | 86 % | 100 % | actif | 2026-08-24 22:51 | | |
| 141 | +| [`halfred`](halfred.md) | Halfred | Outaouais | pages HTML (rendu serveur) | direct | 169/175 | 93 % | 100 % | 100 % | actif | 2026-08-24 22:52 | | |
| 142 | +| [`hapopex`](hapopex.md) | HAPOPEX — OBNL d'habitation | Montréal | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:40 | | |
| 143 | +| [`hazelview`](hazelview.md) | Hazelview Properties | Montréal | API JSON interne du site | direct | 6/6 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:52 | | |
| 144 | +| [`headway`](headway.md) | La Corporation Headway | Québec | pages HTML (rendu serveur) | direct | 7/7 | 100 % | 0 % | 100 % | actif | 2026-08-24 22:52 | | |
| 145 | +| [`heafey`](heafey.md) | Groupe Heafey (Le We 2, Le We 3, Loggia… | Outaouais | API JSON interne du site | direct | 247/261 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:53 | | |
| 146 | +| [`helio`](helio.md) | Entreprises Hélio | Montérégie | pages HTML (rendu serveur) | direct | 0/0 | — | — | — | actif | 2026-08-25 01:40 | | |
| 147 | +| [`hestia`](hestia.md) | Hestia Groupe immobilier | Mauricie | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:53 | | |
| 148 | +| [`horizon_terrebonne`](horizon_terrebonne.md) | Horizon Terrebonne (Groupe Socam) | Lanaudière | pages HTML (rendu serveur) | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:40 | | |
| 149 | +| [`huma`](huma.md) | HUMĀ Condos locatifs | Québec | pages HTML (rendu serveur) | direct | 39/39 | 100 % | 0 % | 100 % | actif | 2026-08-24 22:53 | | |
| 150 | +| [`humano`](humano.md) | Humano District | Estrie | pages HTML (rendu serveur) | direct | 19/19 | 0 % | 95 % | 100 % | actif | 2026-08-25 01:40 | | |
| 151 | +| [`immeubles_aeb`](immeubles_aeb.md) | Immeubles AEB | Saguenay–Lac-Saint-… | pages HTML (rendu serveur) | direct | 26/26 | 100 % | 100 % | 81 % | actif | 2026-08-24 22:53 | | |
| 152 | +| [`immeubles_bc`](immeubles_bc.md) | Les Immeubles Beaulieu et Collin | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 17/30 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:53 | | |
| 153 | +| [`immeubles_bois`](immeubles_bois.md) | Les Immeubles Bois | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 23/23 | 87 % | 0 % | 100 % | actif | 2026-08-24 22:53 | | |
| 154 | +| [`immeubles_db`](immeubles_db.md) | Les Immeubles D.B. Busque-Massé | Estrie | pages HTML (rendu serveur) | direct | 13/13 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:53 | | |
| 155 | +| [`immeubles_dcl`](immeubles_dcl.md) | Les Immeubles DCL | Abitibi-Témiscaming… | pages HTML (rendu serveur) | direct | 7/11 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:53 | | |
| 156 | +| [`immeubles_guillot`](immeubles_guillot.md) | Les Immeubles Guillot | Québec | pages HTML (rendu serveur) | direct | 7/7 | 57 % | 0 % | 100 % | actif | 2026-08-24 22:53 | | |
| 157 | +| [`immeubles_ouellet`](immeubles_ouellet.md) | Les Immeubles Vianney Ouellet & Fils | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:53 | | |
| 158 | +| [`immeubles_pm`](immeubles_pm.md) | Les Immeubles PM | Estrie | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:53 | | |
| 159 | +| [`immnasr`](immnasr.md) | Les Immeubles Michel Nazair | Outaouais | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:53 | | |
| 160 | +| [`immo_3r`](immo_3r.md) | IMMO 3R | Mauricie | pages HTML (rendu serveur) | direct | 11/11 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:40 | | |
| 161 | +| [`immobilia`](immobilia.md) | Immobilia Rimouski | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 0/3 | — | — | — | actif | 2026-08-24 22:53 | | |
| 162 | +| [`immogex`](immogex.md) | Immogex | Centre-du-Québec | pages HTML (rendu serveur) | direct | 3/3 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:53 | | |
| 163 | +| [`immomarketing`](immomarketing.md) | IMMOMARKETING (Immoappart) | Québec | pages HTML (rendu serveur) | direct | 84/94 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:54 | | |
| 164 | +| [`immostar`](immostar.md) | Immostar | Québec | API REST WordPress (wp-json) | direct | 140/166 | 76 % | 99 % | 100 % | actif | 2026-08-24 22:54 | | |
| 165 | +| [`imvest`](imvest.md) | Société Imvest (Le Méribel) | Québec | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 0 % | 100 % | actif | 2026-08-25 01:41 | | |
| 166 | +| [`in_via`](in_via.md) | IN VIA appartements urbains (CAP Immobi… | Laurentides | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:41 | | |
| 167 | +| [`info_logement`](info_logement.md) | Info-Logement | Lanaudière | pages HTML (rendu serveur) | direct | 56/64 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:54 | | |
| 168 | +| [`inovario`](inovario.md) | Inovario | Montérégie | sitemap XML + pages HTML | direct | 10/10 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:41 | | |
| 169 | +| [`inspire_laval`](inspire_laval.md) | Groupe Inspire | Laval | pages HTML (rendu serveur) | direct | 22/22 | 0 % | 41 % | 100 % | actif | 2026-08-25 01:42 | | |
| 170 | +| [`interrent`](interrent.md) | InterRent REIT (CLV Group) | Montréal | pages HTML (rendu serveur) | direct | 189/215 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:54 | | |
| 171 | +| [`iparc`](iparc.md) | iParc | Montréal | pages HTML (rendu serveur) | direct | 16/16 | 75 % | 100 % | 100 % | actif | 2026-08-25 01:43 | | |
| 172 | +| [`jardins_anna`](jardins_anna.md) | Les Jardins d'Anna | Centre-du-Québec | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:43 | | |
| 173 | +| [`jardins_nd`](jardins_nd.md) | Les Jardins Notre Dame | Centre-du-Québec | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:43 | | |
| 174 | +| [`jcl`](jcl.md) | Petites annonces Groupe JCL | Laurentides | pages HTML (rendu serveur) | direct | 42/42 | 0 % | 90 % | 100 % | actif | 2026-08-25 01:44 | | |
| 175 | +| [`junic`](junic.md) | Junic — Agora Village Urbain | Outaouais | pages HTML (rendu serveur) | direct | 27/27 | 0 % | 100 % | 33 % | actif | 2026-08-25 01:44 | | |
| 176 | +| [`jutras`](jutras.md) | Habitations Jutras | Centre-du-Québec | pages HTML (rendu serveur) | direct | 35/35 | 0 % | 60 % | 100 % | actif | 2026-08-24 22:55 | | |
| 177 | +| [`kangalou`](kangalou.md) | Kangalou | Province | API JSON interne du site | direct | 7781/8559 | 100 % | 100 % | 99 % | actif | 2026-08-24 22:57 | | |
| 178 | +| [`kare`](kare.md) | Kare Gestion Immobilière | Estrie | API JSON interne du site | direct | 52/52 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 179 | +| [`kass`](kass.md) | KASS Property Management | Outaouais | pages HTML (rendu serveur) | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-24 22:57 | | |
| 180 | +| [`katasa`](katasa.md) | Groupe Katasa | Outaouais | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-24 22:57 | | |
| 181 | +| [`kijiji`](kijiji.md) | Kijiji Québec (location) | Province | pages HTML (rendu serveur) | direct | 5372/10365 | 100 % | 97 % | 99 % | actif | 2026-08-24 23:09 | | |
| 182 | +| [`l_laval`](l_laval.md) | Le L Laval | Laval | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 50 % | 100 % | actif | 2026-08-25 01:44 | | |
| 183 | +| [`la_cour`](la_cour.md) | La Cour Appartements | Québec | API REST WordPress (wp-json) | direct | 19/21 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:38 | | |
| 184 | +| [`laberge`](laberge.md) | Groupe Laberge | Québec | pages HTML (rendu serveur) | direct | 57/62 | 93 % | 100 % | 100 % | actif | 2026-08-24 23:09 | | |
| 185 | +| [`labonte`](labonte.md) | Gestion Labonté | Estrie | pages HTML (rendu serveur) | direct | 18/18 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:09 | | |
| 186 | +| [`lac_jerome`](lac_jerome.md) | Habitations du Lac Jérôme (Le Seize, La… | Laurentides | pages HTML (rendu serveur) | direct | 15/15 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 187 | +| [`lachance`](lachance.md) | Les Entreprises Lachance | Estrie | sitemap XML + pages HTML | direct | 72/98 | 93 % | 100 % | 100 % | actif | 2026-08-24 23:11 | | |
| 188 | +| [`lacite`](lacite.md) | La Cité Gatineau (Adam Real Estate) | Outaouais | pages HTML (rendu serveur) | direct | 6/7 | 100 % | 0 % | 100 % | actif | 2026-08-24 23:13 | | |
| 189 | +| [`lafrance_mathieu`](lafrance_mathieu.md) | Lafrance & Mathieu | Québec | pages HTML (rendu serveur) | direct | 38/42 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:13 | | |
| 190 | +| [`lak_nature`](lak_nature.md) | LAK Appartements Nature (Acropole) | Québec | API REST WordPress (wp-json) | direct | 0/0 | — | — | — | actif | 2026-08-25 01:44 | | |
| 191 | +| [`lakle`](lakle.md) | La Klé | Québec | API REST WordPress (wp-json) | direct | 43/49 | 100 % | 53 % | 100 % | actif | 2026-08-24 23:14 | | |
| 192 | +| [`lambert`](lambert.md) | Société Immobilière Lambert | Mauricie | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 50 % | 100 % | actif | 2026-08-24 23:14 | | |
| 193 | +| [`lameer`](lameer.md) | Gestion Lameer | Montréal | pages HTML (rendu serveur) | direct | 15/15 | 0 % | 100 % | 80 % | actif | 2026-08-25 01:44 | | |
| 194 | +| [`laureat_richard`](laureat_richard.md) | Logements Lauréat Richard | Estrie | pages HTML (rendu serveur) | direct | 23/23 | 100 % | 0 % | 100 % | actif | 2026-08-24 23:14 | | |
| 195 | +| [`lbm`](lbm.md) | Groupe Rive-Nord / LBM Gestion Locative | Laurentides | pages HTML (rendu serveur) | direct | 8/8 | 0 % | 50 % | 100 % | actif | 2026-08-25 01:44 | | |
| 196 | +| [`le_730`](le_730.md) | Le 730 Notre-Dame (condos locatifs, mar… | Lanaudière | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 67 % | 100 % | actif | 2026-08-25 01:44 | | |
| 197 | +| [`le_baronet`](le_baronet.md) | Le Baronet | Chaudière-Appalaches | sitemap XML + pages HTML | direct | 4/6 | 0 % | 100 % | 100 % | actif | 2026-08-24 23:14 | | |
| 198 | +| [`le_fjord`](le_fjord.md) | Le Fjord (condos locatifs tout inclus) | Québec | pages HTML (rendu serveur) | direct | 68/68 | 100 % | 100 % | 0 % | actif | 2026-08-25 01:44 | | |
| 199 | +| [`le_george`](le_george.md) | Le George | Montréal | API JSON interne du site | direct | 36/36 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 200 | +| [`le_pilier`](le_pilier.md) | Le Pilier Lévis | Québec | pages HTML (rendu serveur) | direct | 1/1 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 201 | +| [`le_st_georges`](le_st_georges.md) | Le St-Georges | Chaudière-Appalaches | API REST WordPress (wp-json) | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:14 | | |
| 202 | +| [`leclif`](leclif.md) | Le Clif | Québec | pages HTML (rendu serveur) | direct | 10/10 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:14 | | |
| 203 | +| [`ledomaine`](ledomaine.md) | Les Habitations Le Domaine | Montréal | pages HTML (rendu serveur) | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:14 | | |
| 204 | +| [`lelaureat`](lelaureat.md) | Résidences Le Lauréat | Estrie | pages HTML (rendu serveur) | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:14 | | |
| 205 | +| [`lemay_fleury`](lemay_fleury.md) | Lemay Fleury Immobilier | Centre-du-Québec | pages HTML (rendu serveur) | direct | 45/45 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 206 | +| [`lequerre`](lequerre.md) | Habitations L'Équerre | Estrie | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:14 | | |
| 207 | +| [`lespac`](lespac.md) | LesPAC (location) | Province | pages HTML (rendu serveur) | direct | 2242/2974 | 100 % | 97 % | 93 % | actif | 2026-08-24 23:17 | | |
| 208 | +| [`leviu`](leviu.md) | Le VIU / VIU2 (Groupe Heafey) | Outaouais | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-24 23:17 | | |
| 209 | +| [`levivo`](levivo.md) | LeVivo Condos Locatifs | Montérégie | pages HTML (rendu serveur) | direct | 14/14 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 210 | +| [`lienard`](lienard.md) | Liénard (condos locatifs Sainte-Foy) | Québec | pages HTML (rendu serveur) | direct | 7/7 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:44 | | |
| 211 | +| [`linea`](linea.md) | Linéa (District 55) | Mauricie | pages HTML (rendu serveur) | direct | 11/11 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 212 | +| [`lobato`](lobato.md) | Groupe Lobato — vallée du Richelieu | Montérégie | pages HTML (rendu serveur) | direct | 41/41 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:44 | | |
| 213 | +| [`localys`](localys.md) | Gestion Localys | Montréal | pages HTML (rendu serveur) | direct | 12/12 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:45 | | |
| 214 | +| [`location_di`](location_di.md) | Location DI (Groupe Sphère DI) | Mauricie / Lanaudiè… | pages HTML (rendu serveur) | direct | 9/18 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:18 | | |
| 215 | +| [`location_saguenay`](location_saguenay.md) | Location Saguenay | Saguenay–Lac-Saint-… | pages HTML (rendu serveur) | direct | 21/21 | 76 % | 0 % | 100 % | actif | 2026-08-24 23:18 | | |
| 216 | +| [`location_sb`](location_sb.md) | Location Résidentielle SB | Chaudière-Appalaches | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 50 % | 100 % | actif | 2026-08-25 01:45 | | |
| 217 | +| [`loftsmtl`](loftsmtl.md) | Lofts MTL | Montréal | API JSON interne du site | direct | 9/9 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:18 | | |
| 218 | +| [`logement_mauricie`](logement_mauricie.md) | Logement Mauricie (regroupement de prop… | Mauricie | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:18 | | |
| 219 | +| [`loggia`](loggia.md) | Loggia Saint-Lambert | Montérégie | pages HTML (rendu serveur) | direct | 1/1 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:45 | | |
| 220 | +| [`logicom`](logicom.md) | Les Immeubles Logicom | Québec | pages HTML (rendu serveur) | direct | 15/15 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:45 | | |
| 221 | +| [`logiluxx`](logiluxx.md) | Logiluxx (Investissements Cleary) | Montérégie | pages HTML (rendu serveur) | direct | 9/9 | 0 % | 67 % | 100 % | actif | 2026-08-25 01:45 | | |
| 222 | +| [`logis_experts`](logis_experts.md) | Logis-Experts | Québec | API JSON interne du site | direct | 486/519 | 100 % | 100 % | 38 % | actif | 2026-08-24 23:18 | | |
| 223 | +| [`logisbourg`](logisbourg.md) | Logisbourg | Québec | pages HTML (rendu serveur) | direct | 15/19 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:18 | | |
| 224 | +| [`logisco`](logisco.md) | Logisco | Québec | pages HTML (rendu serveur) | direct | 159/186 | 99 % | 100 % | 100 % | actif | 2026-08-24 23:18 | | |
| 225 | +| [`logisma`](logisma.md) | Logisma | Québec | API REST WordPress (wp-json) | direct | 12/20 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:18 | | |
| 226 | +| [`logispro`](logispro.md) | LogisPro Rimouski | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 4/4 | 100 % | 75 % | 100 % | actif | 2026-08-24 23:18 | | |
| 227 | +| [`logispro_mauricie`](logispro_mauricie.md) | LogisPro Mauricie | Mauricie | pages HTML (rendu serveur) | direct | 12/12 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:45 | | |
| 228 | +| [`logisquebec`](logisquebec.md) | LogisQuébec | Province | sitemap XML + pages HTML | direct | 9696/10348 | 100 % | 99 % | 100 % | actif | 2026-08-24 23:27 | | |
| 229 | +| [`lok36`](lok36.md) | LOK 36 | Laurentides | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:45 | | |
| 230 | +| [`lokalia`](lokalia.md) | Espaces Lokalia | Québec | API admin-ajax (WordPress) | direct | 130/141 | 100 % | 82 % | 100 % | actif | 2026-08-24 23:29 | | |
| 231 | +| [`louer_ca`](louer_ca.md) | Louer.ca | Province | API GraphQL interne | direct | 4518/6025 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:35 | | |
| 232 | +| [`louer_saguenay`](louer_saguenay.md) | Louer Saguenay | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:35 | | |
| 233 | +| [`louis14`](louis14.md) | Quartier Louis Quatorze (Groupe Damco) | Québec | pages HTML (rendu serveur) | direct | 17/18 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:36 | | |
| 234 | +| [`louis_alexandre`](louis_alexandre.md) | Le Louis-Alexandre | Montérégie | pages HTML (rendu serveur) | direct | 6/6 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:45 | | |
| 235 | +| [`lr_gestion`](lr_gestion.md) | LR Gestion immobilière (LR Location) | Outaouais | pages HTML (rendu serveur) | direct | 103/117 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:36 | | |
| 236 | +| [`lsr`](lsr.md) | LSR GesDev — NOVIA (centre-ville Longue… | Montérégie | pages HTML (rendu serveur) | direct | 81/81 | 54 % | 100 % | 100 % | actif | 2026-08-25 01:45 | | |
| 237 | +| [`luxuor`](luxuor.md) | Les Immeubles Luxuor | Saguenay–Lac-Saint-… | pages HTML (rendu serveur) | direct | 4/4 | 75 % | 0 % | 100 % | actif | 2026-08-24 23:36 | | |
| 238 | +| [`lynk_olymbec`](lynk_olymbec.md) | Lynk (Olymbec) | Montréal | pages HTML (rendu serveur) | Firecrawl | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:36 | | |
| 239 | +| [`m3_laval`](m3_laval.md) | M3 Mirabel (condos locatifs) | Laurentides | pages HTML (rendu serveur) | direct | 8/8 | 100 % | 0 % | 100 % | actif | 2026-08-25 01:45 | | |
| 240 | +| [`m_immobilier`](m_immobilier.md) | M Immobilier (location) | Montréal | pages HTML (rendu serveur) | direct | 179/207 | 57 % | 100 % | 100 % | actif | 2026-08-24 23:36 | | |
| 241 | +| [`majestic`](majestic.md) | Le Majestic du Lac Boivin | Montérégie | pages HTML (rendu serveur) | direct | 1/1 | 100 % | 100 % | 0 % | actif | 2026-08-24 23:36 | | |
| 242 | +| [`marquise_8`](marquise_8.md) | Marquise 8 | Laval | pages HTML (rendu serveur) | direct | 47/47 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:45 | | |
| 243 | +| [`martin_roy`](martin_roy.md) | Construction Martin Roy | Chaudière-Appalaches | pages HTML (rendu serveur) | direct | 0/0 | — | — | — | actif | 2026-08-25 01:45 | | |
| 244 | +| [`matinale`](matinale.md) | Gestion Matinale | Estrie | pages HTML (rendu serveur) | direct | 43/46 | 58 % | 100 % | 100 % | actif | 2026-08-24 23:37 | | |
| 245 | +| [`may_bourg`](may_bourg.md) | Gestion May Bourg | Centre-du-Québec | API REST WordPress (wp-json) | direct | 6/7 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:37 | | |
| 246 | +| [`medway`](medway.md) | Groupe Medway | Bas-Saint-Laurent | pages HTML (rendu serveur) | direct | 481/499 | 91 % | 100 % | 100 % | actif | 2026-08-24 23:38 | | |
| 247 | +| [`mellem`](mellem.md) | Mellem (Groupe Mach) | Outaouais | sitemap XML + pages HTML | direct | 86/95 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:38 | | |
| 248 | +| [`mercille`](mercille.md) | Groupe Mercille | Montérégie | pages HTML (rendu serveur) | direct | 9/9 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:45 | | |
| 249 | +| [`mercini`](mercini.md) | Groupe Mercini (Gestion Faleschini Merc… | Québec | pages HTML (rendu serveur) | direct | 45/53 | 96 % | 100 % | 100 % | actif | 2026-08-24 23:39 | | |
| 250 | +| [`metcap`](metcap.md) | MetCap Living | Montréal | pages HTML (rendu serveur) | direct | 8/8 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:39 | | |
| 251 | +| [`miner`](miner.md) | Le Miner | Montérégie (Granby) | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:45 | | |
| 252 | +| [`minto`](minto.md) | Minto Apartments | Montréal | pages HTML (rendu serveur) | direct | 19/20 | 84 % | 100 % | 100 % | actif | 2026-08-24 23:39 | | |
| 253 | +| [`mkar`](mkar.md) | Gestion Immobilière MKAR | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 5/5 | 100 % | 0 % | 100 % | actif | 2026-08-24 23:39 | | |
| 254 | +| [`moderno`](moderno.md) | Moderno Construction | Lanaudière | pages HTML (rendu serveur) | direct | 7/7 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:39 | | |
| 255 | +| [`mondev`](mondev.md) | Mondev | Montréal | pages HTML (rendu serveur) | direct | 41/49 | 44 % | 100 % | 100 % | actif | 2026-08-24 23:40 | | |
| 256 | +| [`montagnais`](montagnais.md) | Le Montagnais, résidences étudiantes | Estrie | API admin-ajax (WordPress) | direct | 31/31 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:40 | | |
| 257 | +| [`morguard`](morguard.md) | Morguard (Morguard Living) | Montréal | pages HTML (rendu serveur) | direct | 84/84 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:46 | | |
| 258 | +| [`morin`](morin.md) | Constructions Morin | Estrie | pages HTML (rendu serveur) | direct | 6/7 | 83 % | 100 % | 100 % | actif | 2026-08-24 23:40 | | |
| 259 | +| [`mostra`](mostra.md) | Mostra (Cogir) | Montérégie / Laval … | pages HTML (rendu serveur) | direct | 21/21 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:46 | | |
| 260 | +| [`mountbridge`](mountbridge.md) | MountBridge (incl. ELEVA) | Montréal | pages HTML (rendu serveur) | direct | 34/34 | 0 % | 97 % | 100 % | actif | 2026-08-25 01:46 | | |
| 261 | +| [`msi`](msi.md) | MSI Gestion immobilière | Québec | pages HTML (rendu serveur) | direct | 98/112 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:40 | | |
| 262 | +| [`multi_logis`](multi_logis.md) | Multi-Logis | Côte-Nord | sitemap XML + pages HTML | direct | 27/27 | 100 % | 96 % | 70 % | actif | 2026-08-24 23:40 | | |
| 263 | +| [`nelson`](nelson.md) | Le Nelson | Montérégie (Brome-M… | pages HTML (rendu serveur) | direct | 0/0 | — | — | — | actif | 2026-08-25 01:46 | | |
| 264 | +| [`nexliving`](nexliving.md) | NexLiving Communities (REIT) | Outaouais / Abitibi… | pages HTML (rendu serveur) | direct | 11/11 | 0 % | 73 % | 100 % | actif | 2026-08-25 01:47 | | |
| 265 | +| [`niddamour`](niddamour.md) | Nid d'Amour | Montréal | API JSON interne du site | direct | 14/14 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:40 | | |
| 266 | +| [`nomade`](nomade.md) | Nomade Gestion immobilière | Québec | pages HTML (rendu serveur) | direct | 10/10 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:47 | | |
| 267 | +| [`novelo`](novelo.md) | Les Appartements Novelo | Saguenay–Lac-Saint-… | sitemap XML + pages HTML | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:40 | | |
| 268 | +| [`novo_stjean`](novo_stjean.md) | NOVO St-Jean (Atimco) | Montérégie | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:47 | | |
| 269 | +| [`obohec`](obohec.md) | O'bohec (Voyer & Tremblay) | Laurentides | pages HTML (rendu serveur) | direct | 1/1 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:47 | | |
| 270 | +| [`ocartier`](ocartier.md) | OCartier (phase 2) | Laval | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:47 | | |
| 271 | +| [`oklouer`](oklouer.md) | OK Louer (location temporaire) | Québec | pages HTML (rendu serveur) | direct | 41/41 | 98 % | 100 % | 100 % | actif | 2026-08-24 23:41 | | |
| 272 | +| [`omhm`](omhm.md) | OMHM — logements abordables | Montréal | pages HTML (rendu serveur) | direct | 3/4 | 67 % | 100 % | 0 % | actif | 2026-08-24 23:41 | | |
| 273 | +| [`org_dupuis`](org_dupuis.md) | Organisation Dupuis | Montérégie / Estrie… | pages HTML (rendu serveur) | direct | 49/49 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:48 | | |
| 274 | +| [`osgoode`](osgoode.md) | Osgoode Properties | Outaouais | API JSON interne du site | direct | 4/4 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:41 | | |
| 275 | +| [`oxford`](oxford.md) | Appartements Oxford | Estrie | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-24 23:41 | | |
| 276 | +| [`per`](per.md) | Les Immeubles Paul-E. Richard | Québec | pages HTML (rendu serveur) | direct | 3/4 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:41 | | |
| 277 | +| [`phg`](phg.md) | Habitations PHG | Laurentides | sitemap XML + pages HTML | direct | 8/8 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:48 | | |
| 278 | +| [`picard`](picard.md) | Picard Immobilier | Québec | pages HTML (rendu serveur) | direct | 29/34 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:41 | | |
| 279 | +| [`place_barrage`](place_barrage.md) | Place du Barrage | Estrie | pages HTML (rendu serveur) | direct | 10/10 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:48 | | |
| 280 | +| [`place_florimay`](place_florimay.md) | Place Florimay | Chaudière-Appalaches | API REST WordPress (wp-json) | direct | 0/0 | — | — | — | actif | 2026-08-24 23:41 | | |
| 281 | +| [`plan_a`](plan_a.md) | Plan A Immobilier | Montréal | pages HTML (rendu serveur) | direct | 11/11 | 91 % | 91 % | 100 % | actif | 2026-08-24 23:41 | | |
| 282 | +| [`plantation`](plantation.md) | Domaine de la Plantation | Mauricie | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:48 | | |
| 283 | +| [`port_de_mer`](port_de_mer.md) | Port de Mer | Montérégie | sitemap XML + pages HTML | direct | 1/1 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:48 | | |
| 284 | +| [`primo`](primo.md) | Primo Immobilier — Lumicité Condominium… | Montérégie | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:48 | | |
| 285 | +| [`pro_urbain`](pro_urbain.md) | Gestion Pro-Urbain | Lanaudière | pages HTML (rendu serveur) | direct | 18/18 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:48 | | |
| 286 | +| [`probloc`](probloc.md) | Probloc CL inc. | Centre-du-Québec | pages HTML (rendu serveur) | direct | 24/24 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:48 | | |
| 287 | +| [`progim`](progim.md) | Progim | Montréal | pages HTML (rendu serveur) | direct | 63/73 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:41 | | |
| 288 | +| [`projection_immo`](projection_immo.md) | Projection Immobilière | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 1/1 | 100 % | 0 % | 100 % | actif | 2026-08-24 23:42 | | |
| 289 | +| [`promenade_des_forts`](promenade_des_forts.md) | Promenade des Forts | Québec | pages HTML (rendu serveur) | direct | 2/2 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:42 | | |
| 290 | +| [`prona`](prona.md) | Gestion Prona | Montérégie | pages HTML (rendu serveur) | direct | 8/8 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:48 | | |
| 291 | +| [`proprio_direct`](proprio_direct.md) | Proprio Direct (location) | Province | API JSON interne du site | direct | 184/199 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:42 | | |
| 292 | +| [`quanta`](quanta.md) | Gestion Quanta | Outaouais | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-24 23:42 | | |
| 293 | +| [`quartier_7`](quartier_7.md) | Quartier 7 (condos locatifs, avenue de … | Lanaudière | pages HTML (rendu serveur) | direct | 89/89 | 100 % | 0 % | 100 % | actif | 2026-08-25 01:48 | | |
| 294 | +| [`quartier_horizon`](quartier_horizon.md) | Quartier Horizon | Québec | pages HTML (rendu serveur) | direct | 17/17 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:48 | | |
| 295 | +| [`quartier_mosaique`](quartier_mosaique.md) | Quartier Mosaïque (Constrobourg) | Québec | pages HTML (rendu serveur) | direct | 24/24 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:42 | | |
| 296 | +| [`quartier_oree`](quartier_oree.md) | Quartier Orée | Chaudière-Appalaches | pages HTML (rendu serveur) | direct | 28/31 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:42 | | |
| 297 | +| [`quartier_plus`](quartier_plus.md) | Le Quartier Plus | Chaudière-Appalaches | sitemap XML + pages HTML | direct | 59/59 | 100 % | 97 % | 100 % | actif | 2026-08-24 23:42 | | |
| 298 | +| [`quartier_sila`](quartier_sila.md) | Quartier Sila | Québec | pages HTML (rendu serveur) | direct | 198/200 | 100 % | 26 % | 100 % | actif | 2026-08-24 23:42 | | |
| 299 | +| [`rakotta`](rakotta.md) | Rakotta Real Estate (Dorchester, Gramer… | Montréal | pages HTML (rendu serveur) | direct | 187/187 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:48 | | |
| 300 | +| [`realstar`](realstar.md) | Realstar | Montréal | API JSON interne du site | direct | 9/9 | 100 % | 89 % | 100 % | actif | 2026-08-24 23:42 | | |
| 301 | +| [`remax_quebec`](remax_quebec.md) | RE/MAX Québec (location) | Province | pages HTML (rendu serveur) | direct | 3227/3567 | 100 % | 100 % | 99 % | actif | 2026-08-24 23:49 | | |
| 302 | +| [`rentals_ca`](rentals_ca.md) | Rentals.ca (Québec) | Province | API GraphQL interne | Scrapfly | 4692/5705 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:55 | | |
| 303 | +| [`rentalys`](rentalys.md) | Rentalys | Montréal | pages HTML (rendu serveur) | direct | 18/19 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:55 | | |
| 304 | +| [`res_cogir`](res_cogir.md) | Résidences Cogir (RPA) | Province | sitemap XML + pages HTML | direct | 262/262 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:51 | | |
| 305 | +| [`res_soleil`](res_soleil.md) | Les Résidences Soleil | Province | API REST WordPress (wp-json) | direct | 54/54 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:52 | | |
| 193 | 306 | | [`rivero`](rivero.md) | Le Rivero | Québec | pages HTML (rendu serveur) | direct | 0/214 | — | — | — | désactivé (disabled=True) | — | |
| 194 | −| [`roomies`](roomies.md) | Roomies.ca | Province | sitemap XML + pages HTML | direct | 279/308 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:07 | | |
| 195 | −| [`roussin`](roussin.md) | Immeubles Roussin | Québec | pages HTML (rendu serveur) | direct | 36/36 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:07 | | |
| 196 | −| [`royal_lepage`](royal_lepage.md) | Royal LePage (location) | Province | pages HTML (rendu serveur) | direct | 949/1138 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:09 | | |
| 197 | −| [`savouet`](savouet.md) | Groupe Savouet | Estrie | pages HTML (rendu serveur) | direct | 15/17 | 93 % | 100 % | 100 % | actif | 2026-08-22 19:09 | | |
| 198 | −| [`sdg`](sdg.md) | SDG Immobilier | Québec | pages HTML (rendu serveur) | direct | 9/11 | 89 % | 0 % | 100 % | actif | 2026-08-22 19:09 | | |
| 199 | −| [`sentinelle`](sentinelle.md) | La Sentinelle (Groupe Immobilier Brochu) | Québec | pages HTML (rendu serveur) | direct | 9/11 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:09 | | |
| 200 | −| [`sgiq`](sgiq.md) | SGIQ (Société de gestion immobilière du… | Québec | pages HTML (rendu serveur) | direct | 147/147 | 99 % | 100 % | 100 % | actif | 2026-08-22 19:09 | | |
| 201 | −| [`shdm`](shdm.md) | SHDM | Montréal | API GraphQL interne | direct | 1/23 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:09 | | |
| 202 | −| [`siagi`](siagi.md) | SIA Gestion Immobilière | Estrie | pages HTML (rendu serveur) | direct | 6/6 | 100 % | 100 % | 0 % | actif | 2026-08-22 19:09 | | |
| 203 | −| [`sibelanger`](sibelanger.md) | Société immobilière Bélanger | Québec | pages HTML (rendu serveur) | direct | 12/22 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:09 | | |
| 204 | −| [`sig`](sig.md) | Société d'investissement Gilbert (résid… | Québec | pages HTML (rendu serveur) | direct | 4/4 | 75 % | 100 % | 100 % | actif | 2026-08-22 19:09 | | |
| 205 | −| [`simard`](simard.md) | Immeubles Simard | Québec | pages HTML (rendu serveur) | direct | 5/5 | 20 % | 40 % | 100 % | actif | 2026-08-22 19:09 | | |
| 206 | −| [`simplex`](simplex.md) | Simplex Immobilier | Mauricie | API JSON interne du site | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-22 19:09 | | |
| 207 | −| [`somex_saintnicolas`](somex_saintnicolas.md) | Somex Saint-Nicolas | Québec | pages HTML (rendu serveur) | direct | 145/145 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:09 | | |
| 208 | −| [`souleymane`](souleymane.md) | Gestion Souleymane | Outaouais | pages HTML (rendu serveur) | direct | 13/14 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:09 | | |
| 209 | −| [`stb_immobilier`](stb_immobilier.md) | STB Immobilier | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 11/11 | 91 % | 73 % | 100 % | actif | 2026-08-22 19:09 | | |
| 210 | −| [`summum`](summum.md) | Gestion immobilière Summum | Laurentides | pages HTML (rendu serveur) | direct | 89/97 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:09 | | |
| 211 | −| [`sutton`](sutton.md) | Groupe Sutton Québec (location) | Province | sitemap XML + pages HTML | direct | 1205/1493 | 99 % | 100 % | 100 % | actif | 2026-08-22 19:10 | | |
| 212 | −| [`terater`](terater.md) | Les Constructions Tèratèr | Estrie | pages HTML (rendu serveur) | direct | 12/14 | 67 % | 100 % | 100 % | actif | 2026-08-22 19:10 | | |
| 213 | −| [`terra`](terra.md) | Terra Condos locatifs | Québec | pages HTML (rendu serveur) | direct | 28/51 | 100 % | 89 % | 100 % | actif | 2026-08-22 19:10 | | |
| 214 | −| [`thrace`](thrace.md) | Gestions Thrace | Mauricie | sitemap XML + pages HTML | direct | 162/182 | 100 % | 65 % | 100 % | actif | 2026-08-22 19:10 | | |
| 215 | −| [`tri_logis`](tri_logis.md) | Société immobilière Tri-Logis | Abitibi-Témiscaming… | pages HTML (rendu serveur) | direct | 0/1 | — | — | — | actif | 2026-08-22 19:10 | | |
| 307 | +| [`roomies`](roomies.md) | Roomies.ca | Province | sitemap XML + pages HTML | direct | 278/323 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:56 | | |
| 308 | +| [`roussin`](roussin.md) | Immeubles Roussin | Québec | pages HTML (rendu serveur) | direct | 36/36 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:56 | | |
| 309 | +| [`royal_laval`](royal_laval.md) | Gestion Immobilière Royal | Laval | pages HTML (rendu serveur) | direct | 16/16 | 0 % | 88 % | 100 % | actif | 2026-08-25 01:53 | | |
| 310 | +| [`royal_lepage`](royal_lepage.md) | Royal LePage (location) | Province | pages HTML (rendu serveur) | direct | 952/1161 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:59 | | |
| 311 | +| [`saint_michel`](saint_michel.md) | Le Saint-Michel | Montréal | pages HTML (rendu serveur) | direct | 9/9 | 0 % | 89 % | 100 % | actif | 2026-08-25 01:53 | | |
| 312 | +| [`samcon`](samcon.md) | Samcon (condos locatifs) | Montréal | API JSON interne du site | direct | 5/5 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:53 | | |
| 313 | +| [`san_leon`](san_leon.md) | San Leon (phases 4-5) | Laurentides | API JSON interne du site | direct | 82/82 | 0 % | 11 % | 100 % | actif | 2026-08-25 01:53 | | |
| 314 | +| [`saro`](saro.md) | Les Constructions Saro | Montérégie | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:53 | | |
| 315 | +| [`savouet`](savouet.md) | Groupe Savouet | Estrie | pages HTML (rendu serveur) | direct | 15/17 | 93 % | 100 % | 100 % | actif | 2026-08-24 23:59 | | |
| 316 | +| [`sdg`](sdg.md) | SDG Immobilier | Québec | pages HTML (rendu serveur) | direct | 9/11 | 89 % | 0 % | 100 % | actif | 2026-08-24 23:59 | | |
| 317 | +| [`sentinelle`](sentinelle.md) | La Sentinelle (Groupe Immobilier Brochu) | Québec | pages HTML (rendu serveur) | direct | 8/11 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:59 | | |
| 318 | +| [`sept_elements`](sept_elements.md) | Les 7 Éléments (Propriétés Mach) | Québec | pages HTML (rendu serveur) | direct | 16/16 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:53 | | |
| 319 | +| [`serra`](serra.md) | SERRA Montréal (1124 De Bleury) | Montréal | pages HTML (rendu serveur) | direct | 14/14 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:53 | | |
| 320 | +| [`sgiq`](sgiq.md) | SGIQ (Société de gestion immobilière du… | Québec | pages HTML (rendu serveur) | direct | 147/147 | 99 % | 100 % | 100 % | actif | 2026-08-24 23:59 | | |
| 321 | +| [`shdm`](shdm.md) | SHDM | Montréal | API GraphQL interne | direct | 2/25 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:59 | | |
| 322 | +| [`sherplex`](sherplex.md) | Sherplex immobilier | Estrie | pages HTML (rendu serveur) | direct | 15/15 | 0 % | 40 % | 100 % | actif | 2026-08-25 01:53 | | |
| 323 | +| [`siagi`](siagi.md) | SIA Gestion Immobilière | Estrie | pages HTML (rendu serveur) | direct | 6/6 | 100 % | 100 % | 0 % | actif | 2026-08-24 23:59 | | |
| 324 | +| [`sibelanger`](sibelanger.md) | Société immobilière Bélanger | Québec | pages HTML (rendu serveur) | direct | 12/22 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:59 | | |
| 325 | +| [`sig`](sig.md) | Société d'investissement Gilbert (résid… | Québec | pages HTML (rendu serveur) | direct | 4/4 | 75 % | 100 % | 100 % | actif | 2026-08-24 23:59 | | |
| 326 | +| [`signature_bois_franc`](signature_bois_franc.md) | Signature Bois-Franc — condos locatifs | Montréal | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 100 % | 0 % | actif | 2026-08-25 01:53 | | |
| 327 | +| [`signature_boisbriand`](signature_boisbriand.md) | Signature Boisbriand | Laurentides | pages HTML (rendu serveur) | direct | 13/13 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:54 | | |
| 328 | +| [`simard`](simard.md) | Immeubles Simard | Québec | pages HTML (rendu serveur) | direct | 5/5 | 20 % | 40 % | 100 % | actif | 2026-08-24 23:59 | | |
| 329 | +| [`simplex`](simplex.md) | Simplex Immobilier | Mauricie | API JSON interne du site | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-24 23:59 | | |
| 330 | +| [`sofia`](sofia.md) | Le Sofia — Groupe Lacombe (Varennes) | Montérégie | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:54 | | |
| 331 | +| [`solaris`](solaris.md) | Solaris Boisbriand | Laurentides | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:54 | | |
| 332 | +| [`solis_levis`](solis_levis.md) | Solis Lévis | Québec | pages HTML (rendu serveur) | direct | 22/22 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:54 | | |
| 333 | +| [`somex_saintnicolas`](somex_saintnicolas.md) | Somex Saint-Nicolas | Québec | pages HTML (rendu serveur) | direct | 145/145 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:59 | | |
| 334 | +| [`sotramont`](sotramont.md) | Sotramont (Liveo / Curtiss) | Montréal / Lanaudiè… | pages HTML (rendu serveur) | direct | 8/8 | 0 % | 75 % | 100 % | actif | 2026-08-25 01:54 | | |
| 335 | +| [`souleymane`](souleymane.md) | Gestion Souleymane | Outaouais | pages HTML (rendu serveur) | direct | 13/14 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:59 | | |
| 336 | +| [`sovima`](sovima.md) | Sovima Habitation — AlterEGO, Le Nest, … | Montérégie | pages HTML (rendu serveur) | direct | 11/11 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:54 | | |
| 337 | +| [`square_philippe`](square_philippe.md) | Square Philippe | Outaouais | pages HTML (rendu serveur) | direct | 16/16 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:54 | | |
| 338 | +| [`st_charles_granby`](st_charles_granby.md) | Le St-Charles | Montérégie (Granby) | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:54 | | |
| 339 | +| [`station_horizon`](station_horizon.md) | Station Horizon | Montérégie | pages HTML (rendu serveur) | direct | 6/6 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:54 | | |
| 340 | +| [`stb_immobilier`](stb_immobilier.md) | STB Immobilier | Bas-Saint-Laurent | sitemap XML + pages HTML | direct | 11/11 | 91 % | 73 % | 100 % | actif | 2026-08-24 23:59 | | |
| 341 | +| [`summit`](summit.md) | Summit Property Management | Montréal | API JSON interne du site | direct | 30/30 | 100 % | 100 % | 100 % | actif | 2026-08-25 01:55 | | |
| 342 | +| [`summum`](summum.md) | Gestion immobilière Summum | Laurentides | pages HTML (rendu serveur) | direct | 89/97 | 100 % | 100 % | 100 % | actif | 2026-08-24 23:59 | | |
| 343 | +| [`sutton`](sutton.md) | Groupe Sutton Québec (location) | Province | sitemap XML + pages HTML | direct | 1214/1528 | 99 % | 100 % | 100 % | actif | 2026-08-25 00:01 | | |
| 344 | +| [`symbio`](symbio.md) | Symbio (Développement FTG / Claridge) | Lanaudière | pages HTML (rendu serveur) | direct | 37/37 | 0 % | 100 % | 0 % | actif | 2026-08-25 01:55 | | |
| 345 | +| [`terater`](terater.md) | Les Constructions Tèratèr | Estrie | pages HTML (rendu serveur) | direct | 12/14 | 67 % | 100 % | 100 % | actif | 2026-08-25 00:01 | | |
| 346 | +| [`terra`](terra.md) | Terra Condos locatifs | Québec | pages HTML (rendu serveur) | direct | 26/51 | 100 % | 88 % | 100 % | actif | 2026-08-25 00:01 | | |
| 347 | +| [`terrasse_pionniers`](terrasse_pionniers.md) | Terrasse des Pionniers (appartements ne… | Laurentides | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:55 | | |
| 348 | +| [`thrace`](thrace.md) | Gestions Thrace | Mauricie | sitemap XML + pages HTML | direct | 161/182 | 100 % | 65 % | 100 % | actif | 2026-08-25 00:01 | | |
| 349 | +| [`tour_fides`](tour_fides.md) | La Tour Fides | Montréal | pages HTML (rendu serveur) | direct | 10/10 | 0 % | 90 % | 100 % | actif | 2026-08-25 01:55 | | |
| 350 | +| [`tours_st_martin`](tours_st_martin.md) | Les Tours Saint-Martin | Laval | pages HTML (rendu serveur) | direct | 41/41 | 0 % | 39 % | 100 % | actif | 2026-08-25 01:55 | | |
| 351 | +| [`trams`](trams.md) | T.R.A.M.S Property Management | Montréal | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:55 | | |
| 352 | +| [`treana`](treana.md) | TREANA | Montérégie | pages HTML (rendu serveur) | direct | 45/45 | 0 % | 0 % | 100 % | actif | 2026-08-25 01:56 | | |
| 353 | +| [`tri_logis`](tri_logis.md) | Société immobilière Tri-Logis | Abitibi-Témiscaming… | pages HTML (rendu serveur) | direct | 46/52 | 100 % | 100 % | 91 % | actif | 2026-08-25 00:01 | | |
| 354 | +| [`trouve_ton_appart`](trouve_ton_appart.md) | Trouve Ton Appart (Construction Léandre… | Chaudière-Appalaches | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:56 | | |
| 216 | 355 | | [`trudel`](trudel.md) | Trudel (Fleur de Lys, LGC) | Québec | pages HTML (rendu serveur) | direct | 0/30 | — | — | — | désactivé (disabled=True) | — | |
| 217 | −| [`trylon`](trylon.md) | Trylon Apartments | Montréal | pages HTML (rendu serveur) | direct | 7/7 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:10 | | |
| 218 | −| [`ubee`](ubee.md) | Ubee (location) | Province | API JSON interne du site | direct | 243/249 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:10 | | |
| 219 | −| [`uptimo`](uptimo.md) | Uptimo Gestion immobilière | Estrie | pages HTML (rendu serveur) | direct | 60/78 | 98 % | 98 % | 100 % | actif | 2026-08-22 19:11 | | |
| 220 | −| [`urban_services`](urban_services.md) | Urban Services (Urban Tenant Solutions) | Outaouais | pages HTML (rendu serveur) | direct | 44/56 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:11 | | |
| 221 | −| [`utile`](utile.md) | UTILE (logement étudiant) | Montréal | pages HTML (rendu serveur) | direct | 28/28 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:11 | | |
| 222 | −| [`via_capitale`](via_capitale.md) | Via Capitale (location) | Province | pages HTML (rendu serveur) | Firecrawl | 192/217 | 54 % | 100 % | 100 % | actif | 2026-08-22 19:11 | | |
| 223 | −| [`viridi`](viridi.md) | Le Viridi | Québec | pages HTML (rendu serveur) | direct | 16/17 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:11 | | |
| 224 | −| [`wandji`](wandji.md) | Gestion Immobilière Wandji | Outaouais | API JSON interne du site | direct | 26/31 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:11 | | |
| 225 | −| [`werkliv`](werkliv.md) | Werkliv | Montréal | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-22 19:11 | | |
| 226 | −| [`zumper`](zumper.md) | Zumper (Québec) | Province | API JSON interne du site | direct | 4811/5095 | 100 % | 100 % | 100 % | actif | 2026-08-22 19:16 | | |
| 356 | +| [`trylon`](trylon.md) | Trylon Apartments | Montréal | pages HTML (rendu serveur) | direct | 7/7 | 100 % | 100 % | 100 % | actif | 2026-08-25 00:01 | | |
| 357 | +| [`ubee`](ubee.md) | Ubee (location) | Province | API JSON interne du site | direct | 241/249 | 100 % | 100 % | 100 % | actif | 2026-08-25 00:01 | | |
| 358 | +| [`uneo`](uneo.md) | Unéo Gestion Immobilière | Montérégie | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:56 | | |
| 359 | +| [`uptimo`](uptimo.md) | Uptimo Gestion immobilière | Estrie | pages HTML (rendu serveur) | direct | 62/78 | 98 % | 98 % | 100 % | actif | 2026-08-25 00:01 | | |
| 360 | +| [`urban_services`](urban_services.md) | Urban Services (Urban Tenant Solutions) | Outaouais | pages HTML (rendu serveur) | direct | 45/57 | 100 % | 100 % | 100 % | actif | 2026-08-25 00:02 | | |
| 361 | +| [`utile`](utile.md) | UTILE (logement étudiant) | Montréal | pages HTML (rendu serveur) | direct | 28/28 | 100 % | 100 % | 100 % | actif | 2026-08-25 00:02 | | |
| 362 | +| [`vallem`](vallem.md) | Vallem — quartier Lumicité (Saint-Mathi… | Montérégie | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:56 | | |
| 363 | +| [`vallensis`](vallensis.md) | Vallensis | Montérégie | pages HTML (rendu serveur) | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:56 | | |
| 364 | +| [`vestric`](vestric.md) | Vestric — Condos locatifs | Montérégie | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 0 % | 0 % | actif | 2026-08-25 01:56 | | |
| 365 | +| [`vi_laval`](vi_laval.md) | Vï Condos Locatifs (Danam Lacourse) | Lanaudière | pages HTML (rendu serveur) | direct | 58/58 | 0 % | 91 % | 100 % | actif | 2026-08-25 01:56 | | |
| 366 | +| [`via_capitale`](via_capitale.md) | Via Capitale (location) | Province | pages HTML (rendu serveur) | Firecrawl | 190/217 | 54 % | 100 % | 100 % | actif | 2026-08-25 00:02 | | |
| 367 | +| [`viridi`](viridi.md) | Le Viridi | Québec | pages HTML (rendu serveur) | direct | 16/17 | 100 % | 100 % | 100 % | actif | 2026-08-25 00:02 | | |
| 368 | +| [`vision_immo`](vision_immo.md) | Vision Immo | Montréal | pages HTML (rendu serveur) | direct | 6/6 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:56 | | |
| 369 | +| [`vita_stl`](vita_stl.md) | Appartements VITA | Montréal | API admin-ajax (WordPress) | direct | 3/3 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:56 | | |
| 370 | +| [`viventi`](viventi.md) | Viventi | Laval | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:56 | | |
| 371 | +| [`voltige`](voltige.md) | Le Voltige (DevImmo — Hélia, Belvédère,… | Montréal | pages HTML (rendu serveur) | direct | 206/206 | 11 % | 11 % | 100 % | actif | 2026-08-25 01:56 | | |
| 372 | +| [`wandji`](wandji.md) | Gestion Immobilière Wandji | Outaouais | API JSON interne du site | direct | 26/31 | 100 % | 100 % | 100 % | actif | 2026-08-25 00:02 | | |
| 373 | +| [`werkliv`](werkliv.md) | Werkliv | Montréal | pages HTML (rendu serveur) | direct | 4/4 | 0 % | 100 % | 100 % | actif | 2026-08-25 00:02 | | |
| 374 | +| [`westwalk`](westwalk.md) | Westwalk DDO | Montréal | pages HTML (rendu serveur) | direct | 2/2 | 0 % | 100 % | 100 % | actif | 2026-08-25 01:56 | | |
| 375 | +| [`zumper`](zumper.md) | Zumper (Québec) | Province | API JSON interne du site | direct | 4804/5181 | 100 % | 100 % | 100 % | actif | 2026-08-25 00:06 | | |
| 227 | 376 | |
| 228 | 377 | ## Entrées du registre sans module connecteur |
| 229 | 378 | |
@@ -232,12 +381,14 @@ Sources recensées mais non connectées (voir le champ `status` du registre pour | ||
| 232 | 381 | - `alexandre_pelletier` — Les Immeubles Alexandre Pelletier (non connectable) |
| 233 | 382 | - `beaulieu_gestion` — Beaulieu Gestion Immobilière (non connectable) |
| 234 | 383 | - `bloc` — Société Immobilière BLOC (non connectable) |
| 384 | +- `carre_windsor` — Carré Windsor (non connectable) | |
| 235 | 385 | - `cloria` — Cloria (non connectable actuellement) |
| 236 | 386 | - `condos_laurentides` — Condos Laurentides (Le Rocher / Le Rivya) (non connectable) |
| 237 | 387 | - `custeau_centro` — Groupe Custeau / Espace Centro (Le MW) (non connectable actuellement) |
| 238 | 388 | - `danelly` — Groupe Immobilier Danelly (non connectable) |
| 239 | 389 | - `devco` — Groupe Devco Immobilier (non connectable) |
| 240 | 390 | - `developlex` — Déveloplex (non connectable) |
| 391 | +- `esplanade_cartier` — Esplanade Cartier (Prével) (non connectable) | |
| 241 | 392 | - `gci` — Les Immeubles GCI (non connectable) |
| 242 | 393 | - `gestion77` — Gestion Immobilière 7/7 (non connectable) |
| 243 | 394 | - `gestion_buro` — Gestion immobilière Buro (non connectable) |
@@ -262,6 +413,7 @@ Sources recensées mais non connectées (voir le champ `status` du registre pour | ||
| 262 | 413 | - `lib_emd` — Lib Aylmer (EMD-Bâtimo) (non connectable) |
| 263 | 414 | - `lm_gestion` — LM Gestion Immobilière (non connectable) |
| 264 | 415 | - `logements_cote_sud` — Les Logements Côte du Sud (LCS) inc. (non connectable) |
| 416 | +- `logements_horizon` — Logements Horizon (non connectable) | |
| 265 | 417 | - `lpl` — Immeubles L.P.L. (Loyer Sherbrooke) (non connectable) |
| 266 | 418 | - `maitre_carre` — Maître Carré (non connectable) |
| 267 | 419 | - `maltais` — Gestion Immobilière Maltais (non connectable) |
@@ -269,13 +421,16 @@ Sources recensées mais non connectées (voir le champ `status` du registre pour | ||
| 269 | 421 | - `mcf_immo` — MCF Immobilier (Groupe MCF / Marcel Charest et Fils) (non connectable) |
| 270 | 422 | - `mcs5` — Groupe MCS5 (non connectable) |
| 271 | 423 | - `memphremagog` — Groupe Immobilier Memphrémagog (non connectable) |
| 424 | +- `metropolis` — Gestion Immobilière Metropolis (non connectable) | |
| 272 | 425 | - `mka` — MKA Gestion Immobilière (non connectable) |
| 273 | 426 | - `mkg_prestige` — MK Gestion Prestige (non connectable) |
| 274 | 427 | - `nicolyn` — Société Nicolyn (non connectable) |
| 275 | 428 | - `novard` — Constructions Novard (non connectable) |
| 276 | 429 | - `odyssee` — Groupe Odyssée (Le Vivo, Novium, Quantum…) (non connectable) |
| 430 | +- `omhq` — OMHQ — Office municipal d'habitation de Québec (parc non su… (non connectable) | |
| 277 | 431 | - `padmapper` — PadMapper (couvert via zumper) |
| 278 | 432 | - `penates` — Gestion Immobilière Pénates et Lares (non connectable) |
| 433 | +- `pentagones` — Les Pentagones (non connectable) | |
| 279 | 434 | - `presquile` — Logis Presqu'Île (non connectable) |
| 280 | 435 | - `prestiplex` — Prestiplex (non connectable) |
| 281 | 436 | - `proplex` — Gestion immobilière Proplex (Immobilier 3C) (non connectable) |
@@ -288,6 +443,9 @@ Sources recensées mais non connectées (voir le champ `status` du registre pour | ||
| 288 | 443 | - `rou_bec` — Gestions des immeubles Rou-Bec (non connectable) |
| 289 | 444 | - `serviceplus` — Gestion immobilière Service Plus (non connectable actuellement) |
| 290 | 445 | - `six80` — Appartements Six80 (non connectable) |
| 446 | +- `skyline` — Skyline Living (REIT pancanadien) (non connectable) | |
| 447 | +- `sphere` — Sphère immobilier (non connectable) | |
| 448 | +- `station_g` — Station G appartements locatifs (Cogir) (non connectable) | |
| 291 | 449 | - `symphonie` — Symphonie de Cowansville (non connectable) |
| 292 | 450 | - `tourliv` — Tourliv (Rizzo Capital) (non connectable) |
| 293 | 451 | - `vallees` — Gestion des Vallées (non connectable) |
modified
docs/connecteurs/aalto.md
+5 −11
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Aalto Suites (Zibi / Dream) — connecteur `aalto` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 24/35 |
| 6 | 6 | |
@@ -49,26 +49,20 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:44 — 24 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 24 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 2.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 35 au total, **24 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 5 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-18 15:44 | database is locked | | |
| 68 | −| 2026-08-18 15:37 | database is locked | | |
| 69 | −| 2026-08-18 15:35 | database is locked | | |
| 70 | −| 2026-08-18 15:28 | database is locked | | |
| 71 | −| 2026-08-18 15:25 | database is locked | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 72 | 66 | |
| 73 | 67 | Rejouer la source seule : `python3 run.py sync aalto` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='aalto' ORDER BY ts DESC LIMIT 5;`). |
| 74 | 68 | |
modified
docs/connecteurs/acceslogis_gb.md
+5 −8
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Accès Logis GB — connecteur `acceslogis_gb` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Lanaudière / Mauricie · Backend : direct · Annonces actives : 10/11 |
| 6 | 6 | |
@@ -49,23 +49,20 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:44 — 10 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 10 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 11 au total, **10 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 20 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 2 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-18 15:29 | database is locked | | |
| 68 | −| 2026-08-17 17:46 | HTTPSConnectionPool(host='acceslogisgb.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError("HTTPSConnection(host='acceslogisgb.com'… | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 69 | 66 | |
| 70 | 67 | Rejouer la source seule : `python3 run.py sync acceslogis_gb` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='acceslogis_gb' ORDER BY ts DESC LIMIT 5;`). |
| 71 | 68 | |
added
docs/connecteurs/aera3r.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Aera (réseau Momentum) — Trois-Rivières, Saint-Hyacinthe, La Présentation — connecteur `aera3r` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 6/6 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Aera Trois-Rivières + réseau aera.ca Condos locatifs neufs « tout inclus » du réseau Aera (Momentum) : - aera3r.com — tour du centre-ville de Trois-Rivières (875, rue de la Terrière), emménagement été 2026 : 1 ch. 1 600 $, 1 ch. + bureau 1 800 $, 2 ch. 2 300 $ tout inclus ; - esplanadegirouard.ca — 560, rue Girouard Ouest, Saint-Hyacinthe (12 unités) : 2 ch. dès 1 610 $, 3 ch. dès 1 810 $ ; - petitquartier.ca — maisons de ville, 603, rue Principale, La Présentation : dès 2 535 $/mois. aerasaintlambert.com ne publie AUCUN prix (formulaire seulement) et aerachambly.com est déjà couvert ailleurs (doc) — tous deux exclus. Sites Webflow statiques page unique rendus serveur : on extrait du texte les motifs « <typologie> à partir de (seulement) <prix>$ ». ⚠️ Les pages contiennent aussi des menus de budget de formulaire (« 1 100 $ par mois »…) — ignorés car sans « à partir de ». Granularité = typologie par projet. external_id = <projet>-<typologie en slug> — stable. | |
| 10 | + | |
| 11 | +- **Site** : https://aera3r.com | |
| 12 | +- **Page des annonces** : https://aera3r.com/ | |
| 13 | +- **Secteurs couverts** : Trois-Rivières (centre-ville), Saint-Hyacinthe (Esplanade sur Girouard), La Présentation (Le Petit Quartier) | |
| 14 | +- **Module** : `louka/connectors/aera3r.py` — classe `Aera3RConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://aera3r.com/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://aera3r.com/ · https://esplanadegirouard.ca/ · https://petitquartier.ca/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 1.0 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 6 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 1 chambre — Aera Trois-Rivières | | |
| 33 | +| `address` | Adresse civique | 100 % | 875, rue de la Terrière, Trois-Rivières | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Trois-Rivières | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 600 $ | | |
| 38 | +| `bedrooms` | Chambres | 83 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 83 % | 2027-04-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | 1 chambre au Aera Trois-Rivières (875, rue de la Terrière, Trois-Rivières) — condos locat… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://aera3r.com/images/cam01-p-500.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://aera3r.com/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:34 — 6 trouvées, +6 / ~0 / -0 | |
| 53 | +- **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 6 au total, **6 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync aera3r` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='aera3r' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 1.0 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/aera_chambly.md
+78 −0
@@ -0,0 +1,78 @@ | ||
| 1 | +# Aera Chambly Signature (réseau Aera / Biophilia) — connecteur `aera_chambly` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 0/0 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Aera Chambly (aerachambly.com — « Aera Chambly Signature », complexe de condominiums locatifs riverains au 1878, avenue Bourgogne / 225, rue Caron, Chambly — réseau Aera / Biophilia, distinct du connecteur aera3r qui couvre aera3r.com, esplanadegirouard.ca et petitquartier.ca). Le site Webflow n'affiche aucun prix en dur : la page /plans embarque le widget Planpoint (app.planpoint.io/Aera-Chambly4/aera) — on interroge l'API JSON publique via le helper _planpoint.py. Granularité = UNITÉ (prix, pi², chambres, étage, plans). Seules les unités « Available » sont retenues — au 2026-08-25 les 144 unités sont Sold/Reserved (inventaire vide, le connecteur captera les libérations futures). | |
| 10 | + | |
| 11 | +- **Site** : https://aerachambly.com | |
| 12 | +- **Page des annonces** : https://aerachambly.com/plans | |
| 13 | +- **Secteurs couverts** : Chambly (1878, avenue Bourgogne — 144 condos locatifs riverains ; inventaire complet Sold/Reserved au 2026-08-25, le connecteur captera les libérations) | |
| 14 | +- **Module** : `louka/connectors/aera_chambly.py` — classe `AeraChamblyConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://aerachambly.com/plans | |
| 20 | +- **URLs de départ (constantes du module)** : https://aerachambly.com/plans | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 0 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | — | — | | |
| 33 | +| `address` | Adresse civique | — | — | | |
| 34 | +| `city` | Ville (normalisée) | — | — | | |
| 35 | +| `sector` | Secteur / quartier | — | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | — | — | | |
| 37 | +| `price` | Loyer mensuel ($) | — | — | | |
| 38 | +| `bedrooms` | Chambres | — | — | | |
| 39 | +| `bathrooms` | Salles de bain | — | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | — | — | | |
| 41 | +| `availability_date` | Date de disponibilité | — | — | | |
| 42 | +| `lat` | GPS (lat/lng) | — | — | | |
| 43 | +| `description` | Description | — | — | | |
| 44 | +| `images` | Photos (JSON) | — | — | | |
| 45 | +| `amenities` | Commodités (JSON) | — | — | | |
| 46 | +| `details` | Détails additionnels (JSON) | — | — | | |
| 47 | +| `url` | URL de l'annonce source | — | — | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:34 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 0 au total, **0 actives** | |
| 59 | +- **Première ingestion** : — · **Dernière observation** : — | |
| 60 | +- **Complétude clé (actives)** : GPS — · prix — · photos — · description — | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync aera_chambly` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='aera_chambly' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/agence_sherbrooke.md
+23 −27
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Agence de location Sherbrooke (groupe Prestiplex) — connecteur `agence_sherbrooke` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 13/19 | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 17/19 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,48 +25,44 @@ connecteur Agence de location Sherbrooke (agencedelocationsherbrooke.com) — le | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 13 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 17 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | 89 des pins #4, East Angus | | |
| 33 | −| `address` | Adresse civique | 100 % | 89, Rue des Pins | | |
| 34 | −| `city` | Ville (normalisée) | 100 % | East Angus | | |
| 35 | −| `sector` | Secteur / quartier | 69 % | — | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 895 $ | | |
| 38 | −| `bedrooms` | Chambres | 100 % | 2 | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 1595 lalemant #401 | | |
| 33 | +| `address` | Adresse civique | 100 % | 1595, Rue Lalemant | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Sherbrooke | | |
| 35 | +| `sector` | Secteur / quartier | 76 % | Les Nations | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 095 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 3 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 8 % | — | | |
| 41 | −| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | −| `lat` | GPS (lat/lng) | 100 % | 45.4879551 | | |
| 43 | −| `description` | Description | 100 % | À louer – 4 ½ au 89 des pins, East Angus Disponible dès maintenant – logement situé au 1e… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 8 photo(s) — https://agencedelocationsherbrooke.com/wp-content/uploads/2026/04/image-2026… | | |
| 45 | −| `amenities` | Commodités (JSON) | 100 % | ["2 Chambres", "1 Salle de bain", "Chat permis", "Déneigement", "Entré lave-vaisselle", "… | | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": false, "electricity": false, "hot_water": false}, "appliances"… | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://agencedelocationsherbrooke.com/property/89-des-pins-4-east-angus/ | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 6 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-10-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.3856018 | | |
| 43 | +| `description` | Description | 100 % | 5 ½ à louer – Disponible le 1er octobre Caractéristiques : 1 espace de stationnement incl… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 9 photo(s) — https://agencedelocationsherbrooke.com/wp-content/uploads/2026/07/image-2026… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["3 Chambres", "1 Salle de bain", "Chat permis", "Déneigement", "Eau chaude", "Entré lave… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true}, "appliances": {"washer_dryer": true}, "pets": "condit… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://agencedelocationsherbrooke.com/property/1595-lalemant-401/ | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:44 — 13 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 10 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 19 au total, **13 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 19 au total, **17 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 3 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-18 16:05 | database is locked | | |
| 68 | −| 2026-08-18 15:42 | database is locked | | |
| 69 | −| 2026-08-18 15:38 | database is locked | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 70 | 66 | |
| 71 | 67 | Rejouer la source seule : `python3 run.py sync agence_sherbrooke` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='agence_sherbrooke' ORDER BY ts DESC LIMIT 5;`). |
| 72 | 68 | |
modified
docs/connecteurs/akelius.md
+8 −10
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Akelius Montréal — connecteur `akelius` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 231/302 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 219/306 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Akelius Residential (rent.akelius.com) Page de recherche Canada rendu | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 231 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 219 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -49,22 +49,20 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:44 — 231 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 219 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 302 au total, **231 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 306 au total, **219 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-18 16:06 | database is locked | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 68 | 66 | |
| 69 | 67 | Rejouer la source seule : `python3 run.py sync akelius` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='akelius' ORDER BY ts DESC LIMIT 5;`). |
| 70 | 68 | |
modified
docs/connecteurs/alexcellence.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immeubles Alexcellence — connecteur `alexcellence` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 6/6 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:44 — 6 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 6 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 6 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 50 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/alfid.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Groupe Alfid — connecteur `alfid` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 57/57 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Groupe Alfid (alfidlouer.ca) Gestionnaire montréalais (Plateau, Ville-Marie, Verdun, Anjou, CDN). Plateforme Rentsync / The Lift System : découverte des immeubles via l'API officielle du site (api.theliftsystem.com/v2/search, jeton public embarqué dans le JS), puis parsing des fiches /properties/<slug> rendues serveur — rangées div.suite (type, chambres, salles de bain, prix, pi²), id stable via le modal « Inquire Now » (#modal-suite-<id>), photos par suite ou galerie de l'immeuble (assets.rentsync.com/alfid_group). Le parsing des rangées est partagé avec Douek (douek.py), même gabarit Rentsync. | |
| 10 | + | |
| 11 | +- **Site** : https://www.alfidlouer.ca | |
| 12 | +- **Page des annonces** : https://www.alfidlouer.ca/properties | |
| 13 | +- **Secteurs couverts** : Montréal (Plateau, Ville-Marie, Côte-des-Neiges), Verdun, Anjou | |
| 14 | +- **Module** : `louka/connectors/alfid.py` — classe `AlfidConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API JSON interne du site | |
| 19 | +- **Endpoint de base** : https://api.theliftsystem.com/v2/search | |
| 20 | +- **URLs de départ (constantes du module)** : https://api.theliftsystem.com/v2/search | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : pagination par offset | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 57 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 645 Gordon — 1 Bedroom | | |
| 33 | +| `address` | Adresse civique | 100 % | 645 Avenue Gordon, Verdun, QC H4G 2R7 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Verdun | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 100 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 21 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.4613528 | | |
| 43 | +| `description` | Description | 100 % | This building located on Gordon Street consists of 37 apartments including 2½, 3½ and 4½ … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://assets.rentsync.com/alfid_group/images/gallery/1152/1638212520512_6… | | |
| 45 | +| `amenities` | Commodités (JSON) | 96 % | ["Balconies", "Fridge", "Heating included", "Stove", "Convenience store", "Laundry facili… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true}, "appliances": {"fridge": true, "stove": true}, "balcony… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://alfidlouer.ca/properties/manoir-metropole | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:34 — 57 trouvées, +57 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 57 au total, **57 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync alfid` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='alfid' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/alias_appartements.md
+5 −7
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Alias Appartements — connecteur `alias_appartements` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -49,22 +49,20 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:44 — 1 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-18 15:30 | HTTPSConnectionPool(host='www.aliasappartements.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError("HTTPSConnection(host='www.alia… | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 68 | 66 | |
| 69 | 67 | **Note du registre** : actif — 1 annonce « catalogue » à granularité projet (type 4½, à partir de 1575 $, caractéristiques, photos) ; disponibilités par formulaire seulement |
| 70 | 68 | |
modified
docs/connecteurs/alouer_sherbrooke.md
+5 −7
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # À Louer Sherbrooke — connecteur `alouer_sherbrooke` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -49,22 +49,20 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:44 — 1 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-18 15:49 | database is locked | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 68 | 66 | |
| 69 | 67 | Rejouer la source seule : `python3 run.py sync alouer_sherbrooke` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='alouer_sherbrooke' ORDER BY ts DESC LIMIT 5;`). |
| 70 | 68 | |
modified
docs/connecteurs/apartments_com.md
+7 −7
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Apartments.com (CoStar) — connecteur `apartments_com` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Province · Backend : direct · Annonces actives : 615/615 |
| 6 | 6 | |
@@ -39,7 +39,7 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 23 % | 1 | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 2 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 33 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 40 % | 45.49181 | | |
| 42 | +| `lat` | GPS (lat/lng) | 68 % | 45.49181 | | |
| 43 | 43 | | `description` | Description | 40 % | Place du Fort est un immeuble d'appartements situé au cœur de Montréal, une ville inspira… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 23 photo(s) — https://images1.apartments.com/i2/U8NaqvSrDRFxjRV-gt5W7Q4kjHyqkDFW9FxafM5yi… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 40 % | ["Cats Allowed", "Maintenance on site", "Controlled Access", "Elevator", "Laundry Facilit… | |
@@ -48,17 +48,17 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:17 — 615 trouvées, +615 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 615 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 615 au total, **615 actives** |
| 59 | −- **Première ingestion** : 2026-08-22 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 40 % · prix 100 % · photos 100 % · description 40 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 59 | +- **Première ingestion** : 2026-08-22 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 68 % · prix 100 % · photos 100 % · description 40 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 26, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
added
docs/connecteurs/apero.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Apéro Appartement — connecteur `apero` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Lanaudière / Montréal · Backend : direct · Annonces actives : 482/482 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Apéro Appartement (aperoappartement.com) Trois immeubles locatifs neufs : Apéro Teasdale (900 boul. Lucille- Teasdale, Terrebonne), Apéro Charlemagne (115 boul. Céline-Dion, Charlemagne) et Apéro LaSalle (Montréal, arrondissement LaSalle). Site Webflow ; la gestion est sur Building Stack (app.buildingstack.com, portail résident sans annonces publiques). L'inventaire vient de : - le CMS Webflow exposé via le proxy de l'agence Momentumm (tools.momentumm.ca/webflow_cms_new.php?collection_id=<id>) : une entrée par unité (numero stable « ter101 » / « char1228 », étage, typologie, superficie, chambres, sdb, drapeau disponibilite) — la collection et le code d'immeuble (« ter » / « char ») sont lus dans les blocs cachés #units-collection-id / #building-code des pages ; - les pages /terrebonne /charlemagne /lasalle : prix plancher par typologie (« À partir de 1250$ ») et photos — le CMS n'a pas de prix par unité (champs prix/braquette vides pour les unités disponibles). Granularité : unité pour Terrebonne/Charlemagne ; typologie pour LaSalle (aucune collection d'unités sur cette page). Location résidentielle longue durée (bail standard), pas de meublé court terme. | |
| 10 | + | |
| 11 | +- **Site** : https://www.aperoappartement.com | |
| 12 | +- **Page des annonces** : https://www.aperoappartement.com/terrebonne | |
| 13 | +- **Secteurs couverts** : Terrebonne (Lachenaie), Charlemagne, Montréal (LaSalle) | |
| 14 | +- **Module** : `louka/connectors/apero.py` — classe `AperoConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API JSON interne du site | |
| 19 | +- **Endpoint de base** : https://www.aperoappartement.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.aperoappartement.com · https://tools.momentumm.ca/webflow_cms_new.php | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 482 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Apéro Terrebonne — Unité 106 | | |
| 33 | +| `address` | Adresse civique | 99 % | 900 Boulevard Lucille-Teasdale, Terrebonne | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Terrebonne | | |
| 35 | +| `sector` | Secteur / quartier | 28 % | Lachenaie | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 970 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 99 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 99 % | 1115 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Modèle 50 — 1115 pi² — étage 1 — 2 chambre(s) — 1 salle(s) de bain | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://cdn.prod.website-files.com/652fefc2cee084433bf7a35a/655b6fece6d4d6a… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.aperoappartement.com/terrebonne | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:34 — 482 trouvées, +482 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 482 au total, **482 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync apero` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='apero' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/app_urbains.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Appartements Urbains — connecteur `app_urbains` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 17/21 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 17/24 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -34,7 +34,7 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Québec | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Limoilou | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 88 % | 3½ | |
| 37 | −| `price` | Loyer mensuel ($) | 82 % | 1 630 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 88 % | 1 630 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 88 % | 1 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 88 % | 915 | |
@@ -49,15 +49,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:44 — 17 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 17 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 21 au total, **17 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 82 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 24 au total, **17 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 88 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/appartements_rimouski.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Appartements Rimouski (Immeubles DTM) — connecteur `appartements_rimouski` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 20/24 | |
| 5 | +**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 21/24 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Appartements Rimouski (Immeubles DTM — appartementsrimouski.com, Ri | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 20 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 21 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -36,27 +36,27 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 95 % | 5½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 750 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 3 | |
| 39 | −| `bathrooms` | Salles de bain | 85 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 86 % | 1 | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 48.3760046 | |
| 43 | 43 | | `description` | Description | 100 % | Nous avons un beau logement 5 1/2 neuf de qualité supérieure à vous proposer, parfait pou… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 13 photo(s) — https://www.appartementsrimouski.com/wp-content/uploads/sites/334/2026/08/i… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["3 chambre(s)", "1 SDB"] | |
| 46 | −| `details` | Détails additionnels (JSON) | 85 % | {"inclusions": {"heating": false, "electricity": false, "internet": true}, "appliances": … | | |
| 46 | +| `details` | Détails additionnels (JSON) | 86 % | {"inclusions": {"heating": false, "electricity": false, "internet": true}, "appliances": … | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.appartementsrimouski.com/logements/5-1-2-neuf-dans-le-secteur-du-bic | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:44 — 20 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 21 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 24 au total, **20 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 24 au total, **21 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 8 en erreur |
| 62 | 62 | |
added
docs/connecteurs/arpents_verts.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Domaine les Arpents Verts (Société Immobilière GBS) — connecteur `arpents_verts` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Domaine les Arpents Verts (domainelesarpentsverts.com — Société Immobilière GBS, ~199 portes à Saint-Hyacinthe). WordPress rendu serveur : une page par typologie sous /le-projet/ (« Logements 4 ½ », « Logements 5 ½ secteur St-Joseph », « Logements 5 ½ secteur Douville »), découvertes via le menu de l'accueil. Granularité : une annonce par page typologie/secteur (aucun prix publié, superficie et commodités dans la prose). | |
| 10 | + | |
| 11 | +- **Site** : https://domainelesarpentsverts.com | |
| 12 | +- **Page des annonces** : https://domainelesarpentsverts.com/le-projet/ | |
| 13 | +- **Secteurs couverts** : Saint-Hyacinthe (secteurs Douville et St-Joseph, ~199 portes) | |
| 14 | +- **Module** : `louka/connectors/arpents_verts.py` — classe `ArpentsVertsConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://domainelesarpentsverts.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://domainelesarpentsverts.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Domaine les Arpents Verts — Logements 4 1 2 | | |
| 33 | +| `address` | Adresse civique | 0 % | — | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Hyacinthe | | |
| 35 | +| `sector` | Secteur / quartier | 67 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 2 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 67 % | 1200 | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Conçus pour maximiser la lumière naturelle, nos appartements 4 ½ offrent une ambiance cha… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 20 photo(s) — https://domainelesarpentsverts.com/wp-content/uploads/2024/12/DSC_8985-scal… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Ascenseurs et stationnements", "Air climatisé mural et échangeur d’air", "2 balcons par… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "elevator": true, "balcony": true, "pool": true, "storage": true, "parking":… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://domainelesarpentsverts.com/le-projet/logements-4-1-2/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:35 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync arpents_verts` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='arpents_verts' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/ascensio.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Groupe Ascensio — connecteur `ascensio` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 9/10 | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 9/11 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -30,7 +30,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 3½ Logement 301 — 20 Bryant | |
| 33 | −| `address` | Adresse civique | 44 % | 20 Bryant | | |
| 33 | +| `address` | Adresse civique | 56 % | 20 Bryant | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Sherbrooke | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
@@ -39,7 +39,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 727 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 44 % | 45.3991595 | | |
| 42 | +| `lat` | GPS (lat/lng) | 56 % | 45.3991595 | | |
| 43 | 43 | | `description` | Description | 100 % | Luxueux logement neuf d’une superficie de 727 pi2 avec plafond de 9,2 pieds de hauteur. V… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 9 photo(s) — https://groupeascensio.com/wp-content/uploads/2024/11/IMG_1907.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Immeuble : 20 Bryant", "Cuisine : 13'-8\\" x 9'-4\\"", "Salle à manger : 12'-6\\" x 6'-… | |
@@ -49,15 +49,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:44 — 9 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 9 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 10 au total, **9 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 44 % · prix 100 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 11 au total, **9 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 56 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/atimco.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Atimco — connecteur `atimco` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 299/299 | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 297/299 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Atimco (atimco.ca) — gestionnaire familial de la Rive-Sud/Montéré | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 299 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 297 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -49,16 +49,16 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:45 — 299 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 297 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 299 au total, **299 actives** | |
| 59 | −- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 299 au total, **297 actives** | |
| 59 | +- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 99 % · photos 96 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 46, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/atlas_immo.md
+3 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Atlas société immobilière — connecteur `atlas_immo` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 0/0 |
| 6 | 6 | |
@@ -49,7 +49,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:45 — 0 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
@@ -58,14 +58,13 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 58 | 58 | - **Annonces en BD** : 0 au total, **0 actives** |
| 59 | 59 | - **Première ingestion** : — · **Dernière observation** : — |
| 60 | 60 | - **Complétude clé (actives)** : GPS — · prix — · photos — · description — |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 2 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | 65 | | Date | Message (sync_log) | |
| 66 | 66 | |---|---| |
| 67 | 67 | | 2026-08-19 08:08 | HTTPConnectionPool(host='www.atlasimmo.ca', port=80): Read timed out. (read timeout=30) | |
| 68 | −| 2026-08-18 15:32 | HTTPConnectionPool(host='www.atlasimmo.ca', port=80): Read timed out. (read timeout=30) | | |
| 69 | 68 | |
| 70 | 69 | **Note du registre** : actif — inventaire à 0 le 2026-08-09 (parc plein, le site ne rend des cartes que pour les logements libres) ; fixture rejouant l'état réel du 2023-02-24 via la Wayback Machine |
| 71 | 70 | |
added
docs/connecteurs/aube.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Aubé Immobilier — connecteur `aube` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Capitale-Nationale · Backend : direct · Annonces actives : 2/2 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Aubé Immobilier (aubeimmo.com) Gestionnaire de Québec (Sainte-Foy, Limoilou) ; site de location www.appartements-quebec.ca = portail Building Stack en marque blanche (même code .NET que les portails *.bstk.io des connecteurs summum.py / org_dupuis.py / urban_services.py) : - /Listing/Listings embarque `var units = [...]` (ApartmentId stable, prix, pi², chambres, sdb, adresse complète avec GPS, contact) ; - les pages immeuble /b/<id> donnent la date de disponibilité par unité et les commodités de l'immeuble (cache self.detail). Petit parc : une poignée d'unités affichées à la fois. Le portail publie « Ville de Québec » comme ville -> ramené à « Québec ». | |
| 10 | + | |
| 11 | +- **Site** : https://www.aubeimmo.com | |
| 12 | +- **Page des annonces** : https://www.appartements-quebec.ca/Listing/Listings | |
| 13 | +- **Secteurs couverts** : Québec (Sainte-Foy, Limoilou) | |
| 14 | +- **Module** : `louka/connectors/aube.py` — classe `AubeConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.appartements-quebec.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.appartements-quebec.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 1069 Rue de la Loire — Unité 5 | | |
| 33 | +| `address` | Adresse civique | 100 % | 1069 Rue de la Loire, Ville de Québec, QC G1V 2Z6, Canada | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Québec | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 615 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 0 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 50 % | 148 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.7751235 | | |
| 43 | +| `description` | Description | 100 % | 148 pi² | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 4 photo(s) — https://wfiles.buildingstack.com/resources/image/KqOqJ6nOENL6QqehP3b9J6KrM5X… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Salle de buanderie", "Stationnement extérieur"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"laundry": true, "parking": {"available": true, "type": "extérieur"}, "bedrooms": 0, "ba… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.appartements-quebec.ca/b/20162294612000188816/29123 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:35 — 2 trouvées, +2 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 2 au total, **2 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync aube` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='aube' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/aula.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # AULA Lévis — connecteur `aula` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 68/70 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:45 — 68 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 68 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 70 au total, **68 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/axia.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Axia Appartements — connecteur `axia` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:45 — 2 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/barnes_quebec.md
+15 −15
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # BARNES Québec (location) — connecteur `barnes_quebec` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 101/110 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 106/115 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,21 +25,21 @@ BARNES Québec (barnes-quebec.com) — LOCATIONS Agence de prestige (Montréal, | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 101 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 106 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 6675 Rue St-Urbain #302 Montréal (Rosemont/La Petite-Patrie) (Montréal) | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 6675 Rue St-Urbain #302 | |
| 34 | −| `city` | Ville (normalisée) | 96 % | Montréal | | |
| 35 | −| `sector` | Secteur / quartier | 73 % | Rosemont/La Petite-Patrie | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 97 % | 4½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 99 % | 2 600 $ | | |
| 38 | −| `bedrooms` | Chambres | 97 % | 2 | | |
| 39 | −| `bathrooms` | Salles de bain | 98 % | 1 | | |
| 40 | −| `area_sqft` | Superficie (pi²) | 71 % | 775 | | |
| 34 | +| `city` | Ville (normalisée) | 93 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 72 % | Rosemont/La Petite-Patrie | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 94 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 96 % | 2 600 $ | | |
| 38 | +| `bedrooms` | Chambres | 94 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 95 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 70 % | 775 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 100 % | 45.53074 | | |
| 42 | +| `lat` | GPS (lat/lng) | 97 % | 45.53074 | | |
| 43 | 43 | | `description` | Description | 100 % | La PETITE-ITALIE et un dernier étage !! Face aux studios Mila et Behaviour Interactive, c… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 42 photo(s) — https://barnes-quebec.com/wp-content/uploads/2026/08/24043507-addcb7eda4967… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
@@ -49,16 +49,16 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:45 — 101 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 103 trouvées, +3 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.25 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `HITS_PER_PAGE` = 100, `MAX_PAGES` = 40 |
| 56 | 56 | |
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | −- **Annonces en BD** : 110 au total, **101 actives** | |
| 60 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 61 | −- **Complétude clé (actives)** : GPS 100 % · prix 99 % · photos 100 % · description 100 % | |
| 59 | +- **Annonces en BD** : 115 au total, **106 actives** | |
| 60 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-25 | |
| 61 | +- **Complétude clé (actives)** : GPS 97 % · prix 96 % · photos 100 % · description 100 % | |
| 62 | 62 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 63 | 63 | |
| 64 | 64 | ## Erreurs connues & dépannage |
added
docs/connecteurs/bati5.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Bâti5 — Boisés Dion — connecteur `bati5` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 1/1 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Bâti5 — Boisés Dion (www.bati5.ca) Condos locatifs neufs (sixplex) au 7150, rue Jean-Claude-Langlois, Boisbriand (quartier Boisés Dion). Zoho Sites rendu SERVEUR : la page d'accueil contient des cartes typologie « n½ [+ bureau] (niveau X) … à partir de NNNN $ [PROMO* $] … 1 unité disponible pour … » ou « Tous loués… ». On ignore les segments « masqué: … » (contenu caché par l'éditeur) et on NE GARDE que les typologies avec « n unité(s) disponible(s) ». Granularité : TYPOLOGIE (prix « à partir de »). | |
| 10 | + | |
| 11 | +- **Site** : https://www.bati5.ca | |
| 12 | +- **Page des annonces** : https://www.bati5.ca/ | |
| 13 | +- **Secteurs couverts** : Boisbriand (Boisés Dion — 7150, rue Jean-Claude-Langlois) | |
| 14 | +- **Module** : `louka/connectors/bati5.py` — classe `Bati5Connector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.bati5.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.bati5.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Bâti5 — Boisés Dion — 5½ + bureau (niveau RDC) | | |
| 33 | +| `address` | Adresse civique | 100 % | 7150, rue Jean-Claude-Langlois, Boisbriand | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Boisbriand | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 450 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 3 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 2 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | 3 chambres + bureau + 2 salles de bain | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://www.bati5.ca/files/Banni%C3%A8re%20Facebook%2019-783%20-%20Sixplex%2… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.bati5.ca/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:35 — 1 trouvées, +1 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 1 au total, **1 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync bati5` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='bati5' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/beaudoin.md
+5 −7
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Société Beaudoin Immobilier — connecteur `beaudoin` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 12/12 |
| 6 | 6 | |
@@ -49,22 +49,20 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:45 — 12 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 12 au total, **12 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-18 15:54 | database is locked | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 68 | 66 | |
| 69 | 67 | Rejouer la source seule : `python3 run.py sync beaudoin` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='beaudoin' ORDER BY ts DESC LIMIT 5;`). |
| 70 | 68 | |
modified
docs/connecteurs/beaulieu_groupe.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Beaulieu Groupe Immobilier (BGI) — connecteur `beaulieu_groupe` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:45 — 5 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/beloeil_94.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Le 94 Vieux-Beloeil — connecteur `beloeil_94` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 1/1 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le 94 Vieux-Beloeil (94beloeil.ca) Immeuble unique au 915, rue Guertin (Vieux-Beloeil) : commerce au RDC et 8 appartements 3½ (1 c.c.) au-dessus. Site vitrine statique (constructeur maison, rendu serveur) : une seule offre affichée sous forme de bandeau « 3 1/2 disponible <mois année> » + liste des inclusions. Granularité : typologie (une annonce 3½ quand l'immeuble affiche une disponibilité). | |
| 10 | + | |
| 11 | +- **Site** : https://www.94beloeil.ca | |
| 12 | +- **Page des annonces** : https://www.94beloeil.ca/ | |
| 13 | +- **Secteurs couverts** : Beloeil (Vieux-Beloeil, 915 rue Guertin) | |
| 14 | +- **Module** : `louka/connectors/beloeil_94.py` — classe `Beloeil94Connector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.94beloeil.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.94beloeil.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — Le 94 Vieux-Beloeil | | |
| 33 | +| `address` | Adresse civique | 100 % | 915, rue Guertin, Beloeil | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Beloeil | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Vieux-Beloeil | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 685 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Immeuble construit en 2020 avec commerce au RDC et 8 unités d'une chambre à coucher au-de… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 15 photo(s) — https://www.94beloeil.ca/uploads/1595473830cuisine-vray-1-min-cut0617.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["5 électro inclus", "Construction 2020", "685 à 747 pieds carrés", "5 électroménagers in… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"fridge": true}, "ac": true, "balcony": true, "parking": {"available": tr… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.94beloeil.ca/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:35 — 1 trouvées, +1 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 1 au total, **1 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync beloeil_94` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='beloeil_94' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/bestlife.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Gestions Bestlife — connecteur `bestlife` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 15/16 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:45 — 15 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 15 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 16 au total, **15 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 87 % · prix 100 % · photos 100 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/boardwalk.md
+5 −5
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Boardwalk REIT — connecteur `boardwalk` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 100/100 |
| 6 | 6 | |
@@ -38,7 +38,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 97 % | — | |
| 41 | −| `availability_date` | Date de disponibilité | 52 % | now | | |
| 41 | +| `availability_date` | Date de disponibilité | 53 % | now | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.531969 | |
| 43 | 43 | | `description` | Description | 100 % | Située sur la rive sud du fleuve Saint-Laurent en face du centre-ville de Montréal, la pr… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 7 photo(s) — https://www.bwalk.com/hubfs/001%20Organized%20Web%20Photos/Domaine%20dIbervi… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:46 — 100 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:39 — 100 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 100 au total, **100 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/boises_cite.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Les Boisés de la Cité — connecteur `boises_cite` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 2/2 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Les Boisés de la Cité (lesboisesdelacite.com) — 43 logements locatifs neufs (3½ à 4½ + bureau) au 15, rue des Sentiers à Sainte-Marie (Beauce). La page /plans-prix/ embarque le widget Planpoint : on interroge l'API JSON publique (app.planpoint.io/api/projects/find, 1 requête/sync — voir _planpoint.py). Granularité UNITÉ : prix mensuel publié, pi², chambres, sdb, plans, inclusions ; seules les unités « Available » sont retenues. | |
| 10 | + | |
| 11 | +- **Site** : https://lesboisesdelacite.com | |
| 12 | +- **Page des annonces** : https://lesboisesdelacite.com/plans-prix/ | |
| 13 | +- **Secteurs couverts** : Sainte-Marie (Beauce — 15, rue des Sentiers, 43 unités) | |
| 14 | +- **Module** : `louka/connectors/boises_cite.py` — classe `BoisesCiteConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://lesboisesdelacite.com/plans-prix/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://lesboisesdelacite.com/plans-prix/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Les boisés de la cité — Unité 101 | | |
| 33 | +| `address` | Adresse civique | 100 % | 15, rue des Sentiers, Sainte-Marie | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Sainte-Marie | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 650 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1154 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 01-11-2025 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité 101 — Les boisés de la cité, Sainte-Marie. Étage étage 1, 1154 pi², 1 salle(s) de b… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 30 photo(s) — https://storage.googleapis.com/planpoint-bucket/22129_App Type B & E_2025-0… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Stationnement extérieur", "Luminaires", "Habillage de fenêtres", "Internet", "Gym (Phas… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"internet": true}, "ac": true, "elevator": true, "gym": true, "parking": … | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://lesboisesdelacite.com/plans-prix/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:35 — 2 trouvées, +2 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 2 au total, **2 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync boises_cite` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='boises_cite' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/bons_locataires.md
+5 −7
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Bons Locataires — connecteur `bons_locataires` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Grand Montréal · Backend : direct · Annonces actives : 17/17 |
| 6 | 6 | |
@@ -49,22 +49,20 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:50 — 17 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:43 — 17 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 17 au total, **17 actives** |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 35 % · photos 94 % · description 94 % |
| 61 | −- **Runs journalisés (60 derniers)** : 52, dont 1 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-18 15:59 | database is locked | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 68 | 66 | |
| 69 | 67 | Rejouer la source seule : `python3 run.py sync bons_locataires` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='bons_locataires' ORDER BY ts DESC LIMIT 5;`). |
| 70 | 68 | |
modified
docs/connecteurs/boreal_abitibi.md
+10 −10
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Constructions Boréal Abitibi — connecteur `boreal_abitibi` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 3/6 | |
| 5 | +**État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 4/6 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Constructions Boréal Abitibi (constructionsborealabitibi.com — Val | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -37,10 +37,10 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 550 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 33 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 25 % | — | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 48.0977193 | |
| 43 | −| `description` | Description | 67 % | Proximité des écoles, des épiceries, des dépanneurs, du centre-ville. | | |
| 43 | +| `description` | Description | 75 % | Proximité des écoles, des épiceries, des dépanneurs, du centre-ville. | | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 10 photo(s) — https://constructionsborealabitibi.com/wp-content/uploads/2020/09/dscn1016-… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["2 chambre(s)", "1 salle(s) de bain", "1 garage/stationnement", "Non meublé, non chauffé… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": false, "electricity": false}, "appliances": {"washer_dryer_hoo… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:50 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:43 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 6 au total, **3 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 67 % | |
| 58 | +- **Annonces en BD** : 6 au total, **4 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 75 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/bribourg.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Bribourg — connecteur `bribourg` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 2/5 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:50 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/brigil.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Brigil — connecteur `brigil` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 42/42 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:50 — 42 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 42 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 42 au total, **42 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 98 % · prix 24 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/brio.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles Brio — connecteur `brio` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:50 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/brivia_1sp.md
+6 −8
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Brivia (1 Square Phillips) — connecteur `brivia_1sp` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -48,23 +48,21 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:50 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-18 16:01 | database is locked | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 68 | 66 | |
| 69 | 67 | Rejouer la source seule : `python3 run.py sync brivia_1sp` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='brivia_1sp' ORDER BY ts DESC LIMIT 5;`). |
| 70 | 68 | |
modified
docs/connecteurs/brochu.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Immobilier Brochu — connecteur `brochu` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 7/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:50 — 7 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **7 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 86 % · prix 57 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/c3r.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Gestion C3R — connecteur `c3r` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 8/8 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Gestion C3R (gestionc3r.com) Gestionnaire de la Mauricie (Trois-Rivières, Shawinigan, Saint-Boniface, Saint-Maurice — 450+ appartements, projets neufs affichés sur le site). Site Wix : les unités vivent dans des collections CMS interrogeables via l'API wix-data publique (jeton d'app wix-code obtenu via /_api/v1/access-tokens, puis POST /_api/cloud-data/v1/wix-data/collections/ query). Collections réelles : Import1 (Terrasses St-Maurice) et Import2 (St-Boniface) — champs availabilityStatus (Disponible/Réservé/En attente/ Loué), price, unitType, addressString, bedrooms, sizeSqFt… (LeDomaineDesTournesols = vitrine de typologies sans dispo ni prix réels, descriptions anglaises génériques : ignorée.) Granularité : une annonce par unité. | |
| 10 | + | |
| 11 | +- **Site** : https://www.gestionc3r.com | |
| 12 | +- **Page des annonces** : https://www.gestionc3r.com/projets | |
| 13 | +- **Secteurs couverts** : Saint-Maurice (Terrasses St-Maurice), Saint-Boniface (Chemin du Lac) | |
| 14 | +- **Module** : `louka/connectors/c3r.py` — classe `C3RConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API JSON interne du site | |
| 19 | +- **Endpoint de base** : https://www.gestionc3r.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.gestionc3r.com · https://static.wixstatic.com/media/{m.group(1 | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : pagination par offset | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 8 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 4½ — Terrasses St-Maurice (St-Maurice 4 - 1) | | |
| 33 | +| `address` | Adresse civique | 100 % | Terrasses St-Maurice (Phase 4), Saint-Maurice, Qc | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Maurice | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 550 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1100 | | |
| 41 | +| `availability_date` | Date de disponibilité | 50 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | PRÉ-LOCATION : Soyez le premier locataire. | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 2 photo(s) — https://static.wixstatic.com/media/17bdf4_48d533264a4a419da9c620baa1557e2e~m… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"balcony": true, "floor": "Rez-de-chaussée gauche"} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.gestionc3r.com/terrasses-st-maurice/st-maurice-4-1 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:35 — 8 trouvées, +8 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 8 au total, **8 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync c3r` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='c3r' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/cabinetterie.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Place de la Cabinetterie — connecteur `cabinetterie` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Place de la Cabinetterie (lacabinetterie.ca) — condos locatifs haut de gamme à Saint-Jean-sur-Richelieu (200-210, rue Saint-Paul et 271-277, rue de la Cabinetterie). WordPress + Avada rendu serveur : la page d'accueil liste 3 modèles (« Confortable 3½ » 1 ch/972 pi², « Spacieux 4½ » 2 ch/1247 pi², « Grand 5½ » 3 ch/1418 pi²) avec un prix plancher global « À partir de 1960$/mois » (rattaché au 3½ seulement, le plus petit modèle). Une annonce par modèle ; la page de chaque modèle fournit l'URL de fiche et le plan. Services inclus : électricité, chauffage, Internet, télé. | |
| 10 | + | |
| 11 | +- **Site** : https://lacabinetterie.ca | |
| 12 | +- **Page des annonces** : https://lacabinetterie.ca/ | |
| 13 | +- **Secteurs couverts** : Saint-Jean-sur-Richelieu | |
| 14 | +- **Module** : `louka/connectors/cabinetterie.py` — classe `CabinetterieConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://lacabinetterie.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://lacabinetterie.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Confortable 3½ — Place de la Cabinetterie | | |
| 33 | +| `address` | Adresse civique | 100 % | 200-210, rue Saint-Paul, Saint-Jean-sur-Richelieu | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Jean-sur-Richelieu | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 33 % | 1 960 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 972 | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 9 photo(s) — https://lacabinetterie.ca/wp-content/uploads/2024/11/image00139.jpeg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Électricité incluse", "Chauffage inclus", "Internet haute vitesse inclus", "Forfait tél… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "internet": true}, "ac": true, "ele… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://lacabinetterie.ca/3%c2%bd-confortable/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:35 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 33 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync cabinetterie` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='cabinetterie' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/cap_gestion.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # CAP Gestion (CAP Immobilier) — connecteur `cap_gestion` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Laurentides / Lanaudière · Backend : direct · Annonces actives : 122/123 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:50 — 122 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 122 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 123 au total, **122 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 98 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/capital_rdr.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Capital RDR — connecteur `capital_rdr` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:50 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/capreit.md
+6 −8
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # CAPREIT — connecteur `capreit` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 116/123 |
| 6 | 6 | |
@@ -48,23 +48,21 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:50 — 116 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 116 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 123 au total, **116 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-18 16:02 | database is locked | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 68 | 66 | |
| 69 | 67 | Rejouer la source seule : `python3 run.py sync capreit` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='capreit' ORDER BY ts DESC LIMIT 5;`). |
| 70 | 68 | |
added
docs/connecteurs/cara.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# CARA (condos locatifs) — connecteur `cara` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 10/10 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur CARA — condos locatifs à Vaudreuil-Dorion (condoscara.com — 1400, rue Émile-Bouchard). ⚠️ Compagnie distincte du connecteur `carat_immobilier` (Carat gestion immobilière). WordPress + Elementor, mais la grille des disponibilités est une app externe Livya (plan interactif « Plan A » — app.livya.com), injectée en iframe par le script realvuu : la page /disponibilites/ (rendue serveur) porte un div .livya-module-container-plans avec data-entity (UUID du plan) et data-project. On reconstruit l'URL de l'app Livya, on la rend via Scrapfly (Next.js, unités chargées côté client) puis on lit les cartes d'unités : « #116 | Disponible | 1 810 $ | /mois | 3½ | ch | sdb | pi² ». Seules les unités au statut « Disponible » sont ingérées (les « Loué »/« Réservé » sont exclues). | |
| 10 | + | |
| 11 | +- **Site** : https://www.condoscara.com | |
| 12 | +- **Page des annonces** : https://www.condoscara.com/disponibilites/ | |
| 13 | +- **Secteurs couverts** : Vaudreuil-Dorion | |
| 14 | +- **Module** : `louka/connectors/cara.py` — classe `CaraConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.condoscara.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.condoscara.com · https://app.livya.com/fr/plan-a/projects/{project} | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 10 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Condo #116 — CARA | | |
| 33 | +| `address` | Adresse civique | 100 % | 1400, rue Émile-Bouchard, Vaudreuil-Dorion | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Vaudreuil-Dorion | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 810 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 778 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://d10eh8wo1l4y8c.cloudfront.net/projects/7f1f5415-2491-416a-a587-55c46… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["1 salle(s) de bain"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 0 % | {} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.condoscara.com/disponibilites/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:35 — 10 trouvées, +10 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 10 au total, **10 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync cara` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='cara' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/carat_immobilier.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Carat Immobilier — connecteur `carat_immobilier` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 3/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:50 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/carre_legendes.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Carré des Légendes — connecteur `carre_legendes` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 5/5 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Carré des Légendes (carredeslegendes.ca — Saint-Jean-sur-Richelieu, boul. Saint-Luc). Condos locatifs haut de gamme (~7 bâtiments). WordPress rendu serveur : la page /habitations/ embarque une carte SVG interactive (bâtiments → niveaux → unités) dont TOUTES les données sont dans le HTML statique : tooltip « disp / indisp » (Disponible, Réservée, Déjà louée) + bloc « content level4 » (bâtiment, no d'unité, type | superficie, inclusions, photos, plan PDF). Granularité : unité. Prix non publiés. | |
| 10 | + | |
| 11 | +- **Site** : https://carredeslegendes.ca | |
| 12 | +- **Page des annonces** : https://carredeslegendes.ca/habitations/ | |
| 13 | +- **Secteurs couverts** : Saint-Jean-sur-Richelieu (boul. Saint-Luc) | |
| 14 | +- **Module** : `louka/connectors/carre_legendes.py` — classe `CarreLegendesConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://carredeslegendes.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://carredeslegendes.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 5 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Unité 404 — Bâtiment 2, Carré des Légendes | | |
| 33 | +| `address` | Adresse civique | 100 % | boulevard Saint-Luc, Saint-Jean-sur-Richelieu | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Jean-sur-Richelieu | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1245 | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 5 photo(s) — https://carredeslegendes.ca/wp-content/uploads/2024/04/app402-Vue2-HD.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Piscine extérieure et espace commun", "Garage souterrain", "Espace de rangement de 8’X5… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"elevator": true, "balcony": true, "pool": true, "gym": true, "storage": true, "parking"… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://carredeslegendes.ca/habitations/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:35 — 5 trouvées, +5 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 5 au total, **5 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync carre_legendes` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='carre_legendes' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/celeste.md
+78 −0
@@ -0,0 +1,78 @@ | ||
| 1 | +# CÉLESTE LaSalle — connecteur `celeste` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 0/0 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur CÉLESTE LaSalle (louerceleste.com) 815, rue Gagné, LaSalle (Montréal) — deux immeubles (A et B), 3½ à 5½. WordPress/Avada : chaque unité est un « avada_portfolio » exposé par la REST API (/wp-json/wp/v2/avada_portfolio, ~452 items FR+EN). Taxonomie portfolio_category : 62/64/66 = types FR (3½/4½/5½), 60 = loué, 58 = disponible. Candidats = items FR marqués disponibles ou non marqués loués ; la fiche fait foi (« Disponibilité: LOUÉ » -> exclu). La fiche fournit grandeur, étage, salles de bain, « Loyer : à partir de $…/mois », détails/équipements et la galerie. Inventaire souvent nul (immeubles pleins) : le connecteur retourne alors une liste vide, ce qui est correct. | |
| 10 | + | |
| 11 | +- **Site** : https://louerceleste.com | |
| 12 | +- **Page des annonces** : https://louerceleste.com/appartements-a-loyer/ | |
| 13 | +- **Secteurs couverts** : LaSalle (815, rue Gagné — immeubles A et B) | |
| 14 | +- **Module** : `louka/connectors/celeste.py` — classe `CelesteConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API REST WordPress (wp-json) | |
| 19 | +- **Endpoint de base** : https://louerceleste.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://louerceleste.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : pagination par numéro de page | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 0 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | — | — | | |
| 33 | +| `address` | Adresse civique | — | — | | |
| 34 | +| `city` | Ville (normalisée) | — | — | | |
| 35 | +| `sector` | Secteur / quartier | — | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | — | — | | |
| 37 | +| `price` | Loyer mensuel ($) | — | — | | |
| 38 | +| `bedrooms` | Chambres | — | — | | |
| 39 | +| `bathrooms` | Salles de bain | — | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | — | — | | |
| 41 | +| `availability_date` | Date de disponibilité | — | — | | |
| 42 | +| `lat` | GPS (lat/lng) | — | — | | |
| 43 | +| `description` | Description | — | — | | |
| 44 | +| `images` | Photos (JSON) | — | — | | |
| 45 | +| `amenities` | Commodités (JSON) | — | — | | |
| 46 | +| `details` | Détails additionnels (JSON) | — | — | | |
| 47 | +| `url` | URL de l'annonce source | — | — | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:35 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 0 au total, **0 actives** | |
| 59 | +- **Première ingestion** : — · **Dernière observation** : — | |
| 60 | +- **Complétude clé (actives)** : GPS — · prix — · photos — · description — | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync celeste` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='celeste' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/cent4.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Terrasse Cent4 — Vestric (La Prairie) — connecteur `cent4` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 2/2 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Terrasse Cent4 (terrassecent4.com — condos locatifs neufs 3½/4½ au 1700, chemin Saint-Jean, La Prairie, promoteur Vestric). WordPress (thème Voyou) rendu serveur : la page /les-unites liste les unités disponibles par bâtiment (Terrasse 2/3) dans des <li class="vy_units_listing_item"> — numéro, étage, typologie, pi², loyer, mois de disponibilité + lien « fiche de l'unité ». La fiche (via self.detail, cache BD) ajoute inclusions et options. Granularité = UNITÉ. external_id = slug de la fiche (terrasse-2-unite-202). | |
| 10 | + | |
| 11 | +- **Site** : https://terrassecent4.com | |
| 12 | +- **Page des annonces** : https://terrassecent4.com/les-unites | |
| 13 | +- **Secteurs couverts** : La Prairie (1700, chemin Saint-Jean — condos locatifs neufs 3½/4½, Terrasses 2 et 3) | |
| 14 | +- **Module** : `louka/connectors/cent4.py` — classe `Cent4Connector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://terrassecent4.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://terrassecent4.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Terrasse Cent4 (Terrasse 2) — unité 202 | | |
| 33 | +| `address` | Adresse civique | 100 % | 1700, chemin Saint-Jean, La Prairie | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | La Prairie | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 950 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1104 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-12-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Condo locatif neuf à la Terrasse Cent4, complexe de Vestric à La Prairie (1700, chemin Sa… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 5 photo(s) — https://terrassecent4.com/app/uploads/2023/02/IMG_1461-scaled.jpeg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Lave-vaisselle, micro-ondes avec hotte, laveuse et sécheuse, climatiseur mural", "Servi… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true}, "appliances": {"dishwasher": true, "washer_dryer": tr… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://terrassecent4.com/units/terrasse-2-unite-202 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:35 — 2 trouvées, +2 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 2 au total, **2 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync cent4` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='cent4' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/central_rosemont.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Central Rosemont — connecteur `central_rosemont` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 6/6 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Central Rosemont (centralrosemont.com) — condos locatifs au 1295, rue des Carrières, Rosemont (Montréal), au bord de la piste des Carrières. WordPress rendu serveur : la page /appartements-disponibles/ affiche un bloc div.bloc_unite_dispo[data-unite] par unité disponible — numéro, étage, superficie (pi²), nombre de chambres, prix « 2465$/mois » (parfois vide), date de disponibilité (« juin 2026 ») et plan PDF. Une annonce par unité, id stable = numéro d'unité (data-unite). | |
| 10 | + | |
| 11 | +- **Site** : https://www.centralrosemont.com | |
| 12 | +- **Page des annonces** : https://www.centralrosemont.com/appartements-disponibles/ | |
| 13 | +- **Secteurs couverts** : Rosemont (1295, rue des Carrières) | |
| 14 | +- **Module** : `louka/connectors/central_rosemont.py` — classe `CentralRosemontConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.centralrosemont.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.centralrosemont.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 6 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Central Rosemont — Unité 111 (4½) | | |
| 33 | +| `address` | Adresse civique | 100 % | 1295, rue des Carrières, Montréal, QC H2S 0E1 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Rosemont | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 83 % | 2 465 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 800 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Condos locatifs dans le quartier Rosemont, à Montréal. Appartements spacieux et lumineux,… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 11 photo(s) — https://www.centralrosemont.com/wp-content/uploads/2020/04/photo-condos.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"floor": "1", "floor_plan_pdf": "https://www.centralrosemont.com/wp-content/uploads/2020… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.centralrosemont.com/appartements-disponibles/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:35 — 6 trouvées, +6 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 6 au total, **6 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 83 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync central_rosemont` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='central_rosemont' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/centurion.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Centurion / CP Living (Quartier QB) — connecteur `centurion` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:50 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 75 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/chartwell.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Chartwell (Québec) — connecteur `chartwell` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 134/134 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +Chartwell (chartwell.com/fr) — résidences pour retraités. Chaîne PANCANADIENNE : on ne garde QUE le Québec, garanti deux fois — par le préfixe /fr/qc/ des URLs du sitemap ET par le champ Province Abbreviation == "QC" des données de la page. Site Next.js/Sitecore rendu serveur : chaque page « plans des appartements » (/fr/qc/<ville>/<résidence>/plans-des-appartements) embarque dans __NEXT_DATA__ la fiche complète de la résidence (nom, adresse civique, ville, lat/lng, téléphone) et la liste « Property Suit Plans » : type d'unité (Studio, 2 1/2 … 5 1/2), prix « À partir de » (Regular SuitePrice), niveau de soins (Autonome…), inclusions (Key Features) et visuel. Une annonce Lou-Ka par résidence × type d'unité, prix plancher « à partir de ». | |
| 10 | + | |
| 11 | +- **Site** : https://chartwell.com/fr | |
| 12 | +- **Page des annonces** : https://chartwell.com/fr/trouver-une-residence/quebec | |
| 13 | +- **Secteurs couverts** : 39 résidences pour retraités au Québec — Québec, Lévis, Gatineau, Laval, Montréal, Sherbrooke, Trois-Rivières… (chaîne pancanadienne, filtrée QC seulement) | |
| 14 | +- **Module** : `louka/connectors/chartwell.py` — classe `ChartwellConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : sitemap XML + pages HTML | |
| 19 | +- **Endpoint de base** : https://chartwell.com/sitemap.xml | |
| 20 | +- **URLs de départ (constantes du module)** : https://chartwell.com/sitemap.xml | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 45 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 134 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Studio — Chartwell Le Montcalm | | |
| 33 | +| `address` | Adresse civique | 100 % | 95, boulevard Montcalm Nord | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Candiac | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 504 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.394236 | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 2 photo(s) — https://dam.chartwell.com/asset/f9dfce6b-3873-4291-8d21-55d676a9fead/Large_G… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Un (1) repas inclus", "Entretien ménager mensuel", "Électricité et chauffage", "Thermos… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "internet": true}, "appliances": {"… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://chartwell.com/fr/qc/candiac/le-montcalm/plans-des-appartements | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:36 — 134 trouvées, +134 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 134 au total, **134 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync chartwell` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='chartwell' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/cinq_etoiles.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Gestion Cinq Étoiles (Appartements locatifs Blainville) — connecteur `cinq_etoiles` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 11/11 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Gestion Cinq Étoiles (appartementslocatifs.ca) — 5 immeubles locatifs neufs à Blainville : L'Émeraude (842 Curé-Labelle), Le Cassiopée (832 Curé-Labelle), L'Azur (33 Gaëtan-Mailhiot), Le Célesta (11 Gaëtan-Mailhiot), L'Élysée (40 Gaëtan-Mailhiot). Site GoDaddy Website Builder rendu serveur : la page d'accueil liste les immeubles (nav), chaque page immeuble affiche « <NOM> à partir de N$/mois », l'adresse civique, la ligne des typologies (« Logements 3 1/2 et 3 1/2 + den et 4 1/2 ») et les inclusions. Photos sur le CDN img1.wsimg.com (variantes /:/rs=… dédupliquées). Granularité TYPOLOGIE par immeuble ; le prix « à partir de » n'est associé qu'à la plus petite typologie (jamais inventé). | |
| 10 | + | |
| 11 | +- **Site** : https://appartementslocatifs.ca | |
| 12 | +- **Page des annonces** : https://appartementslocatifs.ca/ | |
| 13 | +- **Secteurs couverts** : Blainville (L'Émeraude, Le Cassiopée, L'Azur, Le Célesta, L'Élysée) | |
| 14 | +- **Module** : `louka/connectors/cinq_etoiles.py` — classe `CinqEtoilesConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://appartementslocatifs.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://appartementslocatifs.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 11 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | L'Émeraude — 3½ | | |
| 33 | +| `address` | Adresse civique | 100 % | 842, boul. Curé Labelle | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Blainville | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 45 % | 1 760 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 2 photo(s) — https://img1.wsimg.com/isteam/ip/b3befafe-57e7-43ae-9f47-81052d0cfd58/842%20… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["1 stationnement intérieur et 1 rangement", "Eau chaude, wifi, câble, Stores", "Contact"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true, "internet": true, "cable": true}, "storage": true, "pa… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://appartementslocatifs.ca/lemeraude | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:36 — 11 trouvées, +11 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 11 au total, **11 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 45 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync cinq_etoiles` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='cinq_etoiles' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/cinquante_ans_plus.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Logements 50 ans et plus (Gestion T. Francoeur) — connecteur `cinquante_ans_plus` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Logements 50 ans et plus (logements50ans.ca — Gestion T. Francoeur). Trois immeubles locatifs pour clientèle autonome de 50 ans et plus (non RPA) : Le Chambéry et Boisé du Parc Équestre à Blainville, Le Bourg-Joli à Sainte-Adèle. Site vitrine MotoCMS rendu serveur : l'accueil publie « À PARTIR DE X$ » par immeuble, les pages projet donnent l'adresse, les commodités (puces « • ») et les photos. Granularité IMMEUBLE (aucune unité/typologie détaillée en ligne). | |
| 10 | + | |
| 11 | +- **Site** : https://logements50ans.ca | |
| 12 | +- **Page des annonces** : https://logements50ans.ca/ | |
| 13 | +- **Secteurs couverts** : Blainville (Le Chambéry, Boisé du Parc Équestre), Sainte-Adèle (Le Bourg-Joli) — 50 ans et plus | |
| 14 | +- **Module** : `louka/connectors/cinquante_ans_plus.py` — classe `CinquanteAnsPlusConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://logements50ans.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://logements50ans.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Le Chambéry — logements 50 ans et plus, Blainville | | |
| 33 | +| `address` | Adresse civique | 100 % | 58-60 boul. Chambéry | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Blainville | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 295 $ | | |
| 38 | +| `bedrooms` | Chambres | 0 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Avec ses zones de conservation et ses parcs, ses services d'électricité, câble et télépho… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 20 photo(s) — https://logements50ans.ca/mt-content/uploads/2017/09/chambery-drawing-med.j… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Ascenseur", "Garage intérieur", "Air climatisé", "Comptoir de quartz", "Finition haut d… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"electricity": true, "cable": true}, "ac": true, "elevator": true, "gym":… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://logements50ans.ca/chambery/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:36 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync cinquante_ans_plus` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='cinquante_ans_plus' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/cite_immobilier.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Cité Immobilier — connecteur `cite_immobilier` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:50 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 0 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/citiluxx.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Citiluxx (Groupe Cleary) — connecteur `citiluxx` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Citiluxx (citiluxx.com — Groupe Cleary) Condos locatifs tout inclus au Faubourg Cousineau, 8121 boulevard Cousineau, Saint-Hubert (Longueuil). WordPress (Astra/Elementor) rendu serveur : la page /plans-appartements-a-louer/ publie le prix plancher par typologie (« 3 1/2 à louer : à partir de 1 932$/mois »…) et embarque le widget Smart Condo Plans (API JSON publique smartcondoplans.silo.immo, projet « citiluxx ») qui fournit le plan des ~199 unités (chambres, salles de bain, superficies) — mais SANS prix ni disponibilité par unité. Granularité : une annonce par typologie (prix « à partir de »), enrichie des superficies min-max et du nombre d'unités via l'API Silo. | |
| 10 | + | |
| 11 | +- **Site** : https://citiluxx.com | |
| 12 | +- **Page des annonces** : https://citiluxx.com/plans-appartements-a-louer/ | |
| 13 | +- **Secteurs couverts** : Saint-Hubert/Longueuil (Faubourg Cousineau, 8121 boul. Cousineau) — condos locatifs tout inclus | |
| 14 | +- **Module** : `louka/connectors/citiluxx.py` — classe `CitiluxxConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://citiluxx.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://citiluxx.com · https://smartcondoplans.silo.immo/v2/building/get-project-data | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Citiluxx — 3½ au Faubourg Cousineau | | |
| 33 | +| `address` | Adresse civique | 100 % | 8121, boulevard Cousineau, Saint-Hubert | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Longueuil | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Saint-Hubert | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 932 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 640 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Condos locatifs neufs tout inclus Citiluxx au Faubourg Cousineau (Saint-Hubert, Longueuil… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 3 photo(s) — https://citiluxx.com/wp-content/uploads/2024/12/citiluxx-condo-moderne-sur-l… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Formule tout inclus (chauffage, climatisation, électricité, eau chaude)", "5 électromén… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true}, "appliances": {… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://citiluxx.com/plans-appartements-a-louer/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:36 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync citiluxx` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='citiluxx' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/cogir.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Cogir Immobilier — connecteur `cogir` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 282/300 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 283/301 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Cogir Immobilier (cogir.net) Page liste « gestion-immeubles-resident | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 282 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 283 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:52 — 282 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:46 — 283 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 300 au total, **282 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 301 au total, **283 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 92 % · prix 96 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/complexe_st_charles.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Complexe St-Charles (condos locatifs, rue de la Pruche) — connecteur `complexe_st_charles` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 15/15 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Complexe St-Charles (complexestcharles.ca — condos locatifs neufs en 7 phases, 130 à 190 rue de la Pruche à Terrebonne, ~200 unités). Site Wix mais rendu SERVEUR (curl suffit) : l'accueil publie les prix « à partir de » par typologie (3½/4½/5½) et le menu la liste des phases (« 190 - PHASE 2 » -> adresse civique) ; chaque page /phase-N détaille les modèles par typologie (« Unité A-03 · 104, 204, 304 & 404 »). Granularité TYPOLOGIE par phase (aucune unité individuelle ni disponibilité publiée) ; external_id = « phase-N-typologie » (stable). Les phases annoncées « À VENIR » sur l'accueil (7 et 8 en 2026) sont exclues. | |
| 10 | + | |
| 11 | +- **Site** : https://www.complexestcharles.ca | |
| 12 | +- **Page des annonces** : https://www.complexestcharles.ca/ | |
| 13 | +- **Secteurs couverts** : Terrebonne | |
| 14 | +- **Module** : `louka/connectors/complexe_st_charles.py` — classe `ComplexeStCharlesConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.complexestcharles.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.complexestcharles.ca · https://static.wixstatic.com/media/{m.group(1 | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 15 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Complexe St-Charles — Phase 2 — 3½ | | |
| 33 | +| `address` | Adresse civique | 100 % | 190, rue de la Pruche | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Terrebonne | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 500 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Phase 2 du Complexe St-Charles, 190 rue de la Pruche à Terrebonne (28 unités locatives). … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 17 photo(s) — https://static.wixstatic.com/media/d71d16_001447821de74a09ac7425cac55c3ad8%… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true, "phase": "2", "models": ["modèle A-03 (unités 104, 204, 304 & 404)"]} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.complexestcharles.ca/phase-2 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:36 — 15 trouvées, +15 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 15 au total, **15 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync complexe_st_charles` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='complexe_st_charles' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/condos18.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Condos Locatifs 18 — connecteur `condos18` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Condos Locatifs 18 (condoslocatifs18.ca — 1195, 18e Rue, Limoilou, Québec, à deux pas de l'hôpital de l'Enfant-Jésus/CHU). One-pager maison rendu serveur : les prix sont affichés PAR TYPE d'unité (« 3 1/2 … À partir de 1200$ par mois ») dans des onglets #s312/#s412/#s512, chacun listant ses variantes de plans (Emplacement / Description / Superficie). Une annonce par type d'unité — la granularité du site — avec la fourchette de superficies des variantes, les plans (lightbox) et les photos du modèle en galerie. | |
| 10 | + | |
| 11 | +- **Site** : https://condoslocatifs18.ca | |
| 12 | +- **Page des annonces** : https://condoslocatifs18.ca/ | |
| 13 | +- **Secteurs couverts** : Québec (Limoilou) — 1195, 18e Rue, près de l'hôpital de l'Enfant-Jésus ; une annonce par type d'unité (granularité du site) | |
| 14 | +- **Module** : `louka/connectors/condos18.py` — classe `Condos18Connector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://condoslocatifs18.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://condoslocatifs18.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — Condos Locatifs 18 | | |
| 33 | +| `address` | Adresse civique | 100 % | 1195, 18e Rue, Québec, G1J 0G5 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Québec | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Limoilou | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 200 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 653 | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.83571 | | |
| 43 | +| `description` | Description | 100 % | Espace de vie à air ouverte comprenant une chambre, très lumineux avec espace de rangemen… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 18 photo(s) — https://condoslocatifs18.ca/images/condos-locatifs-18/img-exterieur-condos-… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Superficies : 653 à 697 pi²", "Emplacement : étage 1-2-3-4", "Ascenseur", "Climatisatio… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "elevator": true, "gym": true, "storage": true, "parking": {"available": tru… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://condoslocatifs18.ca/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:36 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync condos18` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='condos18' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/consolata.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# La Consolata (Propriétés Mach) — connecteur `consolata` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 10/10 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur La Consolata (condolaconsolata.com) 4940, rue Lionel-Groulx, Saint-Augustin-de-Desmaures — condos locatifs Propriétés Mach. MÊME plateforme Vortex Solution que Les 7 Éléments (blocs div.uniteItem : type, numéro d'unité, disponibilité, plan PDF DATA/UNITE/<n>.pdf avec superficies extraites par pdfplumber) : tout le parsing est hérité de SeptElementsConnector, seules les constantes du projet changent. Pas de prix affiché sur le site. | |
| 10 | + | |
| 11 | +- **Site** : https://www.condolaconsolata.com | |
| 12 | +- **Page des annonces** : https://www.condolaconsolata.com/ | |
| 13 | +- **Secteurs couverts** : Saint-Augustin-de-Desmaures — 4940, rue Lionel-Groulx ; même plateforme Vortex que Les 7 Éléments (connecteur hérité), pas de prix affiché | |
| 14 | +- **Module** : `louka/connectors/consolata.py` — classe `ConsolataConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.condolaconsolata.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.condolaconsolata.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 10 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — unité 323-2, La Consolata | | |
| 33 | +| `address` | Adresse civique | 100 % | 4940, rue Lionel-Groulx, Saint-Augustin-de-Desmaures, G3A 0S1 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Augustin-de-Desmaures | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 14 photo(s) — https://www.condolaconsolata.com/DATA/PHOTO/15_photo.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Climatisation indépendante", "Salon de cartes et lecture", "Salon de billard", "Le Gran… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "balcony": true, "smoking": false, "plan_pdf": "https://www.condolaconsolata… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.condolaconsolata.com/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 10 trouvées, +10 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 10 au total, **10 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync consolata` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='consolata' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/construction_app.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Construction APP / Les Habitations APP — connecteur `construction_app` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 23/23 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Construction APP / Les Habitations APP (constructionappinc.com) — constructeur de Portneuf qui loue ses immeubles à Pont-Rouge, Donnacona, Saint-Marc-des-Carrières, Portneuf, Saint-Basile, Val-Bélair et Sainte-Catherine-de-la-J.-Cartier. WordPress/Divi rendu serveur : /vente-et-location/ empile des blocs `.et_pb_row` — h1 « Ville (Québec) », libellé « LOGEMENT À LOUER »/ « MAISONS DE VILLE EN LOCATION », adresse, caractéristiques (chambres, sdb, types n ½) et photos. Ni prix ni date (Tier B). Granularité : immeuble (un bloc = une annonce). | |
| 10 | + | |
| 11 | +- **Site** : https://www.constructionappinc.com | |
| 12 | +- **Page des annonces** : https://www.constructionappinc.com/vente-et-location/ | |
| 13 | +- **Secteurs couverts** : Pont-Rouge, Donnacona, Portneuf, Saint-Marc-des-Carrières, Saint-Basile, Val-Bélair, Sainte-Catherine-de-la-Jacques-Cartier | |
| 14 | +- **Module** : `louka/connectors/construction_app.py` — classe `ConstructionAppConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.constructionappinc.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.constructionappinc.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 23 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Avenue des Catherine, Sainte-Catherine-de-la-Jacques-Cartier | | |
| 33 | +| `address` | Adresse civique | 100 % | Avenue des Catherine, Sainte-Catherine-de-la-Jacques-Cartier | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Sainte-Catherine-de-la-Jacques-Cartier | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 91 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 91 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Logement à louer au Avenue des Catherine, Sainte-Catherine-de-la-Jacques-Cartier (Sainte-… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://www.constructionappinc.com/wp-content/uploads/image-principal-scale… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Domaine Ste 4", "pour plus d’informations", "Stationnement intérieur", "Espace détente"… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"pool": true, "parking": {"available": true, "type": "intérieur"}, "contact": {"email": … | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.constructionappinc.com/vente-et-location/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 23 trouvées, +23 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 23 au total, **23 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync construction_app` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='construction_app' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/contraste.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Contraste Immobilier — connecteur `contraste` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 208/234 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 209/235 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Contraste Immobilier (contrasteimmobilier.ca — Beauport, Limoilou, | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 208 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 209 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:52 — 208 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:46 — 207 trouvées, +1 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 234 au total, **208 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 235 au total, **209 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 86 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/copley.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Copley — connecteur `copley` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 52/52 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:53 — 52 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:46 — 52 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 52 au total, **52 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/cosoltec.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Cosoltec (Evado, Le Monroe, Natür) — connecteur `cosoltec` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 44/57 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:53 — 44 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:46 — 44 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 57 au total, **44 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 80 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/courtemanche.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Immobilière Courtemanche — connecteur `courtemanche` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 0/0 |
| 6 | 6 | |
@@ -48,8 +48,8 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:53 — 0 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:46 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
modified
docs/connecteurs/cromwell.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Cromwell Management — connecteur `cromwell` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 12/12 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:53 — 12 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:46 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 12 au total, **12 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/denux.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Denux — connecteur `denux` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 20/20 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:53 — 20 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:47 — 20 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 20 au total, **20 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/deschenes_pepin.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Groupe Deschênes Pépin (Le Blüm) — connecteur `deschenes_pepin` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 5/5 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Groupe Deschênes Pépin (groupedeschenespepin.com — Montérégie). Promoteur-gestionnaire : projets locatifs « Le Blüm » à Longueuil et Sainte-Julie (50 ans et plus). WordPress/Elementor rendu serveur : la page /louer/ liste les projets, chaque fiche /projet/<slug>/ donne les types d'unités (« 3 ½, 4 ½ et 5 ½ »), l'adresse du bureau d'information, la description et la galerie. Granularité : une annonce par projet × typologie (pas d'unités ni de prix publiés sur le site). | |
| 10 | + | |
| 11 | +- **Site** : https://groupedeschenespepin.com | |
| 12 | +- **Page des annonces** : https://groupedeschenespepin.com/louer/ | |
| 13 | +- **Secteurs couverts** : Longueuil, Sainte-Julie (projets Le Blüm, 50 ans et plus) | |
| 14 | +- **Module** : `louka/connectors/deschenes_pepin.py` — classe `DeschenesPepinConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://groupedeschenespepin.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://groupedeschenespepin.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 5 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Le Blüm Sainte-Julie — 3½ | | |
| 33 | +| `address` | Adresse civique | 100 % | 1925 Chemin du Fer-à-Cheval Sainte-Julie | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Sainte-Julie | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Conçu pour les 50 ans et plus, Le Blüm Sainte-Julie propose des appartements neufs où lum… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 20 photo(s) — https://groupedeschenespepin.com/wp-content/uploads/2025/12/LeBlum_SteJulie… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Pour les 50 ans et plus", "Terrasse sur le toit", "Piscine", "Stationnement intérieur"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"balcony": true, "pool": true, "storage": true, "parking": {"available": true, "type": "… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://groupedeschenespepin.com/projet/le-blum-sainte-julie/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 5 trouvées, +5 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 5 au total, **5 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync deschenes_pepin` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='deschenes_pepin' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/desmarais.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immeubles Desmarais — connecteur `desmarais` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 14/14 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:53 — 14 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:47 — 14 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 14 au total, **14 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/desroches.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immeubles Claude Desroches — connecteur `desroches` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 6/6 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:53 — 6 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:47 — 6 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 6 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 50 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/devcore.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Devcore Group — connecteur `devcore` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Côte-Nord · Backend : direct · Annonces actives : 14/14 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:54 — 14 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:47 — 14 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 14 au total, **14 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 7 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/devimco.md
+18 −18
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Devimco Appartements — connecteur `devimco` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 231/576 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 481/598 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,38 +25,38 @@ connecteur Devimco Appartements (devimco.com/appartements — St Ann & Hexagone | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 231 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 481 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | St Ann Appartements — unité 102 | | |
| 33 | −| `address` | Adresse civique | 100 % | 244 Rue Rioux, Montréal | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Alexander Phase 1 Appartements — unité 309 | | |
| 33 | +| `address` | Adresse civique | 100 % | 2255 René-Lévesque Blvd W, Montreal | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Montréal | |
| 35 | −| `sector` | Secteur / quartier | 100 % | Griffintown | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Maison | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 3 200 $ | | |
| 38 | −| `bedrooms` | Chambres | 90 % | — | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Centre-ville | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 130 $ | | |
| 38 | +| `bedrooms` | Chambres | 85 % | 1 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 100 % | 1104 | | |
| 41 | −| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | −| `lat` | GPS (lat/lng) | 100 % | 45.491837616036975 | | |
| 43 | −| `description` | Description | 100 % | Étage 1 — Ottawa / Séminaire | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://storage.googleapis.com/planpoint-bucket/LUXImageSolution-StAnnAppar… | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 619 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-10-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.48885054534291 | | |
| 43 | +| `description` | Description | 100 % | Étage 3 — Centre Ville | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 13 photo(s) — https://storage.googleapis.com/planpoint-bucket/Alexander-Piscineinterieur-… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["internet", "electricity", "heating", "balcony", "stove", "refrigerator", "dishwasher", … | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "internet": true}, "appliances": {"… | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://devimco.com/appartements/a-louer/montreal/griffintown/st-ann-appartements | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://devimco.com/appartements/a-louer/montreal/centre-ville/alexander-appartements | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:54 — 231 trouvées, +0 / ~0 / -7 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 481 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 576 au total, **231 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 598 au total, **481 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/devloc.md
+80 −0
@@ -0,0 +1,80 @@ | ||
| 1 | +# Devloc — connecteur `devloc` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal / Montérégie / Lanaudière / Laurentides / Mauricie · Backend : direct · Annonces actives : 104/104 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Devloc (devloc.ca / app.devloc.ca) L'inventaire vit dans l'ERP Laravel/Vue app.devloc.ca : l'API publique paginée GET /properties-public?page=N (Accept: application/json) retourne tout : type (TYPE_STUDIO/TYPE_3_5…), pi², loyer demandé, date de disponibilité, adresse géocodée (lat/lng), quartier (region.name), photos (uploads.devloc.ca), inclusions actives, tolérance chiens/chats et promotion. Seules les unités is_available (province QC) sont retenues. Une annonce par unité ; external_id = id numérique de l'ERP ; URL publique : https://app.devloc.ca/public/<slug>. | |
| 10 | + | |
| 11 | +- **Site** : https://devloc.ca | |
| 12 | +- **Page des annonces** : https://app.devloc.ca/properties-public | |
| 13 | +- **Secteurs couverts** : Montréal (Hochelaga, Rosemont, Plateau), Longueuil, Repentigny, Saint-Jean-sur-Richelieu, Saint-Jérôme, Trois-Rivières | |
| 14 | +- **Module** : `louka/connectors/devloc.py` — classe `DevlocConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API JSON interne du site | |
| 19 | +- **Endpoint de base** : https://app.devloc.ca/public/<slug | |
| 20 | +- **URLs de départ (constantes du module)** : https://app.devloc.ca/public/<slug · https://app.devloc.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : pagination par numéro de page | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 104 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 950 Rue Royale — 3½ · app. 403 | | |
| 33 | +| `address` | Adresse civique | 100 % | 950 Rue Royale, app. 403, Trois-Rivières, QC G9A 4H8 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Trois-Rivières | | |
| 35 | +| `sector` | Secteur / quartier | 75 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 99 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 025 $ | | |
| 38 | +| `bedrooms` | Chambres | 99 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 700 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-08-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.345667 | | |
| 43 | +| `description` | Description | 43 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 14 photo(s) — https://uploads.devloc.ca/25793/IMG_1791.JPG | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Chauffage", "Eau chaude", "Électricité", "Air climatisé (précisez)", "Salle de lavage",… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true}, "ac": true, "ba… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://app.devloc.ca/public/950-rue-royale-trois-rivieres-2-1 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 104 trouvées, +104 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | +- **Caps / budgets du module** : `_MAX_PAGES` = 30 | |
| 56 | + | |
| 57 | +## Volumétrie & complétude | |
| 58 | + | |
| 59 | +- **Annonces en BD** : 104 au total, **104 actives** | |
| 60 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 61 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 43 % | |
| 62 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 63 | + | |
| 64 | +## Erreurs connues & dépannage | |
| 65 | + | |
| 66 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 67 | + | |
| 68 | +Rejouer la source seule : `python3 run.py sync devloc` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='devloc' ORDER BY ts DESC LIMIT 5;`). | |
| 69 | + | |
| 70 | +## Licence, attribution & conditions | |
| 71 | + | |
| 72 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 73 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 74 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 75 | +- Retrait sur demande : contact@spboucher.ai. | |
| 76 | + | |
| 77 | +## Historique | |
| 78 | + | |
| 79 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 80 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/dma_locago.md
+6 −6
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # DMA / Locago (Douville, Moffet & Associés) — connecteur `dma_locago` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 116/126 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 118/128 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur DMA / Locago (Douville, Moffet & Associés) locago.ca présente les c | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 116 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 118 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:55 — 116 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 118 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 126 au total, **116 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 128 au total, **118 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 28 % · prix 98 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/double_v.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Le Double V — connecteur `double_v` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 92/92 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le Double V (ledoublev.ca) Collection de projets locatifs en Montérégie : Sainte-Julie (500, boul. Saint-Joseph), McMasterville (235, chemin du Richelieu — livraison Hiver 2026-2027) et Saint-Hyacinthe (845, avenue Crémazie, secteur Douville). WordPress + Bricks rendu serveur : chaque page projet expose la grille des unités en div[data-unit-post-title] avec data-unit-rooms (« 3 ½ »), data-unit-surface, data-unit-floor et plans (data-unit-plan-image/floor). Le statut (« Disponible »/« Loué ») est dans le texte de la ligne — seules les unités « Disponible » sont ingérées. Les prix sont par typologie (« 3 ½ À partir de 1900$ par mois » dans le texte de la page) ; une mention de saison en tête de page (« Hiver 2026-2027 ») sert de disponibilité (projet en prélocation). | |
| 10 | + | |
| 11 | +- **Site** : https://www.ledoublev.ca | |
| 12 | +- **Page des annonces** : https://www.ledoublev.ca/sainte-julie/ | |
| 13 | +- **Secteurs couverts** : Sainte-Julie, McMasterville, Saint-Hyacinthe | |
| 14 | +- **Module** : `louka/connectors/double_v.py` — classe `DoubleVConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.ledoublev.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.ledoublev.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 92 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — Unité 104, Le Double V Sainte-Julie | | |
| 33 | +| `address` | Adresse civique | 100 % | 500, boulevard Saint-Joseph, Sainte-Julie | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Sainte-Julie | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 900 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 671 | | |
| 41 | +| `availability_date` | Date de disponibilité | 47 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 8 photo(s) — https://www.ledoublev.ca/wp-content/uploads/2025/11/2020-19_SAINT-JOSEPH_3D_… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true, "floor_label": "Étage 1", "plan_image": "https://www.ledoublev.ca/wp… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.ledoublev.ca/sainte-julie/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 92 trouvées, +92 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 92 au total, **92 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync double_v` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='double_v' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/douek.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Douek Apartments — connecteur `douek` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 10/10 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Douek Apartments (douek.ca) Gestionnaire familial montréalais : Westmount, NDG, Côte-des-Neiges, Plateau, Vieux-Montréal, Saint-Henri, Dollard-des-Ormeaux. Même gabarit Rentsync que le Groupe Alfid, mais SANS API Lift System exposée : la découverte se fait par les cartes « featured_property » de la page d'accueil (/rent/<slug> + adresse), puis parsing des fiches /rent/<slug> rendues serveur — le parsing des rangées div.suite (id stable via #modal-suite-<id>, prix, photos par suite) est hérité d'AlfidConnector. | |
| 10 | + | |
| 11 | +- **Site** : https://www.douek.ca | |
| 12 | +- **Page des annonces** : https://www.douek.ca/ | |
| 13 | +- **Secteurs couverts** : Westmount, Notre-Dame-de-Grâce, Côte-des-Neiges, Plateau-Mont-Royal, Vieux-Montréal, Saint-Henri, Dollard-des-Ormeaux | |
| 14 | +- **Module** : `louka/connectors/douek.py` — classe `DouekConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.douek.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.douek.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 10 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 4278 Sherbrooke West — #16, 2 Bed 1 Bath | | |
| 33 | +| `address` | Adresse civique | 100 % | 4278 Sherbrooke St. West, Westmount QC | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Westmount | | |
| 35 | +| `sector` | Secteur / quartier | 50 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 80 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 225 $ | | |
| 38 | +| `bedrooms` | Chambres | 80 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 90 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Welcome to The Westmount, luxurious, boutique apartments steps from Greene Ave. Choose be… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 16 photo(s) — https://assets.rentsync.com/douek/images/gallery/512/1787165201879_1-1.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 90 % | ["Cable ready", "Dishwasher available", "Dryer in suite", "Fridge", "Hardwood floors", "I… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"internet": true, "cable": true}, "appliances": {"fridge": true, "stove":… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.douek.ca/rent/4278-sherbrooke-west | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 10 trouvées, +10 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 10 au total, **10 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync douek` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='douek' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/dupin_despres.md
+80 −0
@@ -0,0 +1,80 @@ | ||
| 1 | +# Dupin Després — connecteur `dupin_despres` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 30/30 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Dupin Després (dupindespres.com) Gestionnaire de Repentigny / Rive-Nord (Les Cimes Repentigny, Quartier du Moulin, immeubles rue Notre-Dame…). WordPress (thème d'agence « Voyou », classes vy_*) rendu serveur : /appartements-a-louer + /page/N liste des cartes par UNITÉ (titre, typologie, ville, prix, bandeau de disponibilité, badge 55 ans+). La page détail fournit description, photos et l'adresse civique (fil d'Ariane JSON-LD, ex. « #118-325 rue Notre-Dame Repentigny »). Granularité : unité. | |
| 10 | + | |
| 11 | +- **Site** : https://dupindespres.com | |
| 12 | +- **Page des annonces** : https://dupindespres.com/appartements-a-louer | |
| 13 | +- **Secteurs couverts** : Repentigny, Montréal-Est, Saint-Sulpice, Mascouche | |
| 14 | +- **Module** : `louka/connectors/dupin_despres.py` — classe `DupinDespresConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://dupindespres.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://dupindespres.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 30 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Les Cimes - #118 | | |
| 33 | +| `address` | Adresse civique | 93 % | 325 rue Notre-Dame Repentigny | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Repentigny | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 93 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 254 $ | | |
| 38 | +| `bedrooms` | Chambres | 93 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 3 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 93 % | Les Cimes Repentigny est un projet locatif de 122 logements conçu spécialement pour les p… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://dupindespres.com/app/uploads/2026/02/065A2448_Modif-768x512.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 33 % | ["55 ans et plus"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 43 % | {"appliances": {"fridge": true}, "ac": true, "elevator": true, "balcony": true, "gym": tr… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://dupindespres.com/appartements-a-louer/118-325-rue-notre-dame | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 30 trouvées, +30 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | +- **Caps / budgets du module** : `MAX_PAGES` = 10 | |
| 56 | + | |
| 57 | +## Volumétrie & complétude | |
| 58 | + | |
| 59 | +- **Annonces en BD** : 30 au total, **30 actives** | |
| 60 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 61 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 93 % | |
| 62 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 63 | + | |
| 64 | +## Erreurs connues & dépannage | |
| 65 | + | |
| 66 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 67 | + | |
| 68 | +Rejouer la source seule : `python3 run.py sync dupin_despres` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='dupin_despres' ORDER BY ts DESC LIMIT 5;`). | |
| 69 | + | |
| 70 | +## Licence, attribution & conditions | |
| 71 | + | |
| 72 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 73 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 74 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 75 | +- Retrait sur demande : contact@spboucher.ai. | |
| 76 | + | |
| 77 | +## Historique | |
| 78 | + | |
| 79 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 80 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/duproprio.md
+11 −11
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # DuProprio (location) — connecteur `duproprio` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 3894/4109 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 3838/4132 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ DuProprio (duproprio.com) — section LOCATION ~4 200 annonces de particuliers ( | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3894 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3838 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -34,14 +34,14 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 34 | 34 | | `city` | Ville (normalisée) | 94 % | Matane | |
| 35 | 35 | | `sector` | Secteur / quartier | 19 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 2 100 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 750 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 98 % | 1 | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 61 % | 1100 | |
| 41 | −| `availability_date` | Date de disponibilité | 86 % | now | | |
| 41 | +| `availability_date` | Date de disponibilité | 87 % | now | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 48.8513 | |
| 43 | 43 | | `description` | Description | 100 % | "Professionnel, retraité confortable, couple stable, personne en transition, employé relo… | |
| 44 | −| `images` | Photos (JSON) | 99 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | — | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 94 % | ["Stationnement", "Entrée Laveuse-sécheuse", "Ascenseur", "Entrée Lave-vaisselle", "Range… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"washer_dryer_hookup": true, "dishwasher_hookup": true}, "ac": true, "ele… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://duproprio.com/fr/location/bas-saint-laurent/matane/4-1-2-a-louer/hab-91-avenue-ja… | |
@@ -49,16 +49,16 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:55 — 3894 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:33 — 3834 trouvées, +0 / ~88 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 4109 au total, **3894 actives** | |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 99 % · description 100 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 51, dont 0 en erreur | |
| 58 | +- **Annonces en BD** : 4132 au total, **3838 actives** | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-24 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
added
docs/connecteurs/duquette.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Entreprises Duquette Immobilier — connecteur `duquette` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 6/6 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Entreprises Duquette Immobilier (duquette.ca). Constructeur-gestionnaire de la Rive-Nord (base à Laval) : condos locatifs neufs à Saint-Eustache (320 et 405 chemin de la Grande-Côte) et logements à Deux-Montagnes. WordPress + thème WPEstate : API REST publique wp-json/wp/v2/estate_property (une fiche par UNITÉ, adresse civique en titre), taxonomies property_status (« À louer » / « Déjà loué ») et property_city. Le prix ($/mois), la superficie (ft²), les sdb et les chambres (libellé property_category « … 2 chambres », dont l'endpoint REST renvoie 500) viennent de la page détail rendue serveur (div.price_area, aperçu), via cache detail. Granularité UNITÉ, external_id = slug WordPress. | |
| 10 | + | |
| 11 | +- **Site** : https://www.duquette.ca | |
| 12 | +- **Page des annonces** : https://www.duquette.ca/wp-json/wp/v2/estate_property?per_page=100 | |
| 13 | +- **Secteurs couverts** : Saint-Eustache (320 et 405 chemin de la Grande-Côte), Deux-Montagnes | |
| 14 | +- **Module** : `louka/connectors/duquette.py` — classe `DuquetteConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API REST WordPress (wp-json) | |
| 19 | +- **Endpoint de base** : https://www.duquette.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.duquette.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 6 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 101-320 chemin de la Grande-Côte, Saint-Eustache | | |
| 33 | +| `address` | Adresse civique | 100 % | 101-320 chemin de la Grande-Côte | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Eustache | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 17 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 295 $ | | |
| 38 | +| `bedrooms` | Chambres | 67 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1046 | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Vivez le luxe sans compromis, des condos locatifs haut de gamme conçus pour votre style d… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 16 photo(s) — https://www.duquette.ca/wp-content/uploads/2024/01/agent-1-1.webp | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true, "internet": true}, "appliances": {"fridge": true}, "el… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.duquette.ca/property/101-320-chemin-de-la-grande-cote-saint-eustache/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 6 trouvées, +6 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 6 au total, **6 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync duquette` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='duquette' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/dynamic.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion immobilière Dynamic — connecteur `dynamic` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 44/55 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:44 — 44 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:37 — 44 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 55 au total, **44 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/edifia.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Edifia Groupe Immobilier — connecteur `edifia` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 177/185 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:55 — 177 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:33 — 177 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 185 au total, **177 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 94 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/elements.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Quartier les Éléments — connecteur `elements` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 2/4 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:56 — 2 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:34 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/elite.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Elite Immobilier — connecteur `elite` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 12/12 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:56 — 12 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:34 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 12 au total, **12 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/elk.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # ELK Property Management — connecteur `elk` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:56 — 3 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:34 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 67 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/equinoxe_batimo.md
+6 −6
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Batimo/EMD — Collection Équinoxe — connecteur `equinoxe_batimo` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 626/662 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 624/662 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Collection Équinoxe (Batimo) (collectionequinoxe.com — Équinoxe S | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 626 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 624 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -49,14 +49,14 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:58 — 591 trouvées, +0 / ~0 / -4 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:35 — 582 trouvées, +0 / ~0 / -6 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 662 au total, **626 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 662 au total, **624 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/espace_w.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Espace W (condos locatifs, Cité Mirabel) — connecteur `espace_w` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 59/59 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Espace W (espacew.com — condos locatifs à Cité Mirabel, 4 immeubles W1 à W4, rue de Chenonceau/boul. de Versailles). Le site WordPress affiche ses unités via le widget Planpoint : on interroge l'API JSON publique (app.planpoint.io/api/groups/find, 1 requête/sync, voir _planpoint.py). Granularité UNITÉ : pi², chambres, salle(s) de bain, plans et inclusions par unité, adresse + lat/lng par immeuble ; la source ne publie AUCUN prix (price null chez Planpoint, pas de prix sur le site non plus) — rien d'inventé. Seules les unités « Available » sont retenues (les louées/vendues sont exclues). | |
| 10 | + | |
| 11 | +- **Site** : https://www.espacew.com | |
| 12 | +- **Page des annonces** : https://www.espacew.com/unites-et-disponibilites/ | |
| 13 | +- **Secteurs couverts** : Mirabel (Cité Mirabel) | |
| 14 | +- **Module** : `louka/connectors/espace_w.py` — classe `EspaceWConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.espacew.com/unites-et-disponibilites/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.espacew.com/unites-et-disponibilites/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 59 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Espace W1 — Unité W1 - 201 | | |
| 33 | +| `address` | Adresse civique | 100 % | 18275 Rue de Chenonceau | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Mirabel | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 988 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-11-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.67347849999999 | | |
| 43 | +| `description` | Description | 100 % | Unité W1 - 201 — Espace W1, Mirabel. Modèle 4,5-g, étage niveau 2, 988 pi², 1 salle(s) de… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 2 photo(s) — https://storage.googleapis.com/planpoint-bucket/W1 - X01-1725462800932.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["7 Électroménagers", "Chauffage et Climatisation", "Électricité", "Habillage de fenêtres… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true, "internet": true… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.espacew.com/unites-et-disponibilites/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 59 trouvées, +59 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 59 au total, **59 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync espace_w` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='espace_w' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/evol.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# EVOL Saint-Jean (Maître Carré) — connecteur `evol` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur EVOL Saint-Jean (evolstjean.com) Complexe locatif neuf au 270, rue de la Cabinetterie à Saint-Jean-sur-Richelieu (par Maître Carré). Site PHP statique rendu serveur : la page /les-unites.php affiche le prix plancher par typologie (« 3 ½ à partir de 1 575$ », « 2 ½ COMPLET »…) et les inclusions. Granularité : une annonce par typologie ; les typologies « COMPLET » (tout loué) sont ignorées. | |
| 10 | + | |
| 11 | +- **Site** : https://evolstjean.com | |
| 12 | +- **Page des annonces** : https://evolstjean.com/les-unites.php | |
| 13 | +- **Secteurs couverts** : Saint-Jean-sur-Richelieu (270, rue de la Cabinetterie) | |
| 14 | +- **Module** : `louka/connectors/evol.py` — classe `EvolConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://evolstjean.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://evolstjean.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | EVOL Saint-Jean — 3½ | | |
| 33 | +| `address` | Adresse civique | 100 % | 270, rue de la Cabinetterie, Saint-Jean-sur-Richelieu | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Jean-sur-Richelieu | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 575 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Complexe locatif neuf EVOL au cœur de Saint-Jean-sur-Richelieu : unités lumineuses aux fi… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 6 photo(s) — https://evolstjean.com/images/banner/unites1.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["5 électroménagers (frigo, cuisinière, lave-vaisselle, laveuse, sécheuse)", "Eau chaude … | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true, "internet": true, "cable": true}, "appliances": {"frid… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://evolstjean.com/les-unites.php | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync evol` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='evol' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/evoludev.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Evoludev — connecteur `evoludev` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 134/134 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:58 — 134 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:35 — 134 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 134 au total, **134 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 99 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/excell.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Les immeubles EXCELL (agence, Abitibi-Ouest) — connecteur `excell` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +Les immeubles EXCELL (immeublesexcell.com) — agence immobilière d'Abitibi-Ouest (La Sarre, Macamic, Taschereau…) avec une section « Logements » à louer. Techno : ColdFusion servi côté serveur (details.cfm?LogementID=N) — simple parse HTML des cartes `ficheMaison` + page détail pour les attributs (type, meublé, animaux, chauffage, électroménagers, étage). Granularité : LOGEMENT (une carte = un logement, LogementID stable). | |
| 10 | + | |
| 11 | +- **Site** : https://www.immeublesexcell.com | |
| 12 | +- **Page des annonces** : https://www.immeublesexcell.com/fr/logements/ | |
| 13 | +- **Secteurs couverts** : La Sarre, Macamic, Taschereau (Abitibi-Ouest) | |
| 14 | +- **Module** : `louka/connectors/excell.py` — classe `ExcellConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.immeublesexcell.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.immeublesexcell.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 36, 4è Avenue Ouest, Macamic | | |
| 33 | +| `address` | Adresse civique | 100 % | 36, 4è Avenue Ouest | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Macamic | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 975 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 3 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 33 % | — | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Type : Appartement", "Mobilié : Non-meublé", "Chauffage : Électrique", "Animaux : Non",… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true}, "pets": "non", "furnished": false, "parking": {"availab… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.immeublesexcell.com/fr/logements/details.cfm?LogementID=2077 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 33 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync excell` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='excell' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/fb_marketplace.md
+22 −22
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Facebook Marketplace (location) — connecteur `fb_marketplace` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 1732/23481 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 1599/26851 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,40 +25,40 @@ Facebook Marketplace — catégorie location (propertyrentals), TOUTE la provinc | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1732 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1599 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | 4 Beds 1 Bath - Apartment | | |
| 33 | −| `address` | Adresse civique | 18 % | — | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 4 1/2 à louer | | |
| 33 | +| `address` | Adresse civique | 48 % | — | | |
| 34 | 34 | | `city` | Ville (normalisée) | 99 % | Montréal | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 94 % | 6½+ | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 1 995 $ | | |
| 38 | −| `bedrooms` | Chambres | 95 % | 4 | | |
| 39 | −| `bathrooms` | Salles de bain | 24 % | 1 | | |
| 40 | −| `area_sqft` | Superficie (pi²) | 7 % | — | | |
| 41 | −| `availability_date` | Date de disponibilité | 13 % | — | | |
| 42 | −| `lat` | GPS (lat/lng) | 56 % | 45.5303 | | |
| 43 | −| `description` | Description | 56 % | 4 bedroom apartment in the Plateau. 1 bathroom. Close to Park Lafontain. Includes 4 appli… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 3 photo(s) — https://scontent.fyhu2-1.fna.fbcdn.net/v/t39.30808-6/773583100_1016459004951… | | |
| 45 | −| `amenities` | Commodités (JSON) | 14 % | [] | | |
| 46 | −| `details` | Détails additionnels (JSON) | 50 % | {"appliances": {"fridge": true}, "furnished": true} | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://www.facebook.com/marketplace/item/3360053384156664/ | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 92 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 400 $ | | |
| 38 | +| `bedrooms` | Chambres | 93 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 49 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 11 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 34 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 61 % | 45.557556152344 | | |
| 43 | +| `description` | Description | 61 % | 2222 rue Fleury Est | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 9 photo(s) — https://scontent-yyz1-1.xx.fbcdn.net/v/t39.84726-6/774513165_105675990685739… | | |
| 45 | +| `amenities` | Commodités (JSON) | 40 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 59 % | {} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.facebook.com/marketplace/item/1795905304891036/ | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:25 — 1247 trouvées, +146 / ~778 / -739 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:42 — 1049 trouvées, +237 / ~429 / -373 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 23481 au total, **1732 actives** | |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 56 % · prix 100 % · photos 100 % · description 56 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 54, dont 0 en erreur | |
| 58 | +- **Annonces en BD** : 26851 au total, **1599 actives** | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-24 | |
| 60 | +- **Complétude clé (actives)** : GPS 61 % · prix 100 % · photos 100 % · description 61 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/ferrovia.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ferrovia (condos locatifs Mirabel) — connecteur `ferrovia` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 22/24 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:05 — 22 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:42 — 22 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 24 au total, **22 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/firma.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Firma — connecteur `firma` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 12/12 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:06 — 12 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:42 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 12 au total, **12 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 75 % · prix 8 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/fitz.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Le Fitz (condos locatifs Lévis) — connecteur `fitz` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 108/108 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le Fitz (lefitz.ca) — condos locatifs, 3 tours au 77, route du Président-Kennedy à Lévis. WordPress + plugin maison « imedia-building-plans » : admin-ajax.php?action=get_unit_list& building_id=<term> renvoie le tableau complet des unités (no, type, étage, chambres, sdb, superficie, PRIX, disponibilité) ; les <tr> class="unit disabled" sont louées, class="unit" disponibles. Granularité : unité, avec prix. | |
| 10 | + | |
| 11 | +- **Site** : https://lefitz.ca | |
| 12 | +- **Page des annonces** : https://lefitz.ca/plan-unites/ | |
| 13 | +- **Secteurs couverts** : Lévis (77, route du Président-Kennedy — 3 tours) | |
| 14 | +- **Module** : `louka/connectors/fitz.py` — classe `FitzConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API admin-ajax (WordPress) | |
| 19 | +- **Endpoint de base** : https://lefitz.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://lefitz.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 108 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Unité 10203 — Le Fitz (Tour 1) | | |
| 33 | +| `address` | Adresse civique | 100 % | 77, route du Président-Kennedy, Lévis | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Lévis | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 055 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1000 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité 10203 (4½), étage 2, Tour 1 du Fitz — condos locatifs avec vue à Lévis. Chauffage, … | | |
| 44 | +| `images` | Photos (JSON) | 99 % | 1 photo(s) — https://lefitz.ca/wp-content/uploads/2025/08/fitz-tour-1-a-07.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Chauffé et éclairé", "Électroménagers inclus", "Internet haute vitesse inclus", "Gym et… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "internet": true}, "appliances": {"… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://lefitz.ca/unit/10203/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 108 trouvées, +108 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 108 au total, **108 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 99 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync fitz` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='fitz' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/floria.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Floria — connecteur `floria` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 21/21 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:06 — 21 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:42 — 21 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 21 au total, **21 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 24 % · photos 95 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/fluet.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Groupe Fluet — connecteur `fluet` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 16/16 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Groupe Fluet (groupefluet.com) Gestionnaire de Saint-Hyacinthe — logements pour préretraités/retraités autonomes (Manoir des Cascades, Seigneurie des Pères, Le Notre-Dame phases I-II-III) + triplex rue Noiseux à Sainte-Marie-Madeleine. Site Wix MAIS rendu serveur : le HTML brut contient le texte des pages — pas besoin de rendu JS. Une page par immeuble, typologies dans le texte (« Offre des logements : 3½, 4½ et 5 ½ »). Granularité : une annonce par immeuble × typologie (aucun prix publié). | |
| 10 | + | |
| 11 | +- **Site** : https://www.groupefluet.com | |
| 12 | +- **Page des annonces** : https://www.groupefluet.com/manoirdescascades | |
| 13 | +- **Secteurs couverts** : Saint-Hyacinthe (Manoir des Cascades, Seigneurie des Pères, Le Notre-Dame I-II-III), Sainte-Marie-Madeleine (triplex rue Noiseux) — préretraités/retraités autonomes | |
| 14 | +- **Module** : `louka/connectors/fluet.py` — classe `FluetConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.groupefluet.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.groupefluet.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : multi-racines (6 pages de départ : PAGES) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 16 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Manoir des Cascades — 2½ | | |
| 33 | +| `address` | Adresse civique | 100 % | Saint-Hyacinthe | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Hyacinthe | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 2½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | offre une multitude d'avantages à sa clientèle de préretraités et retraités autonomes. La… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 2 photo(s) — https://static.wixstatic.com/media/c30aca_8dbc992c24ba4a00a5ec27985c271db0~m… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Clientèle préretraitée/retraitée autonome", "Vue extérieure", "groupe-fluet-manoir-deva… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"balcony": true, "storage": true, "parking": {"available": true, "included": false}, "co… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.groupefluet.com/manoirdescascades | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:39 — 16 trouvées, +16 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 16 au total, **16 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync fluet` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='fluet' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/forsa.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Gestion immobilière Forsa — connecteur `forsa` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 10/13 | |
| 5 | +**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 9/13 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Gestion immobilière Forsa (gestionforsa.com) Squarespace. La page /l | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 10 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -37,7 +37,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 900 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 0 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 50 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 44 % | — | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.0247367 | |
| 43 | 43 | | `description` | Description | 100 % | 6, place Bourget Sud, app. 1 2 1/2 900 $/mois ENVIRONNEMENT ET IMMEUBLE Immeuble de 9 log… | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:06 — 10 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:42 — 9 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 13 au total, **10 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 13 au total, **9 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/forum_mtl.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Forum Properties (Berson, Lustra, 100 Windsor) — connecteur `forum_mtl` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal / Lanaudière · Backend : direct · Annonces actives : 54/54 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +Le Forum / Forum Properties (forumproperties.com) — promoteur avec immeubles locatifs au Québec : Berson Apartments (Plateau, Montréal), Lustra Ph. 1 (Terrebonne), 100 Windsor (Westmount). Techno : widget Planpoint — l'index résidentiel passe par l'endpoint POST app.planpoint.io/api/enterprises/find {namespace, hostName} qui renvoie {projects:[...]} avec floors[].units[] inline. On réutilise le helper partagé _planpoint.unit_listing pour le mapping unité -> Listing. Portefeuille pancanadien : on ne garde que les projets au Québec (adresse « , QC » ou lat/lng dans la province). Granularité : UNITÉ (« Available » ; prix publié sur Lustra seulement). | |
| 10 | + | |
| 11 | +- **Site** : https://www.forumproperties.com | |
| 12 | +- **Page des annonces** : https://www.forumproperties.com/fr/residentiel/ | |
| 13 | +- **Secteurs couverts** : Montréal (Plateau — Berson), Terrebonne (Lustra), Westmount (100 Windsor) | |
| 14 | +- **Module** : `louka/connectors/forum_mtl.py` — classe `ForumMtlConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API JSON interne du site | |
| 19 | +- **Endpoint de base** : https://www.forumproperties.com/fr/residentiel/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.forumproperties.com/fr/residentiel/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct | |
| 24 | +- **Politesse** : 1.0 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 54 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Berson Apartments — Unité 201 | | |
| 33 | +| `address` | Adresse civique | 100 % | 3882 St Laurent Blvd | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montreal | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 52 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 367 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.51607200247636 | | |
| 43 | +| `description` | Description | 100 % | Unité 201 — Berson Apartments, Montreal. Étage floor 2, 367 pi², 1 salle(s) de bain. | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 30 photo(s) — https://storage.googleapis.com/planpoint-bucket/forum logo.jpeg | | |
| 45 | +| `amenities` | Commodités (JSON) | 52 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"bathrooms": 1, "floor": "Floor 2"} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | http://www.forumproperties.com/fr/residentiel/quebec/berson | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:39 — 54 trouvées, +54 / ~0 / -0 | |
| 53 | +- **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : désactivé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 54 au total, **54 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 52 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync forum_mtl` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='forum_mtl' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 1.0 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/fournelle.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Appartements Fournelle (Groupe Fournelle) — connecteur `fournelle` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:06 — 4 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:42 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/garic.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Garic Gestion Immobilière — connecteur `garic` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 45/54 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:06 — 45 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:42 — 45 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 54 au total, **45 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/gbd.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# GBD Location — connecteur `gbd` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 6/6 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur GBD Location (gbdlocation.com) — promoteur- locateur des Basses-Laurentides : Escapade (3045 chemin d'Oka) et Centrocité (2969-3019 boul. des Promenades) à Sainte-Marthe-sur-le-Lac, Triplex rue André (3159-3163), East River/Albatros (710-740 rue des Hérons, Saint-Eustache), Quartier Urbain (rue de la Salamandre, Deux-Montagnes). Site statique (HTML latin-1 rendu serveur) : l'accueil liste les pages /projets-locatifs/… ; chaque page projet publie « VILLE : … », « Nombre de Chambres : … », « Nombre de pièces : n ½ », « Emplacement(s) : <adresses> » et les caractéristiques (li sans lien). Certaines pages historiques (Hudson River, La Vallée) sont mortes mais répondent 200 : détectées par l'absence de « VILLE : ». Aucun prix publié (jamais inventé). Granularité TYPOLOGIE par projet. | |
| 10 | + | |
| 11 | +- **Site** : https://www.gbdlocation.com | |
| 12 | +- **Page des annonces** : https://www.gbdlocation.com/ | |
| 13 | +- **Secteurs couverts** : Saint-Eustache (East River/Albatros), Sainte-Marthe-sur-le-Lac (Escapade, Centrocité, Triplex rue André), Deux-Montagnes (Quartier Urbain) | |
| 14 | +- **Module** : `louka/connectors/gbd.py` — classe `GbdConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.gbdlocation.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.gbdlocation.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 6 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Escapade condominiums - Condos locatifs Ste-Marthe-sur-le-Lac — 3½ | | |
| 33 | +| `address` | Adresse civique | 100 % | 3045, chemin d’Oka, Sainte-Marthe-sur-le-Lac | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Sainte-Marthe-sur-le-Lac | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Situé à l'intersection du Boulevard des Promenades et du Chemin d'Oka à Sainte-Marthe-sur… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 15 photo(s) — https://www.gbdlocation.com/images/yasmine-jolicoeur.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Immeuble de 3 étages construit en 2024", "Spacieux 3 ½ avec terrasse", "Matériaux haut … | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "balcony": true, "parking": {"available": true, "type": "intérieur"}, "floor… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.gbdlocation.com/projets-locatifs/condos-locatifs-projet-escapade-ste-marthe-s… | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:39 — 6 trouvées, +6 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 6 au total, **6 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync gbd` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='gbd' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/gcs_gabriel.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# GCS Le Gabriel — connecteur `gcs_gabriel` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 6/6 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur GCS Le Gabriel (gcs-legabriel.ca — 2860, rue Gabriel-Le Prévost, coin route de l'Église, plateau de Sainte-Foy, Québec : 121 condos locatifs sur 13 étages, promoteur GCS Développement immobilier). Site vitrine statique rendu serveur : les prix « UNITÉS À PARTIR DE » sont affichés PAR TYPE dans le tableau <table class="prenezmaintable"> du slider (Studios 1 241 $* … 5 1/2 2 848 $*). Une annonce par type d'unité — la granularité du site — avec les inclusions de la section « Inclusions » et les photos du slider. | |
| 10 | + | |
| 11 | +- **Site** : https://gcs-legabriel.ca | |
| 12 | +- **Page des annonces** : https://gcs-legabriel.ca/ | |
| 13 | +- **Secteurs couverts** : Québec (Sainte-Foy) — 2860, rue Gabriel-Le Prévost, 121 condos locatifs ; prix « à partir de » par typologie (granularité du site) | |
| 14 | +- **Module** : `louka/connectors/gcs_gabriel.py` — classe `GcsGabrielConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://gcs-legabriel.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://gcs-legabriel.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 6 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Studio — Le Gabriel | | |
| 33 | +| `address` | Adresse civique | 100 % | 2860, rue Gabriel-Le Prévost, Québec | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Québec | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Sainte-Foy | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 241 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 17 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.774762 | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 20 photo(s) — https://gcs-legabriel.ca/images/content/nouvelles/gabriel_slider_image_01.j… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Climatisation", "Échangeur d’air", "Entrée pour laveuse/sécheuse côte à côte", "Eau cha… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true, "internet": true}, "appliances": {"washer_dryer_hookup… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://gcs-legabriel.ca/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:39 — 6 trouvées, +6 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 6 au total, **6 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync gcs_gabriel` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='gcs_gabriel' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/gerik.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Gestion immobilière Gerik — connecteur `gerik` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 9/9 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Gerik (gerik.ca) — Outaouais Promoteur/gestionnaire de Gatineau (Hull-Aylmer, Gatineau, Cantley, Masson-Angers). WordPress/WPBakery rendu serveur : la page /appartements-a-louer-gatineau/ liste les projets locatifs en cartes (h2 nom du projet + méta « Hull-Aylmer · Studios, 1 et 2 chambres · Disponible dès maintenant » + description + lien /projets/<slug>/). AUCUN prix publié nulle part (ni carte, ni fiche projet) : on remplit availability et on laisse price/price_label vides. Granularité = projet × typologie (studio / n chambres) — le site n'expose pas d'inventaire par unité. Seuls les projets marqués « Disponible » sont retenus (les projets « À VENIR » / « En construction » / « en développement » sont exclus). Photos : classes CSS vc_custom_* (background-image) mappées aux cartes. external_id = <slug du projet>-<typologie> — stable. | |
| 10 | + | |
| 11 | +- **Site** : https://gerik.ca | |
| 12 | +- **Page des annonces** : https://gerik.ca/appartements-a-louer-gatineau/ | |
| 13 | +- **Secteurs couverts** : Gatineau (Hull, Aylmer, Masson-Angers), Cantley | |
| 14 | +- **Module** : `louka/connectors/gerik.py` — classe `GerikConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://gerik.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://gerik.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Complexe Fraser 2 — Studio | | |
| 33 | +| `address` | Adresse civique | 0 % | — | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Gatineau | | |
| 35 | +| `sector` | Secteur / quartier | 67 % | Aylmer | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 11 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Appartements modernes avec balcon privé, climatisation centrale, comptoirs en quartz et é… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://gerik.ca/wp-content/uploads/2025/08/39-unites-03.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"internet": true}, "appliances": {"fridge": true}, "ac": true, "elevator"… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://gerik.ca/projets/complexe-fraser-2/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:39 — 9 trouvées, +9 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 9 au total, **9 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync gerik` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='gerik' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/gesteco.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Gesteco — connecteur `gesteco` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 9/15 | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 8/15 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Gesteco (gesteco.ca) Condos locatifs neufs — Granby (Irwin Nord, Fa | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 8 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -37,7 +37,7 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 450 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 89 % | 1125 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 88 % | 1125 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.3194045 | |
| 43 | 43 | | `description` | Description | 100 % | Promotion : * 1ER MOIS GRATUIT* \| **Unité de coin** Caractéristiques principales : Cuisi… | |
@@ -49,14 +49,14 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:06 — 9 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 8 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 15 au total, **9 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 15 au total, **8 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestimmo_estrie.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestimmo Estrie — connecteur `gestimmo_estrie` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 41/41 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:06 — 41 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 41 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 41 au total, **41 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/gestion_1139.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Gestion 1139 — connecteur `gestion_1139` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 2/2 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Gestion 1139 (gestion1139.com) Drummondville et environs (Centre-du-Québec). WordPress + FacetWP rendu serveur : la page d'accueil liste les 40+ immeubles (cartes .fwpl-result : titre, adresse, typologies, badge .archive-tag « Disponible … » sur les immeubles qui louent). AUCUN prix ni inventaire par unité sur le site — seules les cartes portant un badge « Disponible » sont retenues. Granularité : une annonce par TYPOLOGIE d'un immeuble disponible (ex. projet-horace-3.5, projet-horace-4.5). | |
| 10 | + | |
| 11 | +- **Site** : https://gestion1139.com | |
| 12 | +- **Page des annonces** : https://gestion1139.com/ | |
| 13 | +- **Secteurs couverts** : Drummondville et environs | |
| 14 | +- **Module** : `louka/connectors/gestion_1139.py` — classe `Gestion1139Connector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://gestion1139.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://gestion1139.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — Projet Horace | | |
| 33 | +| `address` | Adresse civique | 100 % | 1645 et 1655 Boulevard Lemire | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Drummondville | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Situé stratégiquement entre une artère commerciale dynamique et un secteur résidentiel pa… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 20 photo(s) — https://gestion1139.com/wp-content/uploads/2025/03/gestion-1139-1645-boul-l… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["1 chambre", "1 salle de bain", "Chauffé et éclairé", "Accès au transport en commun", "B… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true}, "balcony": true, "parking": {"avai… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://gestion1139.com/immeubles/projet-horace/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:39 — 2 trouvées, +2 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 2 au total, **2 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync gestion_1139` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='gestion_1139' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/gestion_bloc.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Gestion Bloc — connecteur `gestion_bloc` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 21/21 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Gestion Bloc (gestionbloc.ca) Gestionnaire immobilier de Québec / Lévis / Chaudière-Appalaches. Site Wix MAIS la page /logements est rendue serveur (SSR Thunderbolt) : galeries Pro Gallery avec une carte par logement — titre (rue), localité, puis « Pièces / Chambre(s) / Salle(s) de bain ». Annonces sans prix ni date (Tier B). Granularité : logement (une carte = une annonce). | |
| 10 | + | |
| 11 | +- **Site** : https://www.gestionbloc.ca | |
| 12 | +- **Page des annonces** : https://www.gestionbloc.ca/logements | |
| 13 | +- **Secteurs couverts** : Québec (Val-Bélair, Cap-Rouge, Limoilou…), Lévis et Rive-Sud, Donnacona | |
| 14 | +- **Module** : `louka/connectors/gestion_bloc.py` — classe `GestionBlocConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.gestionbloc.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.gestionbloc.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 21 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Pie-XI Nord | | |
| 33 | +| `address` | Adresse civique | 100 % | Pie-XI Nord, Québec | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Québec | | |
| 35 | +| `sector` | Secteur / quartier | 29 % | Val-Bélair | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 19 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 71 % | 3 | | |
| 39 | +| `bathrooms` | Salles de bain | 71 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Logement à louer sur Pie-XI Nord (Val-Bélair, Québec) — Gestion Bloc. Pieces: 5 1/2 \| Ch… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://static.wixstatic.com/media/12707b_7eb1d3f7f50c44118e9e5f40fdd166b1~m… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"contact": {"email": "reception@gestionbloc.com", "phone": "418-903-5585"}} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.gestionbloc.ca/logements | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:39 — 21 trouvées, +21 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 21 au total, **21 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync gestion_bloc` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='gestion_bloc' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/gestion_cem.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Gestion CEM (portail Eversa) — connecteur `gestion_cem` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie / Montréal · Backend : direct · Annonces actives : 26/26 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +Gestion CEM (gestioncem.com — Montréal, Longueuil, LaSalle/Sud-Ouest…) via son portail Eversa (gestioncem.eversa.app). Techno : React Router v7 (Remix) « turbo-stream » — les routes exposent un endpoint JSON `<route>.data` contenant un TABLEAU PLAT à références indexées : {"_1":2} = clé à l'index 1, valeur à l'index 2 ; entier négatif = null/undefined ; ["D", <millis>] = date epoch. On décode récursivement. Granularité : UNITÉ (page détail par immeuble -> units[] avec listed=true, prix, pi², chambres, sdb, photos, date de disponibilité). Repli sur la carte de l'immeuble si la page détail est indisponible (404 transitoire). | |
| 10 | + | |
| 11 | +- **Site** : https://gestioncem.eversa.app | |
| 12 | +- **Page des annonces** : https://gestioncem.eversa.app/listings/list | |
| 13 | +- **Secteurs couverts** : Longueuil, Châteauguay, Saint-Lambert, Montréal (Sud-Ouest/Monk), Montréal-Est | |
| 14 | +- **Module** : `louka/connectors/gestion_cem.py` — classe `GestionCemConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://gestioncem.eversa.app | |
| 20 | +- **URLs de départ (constantes du module)** : https://gestioncem.eversa.app | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 26 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 330 rue Denonville , Longueuil | | |
| 33 | +| `address` | Adresse civique | 100 % | 330 Rue Denonville | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Longueuil | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 695 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 3 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 88 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-08-07 | | |
| 42 | +| `lat` | GPS (lat/lng) | 88 % | 45.519254 | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 96 % | 1 photo(s) — https://gestioncem.eversa.app/storage/v1/object/public/gestioncem/buildings/… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 96 % | {} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://gestioncem.eversa.app/listings/330-rue-denonville/details | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:39 — 26 trouvées, +26 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 26 au total, **26 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 88 % · prix 100 % · photos 96 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync gestion_cem` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='gestion_cem' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/gestion_fauvel.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Fauvel — connecteur `gestion_fauvel` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 11/11 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:06 — 11 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 11 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 11 au total, **11 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 91 % · prix 91 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestion_habitation.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Habitation — connecteur `gestion_habitation` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:06 — 4 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestion_isr.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion ISR — connecteur `gestion_isr` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 20/22 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:06 — 20 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 20 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 22 au total, **20 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestion_jdm.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # JDM Gestion immobilière — connecteur `gestion_jdm` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:06 — 2 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestion_laprise.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Laprise — connecteur `gestion_laprise` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Côte-Nord · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -49,7 +49,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:06 — 2 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `MAX_PAGES` = 8 |
@@ -57,7 +57,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | 59 | - **Annonces en BD** : 2 au total, **2 actives** |
| 60 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 61 | 61 | - **Complétude clé (actives)** : GPS 100 % · prix 50 % · photos 100 % · description 50 % |
| 62 | 62 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 63 | 63 | |
modified
docs/connecteurs/gestion_legrand.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Le Grand — connecteur `gestion_legrand` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:07 — 5 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 40 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 1 en erreur |
| 62 | 62 | |
added
docs/connecteurs/gestion_mj.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Gestion Immobilière M.J — connecteur `gestion_mj` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 9/9 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Gestion Immobilière M.J (gestionmj.com) Immeuble du 9155 rue Meilleur, Montréal (Ahuntsic / district Chabanel). WordPress (thème Astra) rendu serveur avec CPT « a-louer » exposé en REST (/wp-json/wp/v2/a-louer) : on énumère les annonces via l'API puis on parse chaque page détail (h2.price, p.address, p.availability, section Détails = commodités, Description, galerie). ⚠️ Les blocs icônes (chambres / pi² / étage) et la date de disponibilité sont des valeurs de gabarit IDENTIQUES sur toutes les pages (« 2 chambre(s) », « 900 pi² », « 02/03/2025 ») → chambres/typologie dérivées du TITRE (« Studio moderne », « Appartement 2/3 chambres »), icônes reléguées en details. Granularité : une annonce par unité (post CPT). | |
| 10 | + | |
| 11 | +- **Site** : https://gestionmj.com | |
| 12 | +- **Page des annonces** : https://gestionmj.com/ | |
| 13 | +- **Secteurs couverts** : Montréal — Ahuntsic-Cartierville (rue Meilleur, rue Verville, avenue du Parc) | |
| 14 | +- **Module** : `louka/connectors/gestion_mj.py` — classe `GestionMJConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API REST WordPress (wp-json) | |
| 19 | +- **Endpoint de base** : https://gestionmj.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://gestionmj.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Studio moderne – Montréal, QC | | |
| 33 | +| `address` | Adresse civique | 100 % | 9820 Rue Verville, Montréal, QC, H3L 3E2 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Ahuntsic-Cartierville | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 600 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Découvrez ce spacieux appartement de deux chambres à Montréal, idéalement situé à proximi… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 4 photo(s) — https://gestionmj.com/wp-content/uploads/2025/02/7fb46b89-2587-4669-8cd1-0e0… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Ascenseur", "Balcon", "Buanderie", "Climatisation", "Meublé", "Piscine", "Intercom", "E… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"washer_dryer_hookup": true, "dishwasher_hookup": true}, "ac": true, "ele… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://gestionmj.com/a-louer/studio-moderne-montreal-qc-4/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:39 — 9 trouvées, +9 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 9 au total, **9 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync gestion_mj` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='gestion_mj' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/gestion_montreal.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Montréal — connecteur `gestion_montreal` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 23/26 |
| 6 | 6 | |
@@ -40,7 +40,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 9 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 78 % | — | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.521 | |
| 43 | −| `description` | Description | 100 % | À propos de l’appartement : Studio semi-meublé Prix : 950 $/mois Hydro-Québec et Wi-Fi in… | | |
| 43 | +| `description` | Description | 100 % | Le loyer est de 1 090 $ par mois , avec 1,5 mois gratuit offert la première année , ce qu… | | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 8 photo(s) — https://static.immosquare.com/shareimmo/production/property_asset/asset/9e70… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 96 % | ["Eau chaude", "Chauffage", "Électricité", "Réfrigérateur", "Micro-onde", "Non-fumeur", "… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true, "internet": true… | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:07 — 23 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 23 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 26 au total, **23 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestion_tb.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Gestion TB (portail Appartements TB) — connecteur `gestion_tb` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 30/36 | |
| 5 | +**État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 28/37 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,14 +25,14 @@ connecteur Gestion TB (Drummondville) Portail d'annonces appartementstb.ca (auss | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 30 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 28 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 2 ½ rue Lindsay à 850$ | |
| 33 | 33 | | `address` | Adresse civique | 0 % | — | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Notre-Dame-du-Bon-Conseil | |
| 35 | −| `sector` | Secteur / quartier | 63 % | Centre-ville | | |
| 35 | +| `sector` | Secteur / quartier | 64 % | Centre-ville | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 2½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 850 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 0 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:07 — 30 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 28 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 36 au total, **30 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 37 au total, **28 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestion_valco.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Valco — connecteur `gestion_valco` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:07 — 2 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 50 % · description 50 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gestipro.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Gestipro — connecteur `gestipro` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 103/124 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 99/125 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Gestipro (gestipro.info) Site WordPress (thème Houzez) : liste pagin | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 103 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 99 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -38,7 +38,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 3 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 12 % | 2 | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 17 % | — | |
| 41 | −| `availability_date` | Date de disponibilité | 83 % | 2027-07-01 | | |
| 41 | +| `availability_date` | Date de disponibilité | 85 % | 2027-07-01 | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.8518496 | |
| 43 | 43 | | `description` | Description | 100 % | Condos locatifs – LE MARIA-GORETTI (Livraison avril 2027) – Unités 5½ situées au 7170 bou… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 5 photo(s) — https://gestipro.info/wp-content/uploads/2026/06/Immeuble_7170-boul.-Cloutie… | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:07 — 103 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 99 trouvées, +0 / ~0 / -1 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 124 au total, **103 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 125 au total, **99 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gia_t.md
+7 −7
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # GIA-T — Gestion Immobilière Abitibi-Témiscamingue — connecteur `gia_t` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 5/7 |
| 6 | 6 | |
@@ -33,15 +33,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 33 | 33 | | `address` | Adresse civique | 80 % | — | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Rouyn-Noranda | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Près du centre-ville | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 2½ | | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 100 $ | |
| 38 | −| `bedrooms` | Chambres | 100 % | 1 | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 80 % | — | |
| 43 | −| `description` | Description | 100 % | Bonjour à tous, Nous avons actuellement un 2 1/2 et un 3½ à louer à la Résidence St-Miche… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 7 photo(s) — https://gia-t.com/wp-content/uploads/2026/08/Media-2026-04-14T120122.924.jpg | | |
| 43 | +| `description` | Description | 100 % | Bonjour à tous, Nous avons actuellement un 2 1/2 à louer à la Résidence St-Michel. Cette … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 5 photo(s) — https://gia-t.com/wp-content/uploads/2026/08/419913844_295712946836397_11697… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["1 chambre(s)", "1 salle(s) de bain", "Inclus : Cable, Chauffage, Internet, Électricité,… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true, "internet": true… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://gia-t.com/logements/residence-st-michel/ | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:07 — 5 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 80 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 5 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gimcote.md
+18 −18
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # GIM Côté — connecteur `gimcote` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 86/91 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 71/95 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,38 +25,38 @@ connecteur GIM Côté inc. (gimcote.com) WordPress + thème immobilier Houzez. A | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 86 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 71 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | Beau studio 1 1/2, St-Roch, WIFI Libre | | |
| 33 | −| `address` | Adresse civique | 100 % | 757, Rue de la Reine | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Superbe grand 5 1/2, Ste-Foy, 1er étage Libre | | |
| 33 | +| `address` | Adresse civique | 100 % | 715, Avenue de Norvège | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Québec | |
| 35 | −| `sector` | Secteur / quartier | 80 % | Saint-Roch, La Cité-Limoilou | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 1½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 615 $ | | |
| 38 | −| `bedrooms` | Chambres | 100 % | 0 | | |
| 35 | +| `sector` | Secteur / quartier | 80 % | Sainte-Geneviève, Le Plateau | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 325 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 3 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 1 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 3 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 100 % | 46.8171235 | | |
| 43 | −| `description` | Description | 100 % | 418-655-8281 À voir au 757 de la Reine appartement #RC2, beau studio 1 1/2 situé au rez d… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 6 photo(s) — https://gimcote.com/wp-content/uploads/2026/08/PXL_20250624_175940590.jpg | | |
| 45 | −| `amenities` | Commodités (JSON) | 100 % | ["Lit: 0", "Bain: 1", "Étage(s): 1", "Stationnement: Non", "Appartement", "Buanderie", "C… | | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true, "internet": true… | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://gimcote.com/property/beau-studio-1-1-2-st-roch-wifi-libre-2/ | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.7720461 | | |
| 43 | +| `description` | Description | 100 % | 418-655-8281 À voir au 715 Avenue de Norvège, appartement #1, superbe grand 5 1/2 situé a… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 15 photo(s) — https://gimcote.com/wp-content/uploads/2026/08/IMG_4442.jpeg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Lits: 3", "Bain: 1", "Étage(s): 1", "Stationnement: 1", "Appartement", "Chauffage inclu… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": false, "hot_water": false}, "appliances":… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://gimcote.com/property/superbe-grand-5-1-2-ste-foy-1er-etage-libre/ | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:07 — 86 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 71 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 91 au total, **86 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 95 au total, **71 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gio.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Immobilière de l'Outaouais (GIO) — connecteur `gio` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:07 — 5 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 3.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/girescom.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Girescom gestion immobilière — connecteur `girescom` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 40/41 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:07 — 40 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:43 — 40 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 41 au total, **40 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/girs.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # GIRS — Gestion Immobilière de la Rive Sud — connecteur `girs` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 8/8 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:07 — 8 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:44 — 8 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 8 au total, **8 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/gparadis.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # GParadis — connecteur `gparadis` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 22/22 |
| 6 | 6 | |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:07 — 22 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:44 — 22 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 22 au total, **22 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 82 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/grandeur_natura.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Grandeur Natura (Groupe Mathieux) — connecteur `grandeur_natura` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Grandeur Natura (grandeurnatura.ca, Groupe Mathieux) — 6-plex locatifs neufs au 1199, rue Marcel-de la Sablonnière, Terrebonne (Urbanova), J0N 1H0. WordPress/Bootstrap rendu serveur : la page d'accueil décrit chaque typologie dans un bloc « Unité locative - Appartement n ½ » (SDB, chambres, garage, carrousel de photos par unité, plan PDF commun). Les blocs « Maisons de prestige » sont des maisons à VENDRE : exclus. Aucun prix publié (jamais inventé). Granularité TYPOLOGIE (3½/4½/5½). | |
| 10 | + | |
| 11 | +- **Site** : https://grandeurnatura.ca | |
| 12 | +- **Page des annonces** : https://grandeurnatura.ca/ | |
| 13 | +- **Secteurs couverts** : Terrebonne/Urbanova (1199 rue Marcel-de la Sablonnière, 6-plex locatifs) | |
| 14 | +- **Module** : `louka/connectors/grandeur_natura.py` — classe `GrandeurNaturaConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://grandeurnatura.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://grandeurnatura.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Grandeur Natura — 3½ | | |
| 33 | +| `address` | Adresse civique | 100 % | 1199, rue Marcel-de la Sablonnière | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Terrebonne | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Urbanova | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Simplifiez votre vie au quotidien. Profitez d’espaces alliant confort et modernité. | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 15 photo(s) — https://grandeurnatura.ca/wp-content/uploads/2025/12/vue-modele-arriere.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Garage simple ou double"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"parking": {"available": true, "type": "intérieur"}, "building": "Grandeur Natura", "pla… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://grandeurnatura.ca/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:39 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync grandeur_natura` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='grandeur_natura' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/grilli_citea.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Groupe Grilli Samuel — projet Citéa — connecteur `grilli_citea` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Groupe Grilli Samuel / Citéa (grillisamuel.com + projetcitea.com) — constructeur-gestionnaire ; son inventaire locatif = le projet Citéa (950-970, avenue Pierre-Dansereau, Terrebonne/Urbanova, 4 phases, condos locatifs tout inclus). Backend : WordPress — l'API REST publique /wp-json/wp/v2/inventaire de grillisamuel.com expose les fiches (content.rendered structuré : caractéristiques, superficie, animaux, semi-meublé, photos). On ne garde que les fiches LOCATIVES (« à louer » dans le texte) — les maisons de Sainte-Julie/Pointe-Claire sont à VENDRE (promesse d'achat), exclues. Les prix « à partir de » par typologie (3½/4½/4½+DEN) sont relevés sur projetcitea.com/condos-locatifs/ et appariés à chaque fiche. Granularité TYPOLOGIE (une annonce par type d'unité du projet). | |
| 10 | + | |
| 11 | +- **Site** : https://grillisamuel.com | |
| 12 | +- **Page des annonces** : https://projetcitea.com/condos-locatifs/ | |
| 13 | +- **Secteurs couverts** : Terrebonne/Urbanova (950-970 avenue Pierre-Dansereau, condos locatifs tout inclus) | |
| 14 | +- **Module** : `louka/connectors/grilli_citea.py` — classe `GrilliCiteaConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API REST WordPress (wp-json) | |
| 19 | +- **Endpoint de base** : https://grillisamuel.com/wp-json/wp/v2/inventaire?per_page=100&_embed=wp:featuredmedia | |
| 20 | +- **URLs de départ (constantes du module)** : https://grillisamuel.com/wp-json/wp/v2/inventaire?per_page=100&_embed=wp:featuredmedia · https://projetcitea.com/condos-locatifs/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Condo 1 chambre, 970, Avenue Pierre-Dansereau, Terrebonne | | |
| 33 | +| `address` | Adresse civique | 100 % | 970, Avenue Pierre-Dansereau | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Terrebonne | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Urbanova | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 605 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 745 | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | 3½ à louer à Terrebonne (Urbanova) Découvrez Citéa, un projet locatif tout inclus situé a… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://grillisamuel.com/wp-content/uploads/2025/08/Citea_StephaneGroleau-03… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Semi-meublé", "Tout inclus", "Chiens de moins de 20 lbs acceptés"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"electricity": true, "hot_water": true, "internet": true, "cable": true},… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://grillisamuel.com/inventaire/condo-1-chambre-970-avenue-pierre-dansereau-terrebonn… | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:39 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync grilli_citea` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='grilli_citea' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/groupe_dallaire.md
+6 −12
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Dallaire (Faubourg du Moulin) — connecteur `groupe_dallaire` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif (dégradé)** · Région : Québec · Backend : Scrapfly · Annonces actives : 255/259 |
| 6 | 6 | |
@@ -48,27 +48,21 @@ Le connecteur (Scrapfly, API admin-ajax (WordPress)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:08 — 255 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:50 — 255 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 259 au total, **255 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 8 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-18 01:39 | HTTPSConnectionPool(host='faubourgdumoulin.ca', port=443): Max retries exceeded with url: /wp-admin/admin-ajax.php (Caused by ConnectTimeoutError(<HTTPSConnect… | | |
| 68 | −| 2026-08-18 01:30 | admin-ajax via proxy Scrapfly : HTTP 0 | | |
| 69 | −| 2026-08-17 22:21 | HTTPSConnectionPool(host='faubourgdumoulin.ca', port=443): Max retries exceeded with url: /wp-admin/admin-ajax.php (Caused by ConnectTimeoutError(<HTTPSConnect… | | |
| 70 | −| 2026-08-17 18:57 | HTTPSConnectionPool(host='faubourgdumoulin.ca', port=443): Max retries exceeded with url: /wp-admin/admin-ajax.php (Caused by ConnectTimeoutError(<HTTPSConnect… | | |
| 71 | −| 2026-08-17 15:20 | HTTPSConnectionPool(host='faubourgdumoulin.ca', port=443): Max retries exceeded with url: /wp-admin/admin-ajax.php (Caused by ConnectTimeoutError(<HTTPSConnect… | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 72 | 66 | |
| 73 | 67 | **Note du registre** : actif (dégradé) — le pare-feu de faubourgdumoulin.ca bloque l'IP du serveur Lou-Ka depuis ~2026-08-17 : repli automatique sur proxy Scrapfly (timeout direct 8 s) |
| 74 | 68 | |
modified
docs/connecteurs/groupe_jacques.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Jacques — connecteur `groupe_jacques` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 10/11 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:08 — 10 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:51 — 10 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 11 au total, **10 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 60 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 1 en erreur |
| 62 | 62 | |
added
docs/connecteurs/groupe_mathieu.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Groupe Mathieu — connecteur `groupe_mathieu` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides / Lanaudière · Backend : direct · Annonces actives : 16/16 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Groupe Mathieu (groupemathieu.com) Promoteur Rive-Nord : condos locatifs à Blainville (Station 54/56, Le Siège Social, Place Notre Dame), Sainte-Thérèse (Ste-Thé, Quartier Belmont), Terrebonne (Noüvo District) et Laval. WordPress/Elementor rendu serveur : le méga-menu « PROJETS À LOUER » liste les projets par ville ; chaque page projet affiche l'adresse, « Occupation … » et des blocs typologie (« 3 ½ », description pi²/chambres, « À partir de N$ par mois »). Granularité : une annonce par TYPOLOGIE de projet (sinon une par projet quand la page ne détaille pas les typologies). Les projets « 100 % vendu/ loué » sont exclus. | |
| 10 | + | |
| 11 | +- **Site** : https://groupemathieu.com | |
| 12 | +- **Page des annonces** : https://groupemathieu.com/ | |
| 13 | +- **Secteurs couverts** : Blainville (Station 54/56, Le Siège Social, Place Notre Dame), Sainte-Thérèse (Ste-Thé, Quartier Belmont), Terrebonne (Noüvo District) | |
| 14 | +- **Module** : `louka/connectors/groupe_mathieu.py` — classe `GroupeMathieuConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://groupemathieu.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://groupemathieu.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 16 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Place Notre Dame condos locatifs — condos locatifs (Blainville) | | |
| 33 | +| `address` | Adresse civique | 100 % | 1289 Boul. Curé-Labelle, Blainville (Québec) J7C 1Z7 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Blainville | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 94 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 94 % | — | | |
| 38 | +| `bedrooms` | Chambres | 94 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 75 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Dotés d’une architecture contemporaine et d’une finition soignée, les condos locatifs neu… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 20 photo(s) — https://groupemathieu.com/wp-content/uploads/2019/01/favico.png | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true}, "ac": true, "elevator": true, "balcony": true, "smoking… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://groupemathieu.com/projet-place-notre-dame-condos-locatif/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:59 — 16 trouvées, +16 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 16 au total, **16 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 94 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 2, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync groupe_mathieu` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='groupe_mathieu' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/groupe_maurice.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le Groupe Maurice — connecteur `groupe_maurice` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Province · Backend : direct · Annonces actives : 203/203 |
| 6 | 6 | |
@@ -49,16 +49,16 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:08 — 203 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:51 — 203 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 203 au total, **203 actives** |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 46, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/groupe_robin.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Groupe Robin — connecteur `groupe_robin` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 71/76 | |
| 5 | +**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 72/77 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,14 +25,14 @@ connecteur Groupe Robin (grouperobin.com) WordPress Elementor multi-lignes d'aff | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 71 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 72 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 5 ½ — Le 2285 des Grandes-Orgues, St-Hyacinthe | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 2285 Av. des Grandes-Orgues | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Saint-Hyacinthe | |
| 35 | −| `sector` | Secteur / quartier | 23 % | — | | |
| 35 | +| `sector` | Secteur / quartier | 22 % | — | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 625 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 3 | |
@@ -48,16 +48,16 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:08 — 71 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:51 — 72 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `PER_PAGE` = 40 |
| 56 | 56 | |
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | −- **Annonces en BD** : 76 au total, **71 actives** | |
| 60 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Annonces en BD** : 77 au total, **72 actives** | |
| 60 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 61 | 61 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 96 % |
| 62 | 62 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 63 | 63 | |
modified
docs/connecteurs/groupe_theoret.md
+19 −19
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Groupe Théorêt (Gestion Immobilière) — connecteur `groupe_theoret` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 24/24 | |
| 5 | +**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 23/43 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,39 +25,39 @@ connecteur Groupe Théorêt (locationappartement.ca) GoDaddy Website Builder. La | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 24 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 23 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | 3 1/2 au 5080 Pie-IX, Montréal | | |
| 33 | −| `address` | Adresse civique | 100 % | 5080 Pie-IX | | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 4 1/2 au 2660 De la Rennaissance, Laval | | |
| 33 | +| `address` | Adresse civique | 100 % | 2660 De la Rennaissance | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Laval | | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 1 050 $ | | |
| 38 | −| `bedrooms` | Chambres | 100 % | 1 | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 250 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | −| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | −| `lat` | GPS (lat/lng) | 83 % | 45.5573626 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 74 % | 45.601463267284 | | |
| 43 | 43 | | `description` | Description | 0 % | — | |
| 44 | 44 | | `images` | Photos (JSON) | 0 % | — | |
| 45 | −| `amenities` | Commodités (JSON) | 88 % | ["Eau chaude (Inclus)", "Chauffage (Inclus)", "Concierge (Inclus)"] | | |
| 46 | −| `details` | Détails additionnels (JSON) | 88 % | {"inclusions": {"heating": true, "hot_water": true}, "contact": {"name": "Jean Chagnon", … | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://locationappartement.ca/5080-5100-pie-ix#5f15a6f5-ac50-4019-ae2a-f5a6ca5eeadf | | |
| 45 | +| `amenities` | Commodités (JSON) | 91 % | ["Stationnement extérieur (Inclus)", "Concierge (Inclus)"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 91 % | {"parking": {"available": true, "type": "extérieur", "included": true}, "contact": {"name… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://locationappartement.ca/2660-de-la-rennaissance | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:08 — 24 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:51 — 23 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 24 au total, **24 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 83 % · prix 100 % · photos 0 % · description 0 % | |
| 58 | +- **Annonces en BD** : 43 au total, **23 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | +- **Complétude clé (actives)** : GPS 74 % · prix 100 % · photos 0 % · description 0 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
added
docs/connecteurs/gwlra.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# GWL Realty Advisors Residential — connecteur `gwlra` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : Scrapfly · Annonces actives : 1/1 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur GWL Realty Advisors Residential (gwlraresidential.com — gestionnaire pancanadien, plateforme RentCafe/Yardi derrière Cloudflare : tout passe par Scrapfly ASP). Découverte : sitemap.xml → pages /apartments/qc/<ville>/<slug>/floorplans (immeubles du Québec seulement). Chaque page floorplans (rendu serveur) expose les plans « div.fp-container » (id fp-container-<fpid>) avec le prix « à partir de $X /mois » — seuls les plans avec prix sont retenus (les autres = liste d'attente) — plus un JSON-LD ApartmentComplex (adresse civique, animaux, chambres/sdb/pi² par plan). Une annonce par plan d'étage disponible, external_id = <slug>-<fpid>. | |
| 10 | + | |
| 11 | +- **Site** : https://www.gwlraresidential.com | |
| 12 | +- **Page des annonces** : https://www.gwlraresidential.com/apartments/qc/montreal/le-demetrius/floorplans | |
| 13 | +- **Secteurs couverts** : Centre-ville de Montréal (Le Demetrius — seul immeuble QC actif) | |
| 14 | +- **Module** : `louka/connectors/gwlra.py` — classe `GwlraConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : sitemap XML + pages HTML | |
| 19 | +- **Endpoint de base** : https://www.gwlraresidential.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.gwlraresidential.com | |
| 21 | +- **Authentification** : aucune — contenu public (clé Scrapfly côté Lou-Ka) | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : Scrapfly (asp + render_js — contournement anti-bot) | |
| 24 | +- **Politesse** : 1.0 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (Scrapfly, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Le Demetrius — 1 Bedroom 1 Bath | | |
| 33 | +| `address` | Adresse civique | 100 % | 1445 Rue Stanley, Montreal, QC H3A 3T1 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 819 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 702 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 2 photo(s) — https://resource.rentcafe.com/image/upload/q_auto,f_auto,c_limit,w_576,h_260… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true, "pets": "oui"} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.gwlraresidential.com/apartments/qc/montreal/le-demetrius/floorplans | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:40 — 1 trouvées, +1 / ~0 / -0 | |
| 53 | +- **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : désactivé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 1 au total, **1 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync gwlra` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='gwlra' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 1.0 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/habitations_jeanne.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Habitations Jeanne — connecteur `habitations_jeanne` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Côte-Nord · Backend : direct · Annonces actives : 14/14 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:08 — 14 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:51 — 14 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 14 au total, **14 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/habitations_sf.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Habitations SF (S&F Gestion) — connecteur `habitations_sf` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 7/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:08 — 7 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:51 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **7 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 43 % · prix 86 % · photos 100 % · description 86 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/halfred.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Halfred — connecteur `halfred` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 165/171 | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 169/175 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,14 +25,14 @@ connecteur Halfred (halfred.ca — Outaouais) Application React Router rendue C | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 165 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 169 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | PURE | |
| 33 | 33 | | `address` | Adresse civique | 93 % | — | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Gatineau | |
| 35 | −| `sector` | Secteur / quartier | 56 % | — | | |
| 35 | +| `sector` | Secteur / quartier | 57 % | — | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 525 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:09 — 165 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:52 — 169 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 10.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 171 au total, **165 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 175 au total, **169 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 93 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/hapopex.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# HAPOPEX — OBNL d'habitation — connecteur `hapopex` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 4/4 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +HAPOPEX (hapopex.org) — OBNL d'habitation montréalais (parcs à Montréal-Nord, Lachine, Côte-des-Neiges…), page « Logements à louer » avec une carte par parc d'habitation. Techno : Wix rendu côté serveur. ⚠️ Les slugs des fiches sont trompeurs (copy-of-industriel-1-… = fiche ARCHEVÊQUE, etc.) : on apparie carte -> fiche PAR POSITION dans le document, jamais par le slug. La fiche fournit le quartier et les « Types d'unités » (pas de prix ni d'adresse civique). Granularité : PARC D'HABITATION (une annonce par parc). | |
| 10 | + | |
| 11 | +- **Site** : https://www.hapopex.org | |
| 12 | +- **Page des annonces** : https://www.hapopex.org/logements-a-louer | |
| 13 | +- **Secteurs couverts** : Montréal-Nord, Lachine, Côte-des-Neiges | |
| 14 | +- **Module** : `louka/connectors/hapopex.py` — classe `HapopexConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.hapopex.org | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.hapopex.org | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | HAPOPEX — Industriel 1 (Montréal-Nord) | | |
| 33 | +| `address` | Adresse civique | 0 % | — | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Montréal-Nord | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 0 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Parc d'habitation Industriel 1 de HAPOPEX (OBNL) — 95 logements, quartier Montréal-Nord, … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 3 photo(s) — https://static.wixstatic.com/media/9a8e10_dd03715b2cf1441087c88e7577633b25~m… | | |
| 45 | +| `amenities` | Commodités (JSON) | 75 % | ["Types d'unités : 3½, 4½, 5½"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"unit_types": ["3½", "4½", "5½"], "unit_count": 95} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.hapopex.org/montreal-nord-fiche1 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:40 — 4 trouvées, +4 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 4 au total, **4 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync hapopex` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='hapopex' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/hazelview.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Hazelview Properties — connecteur `hazelview` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 6/6 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:10 — 6 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:52 — 6 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 6 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/headway.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # La Corporation Headway — connecteur `headway` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 7/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:10 — 7 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:52 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **7 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/heafey.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Groupe Heafey (Le We 2, Le We 3, Loggia sur le Parc) — connecteur `heafey` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 246/261 | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 247/261 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Groupe Heafey (Gatineau, secteur Hull) Le résidentiel du groupe vit | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 246 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 247 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:10 — 246 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 247 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 261 au total, **246 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 261 au total, **247 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/helio.md
+78 −0
@@ -0,0 +1,78 @@ | ||
| 1 | +# Entreprises Hélio — connecteur `helio` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 0/0 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Entreprises Hélio (entrepriseshelio.ca) Trois immeubles en Montérégie : 2417 Montarville et 335-345 Place du Collège à Longueuil, 1065-1075 boul. de Palerme à La Prairie. WordPress + Divi rendu serveur : la page /a-louer/ liste une section par typologie (h3 « 3 1/2, Place du Collège », « 4 1/2, Palerme »…) suivie d'un encadré « Disponibilité : <valeur> » et des caractéristiques (li). Une typologie marquée « COMPLET » n'est PAS ingérée : seules les sections avec une vraie disponibilité (date ou « disponible ») deviennent des annonces. Il est donc normal que ce connecteur retourne 0 annonce quand tout le parc est loué (état observé au 2026-08-25). | |
| 10 | + | |
| 11 | +- **Site** : https://www.entrepriseshelio.ca | |
| 12 | +- **Page des annonces** : https://www.entrepriseshelio.ca/a-louer/ | |
| 13 | +- **Secteurs couverts** : Longueuil, La Prairie | |
| 14 | +- **Module** : `louka/connectors/helio.py` — classe `HelioConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.entrepriseshelio.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.entrepriseshelio.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 0 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | — | — | | |
| 33 | +| `address` | Adresse civique | — | — | | |
| 34 | +| `city` | Ville (normalisée) | — | — | | |
| 35 | +| `sector` | Secteur / quartier | — | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | — | — | | |
| 37 | +| `price` | Loyer mensuel ($) | — | — | | |
| 38 | +| `bedrooms` | Chambres | — | — | | |
| 39 | +| `bathrooms` | Salles de bain | — | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | — | — | | |
| 41 | +| `availability_date` | Date de disponibilité | — | — | | |
| 42 | +| `lat` | GPS (lat/lng) | — | — | | |
| 43 | +| `description` | Description | — | — | | |
| 44 | +| `images` | Photos (JSON) | — | — | | |
| 45 | +| `amenities` | Commodités (JSON) | — | — | | |
| 46 | +| `details` | Détails additionnels (JSON) | — | — | | |
| 47 | +| `url` | URL de l'annonce source | — | — | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:40 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 0 au total, **0 actives** | |
| 59 | +- **Première ingestion** : — · **Dernière observation** : — | |
| 60 | +- **Complétude clé (actives)** : GPS — · prix — · photos — · description — | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync helio` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='helio' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/hestia.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Hestia Groupe immobilier — connecteur `hestia` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:10 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/horizon_terrebonne.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Horizon Terrebonne (Groupe Socam) — connecteur `horizon_terrebonne` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 4/4 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Horizon Terrebonne (horizonterrebonne.com — Groupe Socam, condos locatifs neufs en 2 tours au 1441 chemin Gascon à Terrebonne). WordPress rendu SERVEUR : la page /condos/ liste des cartes <article class="apartment"> (statut, tour, chambres, prix mensuel, photo, lien) ; chaque fiche « Phase n - x.5 à partir de » ajoute salle(s) de bain, étage, superficie et galerie. Granularité MODÈLE « à partir de » par phase/typologie (pas d'unités individuelles publiées) ; external_id = id du post WordPress (stable, classe post-NNNN). Seules les cartes « Disponible » sont retenues. | |
| 10 | + | |
| 11 | +- **Site** : https://horizonterrebonne.com | |
| 12 | +- **Page des annonces** : https://horizonterrebonne.com/condos/ | |
| 13 | +- **Secteurs couverts** : Terrebonne | |
| 14 | +- **Module** : `louka/connectors/horizon_terrebonne.py` — classe `HorizonTerrebonneConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://horizonterrebonne.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://horizonterrebonne.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Phase 1 – 3.5 à partir de | | |
| 33 | +| `address` | Adresse civique | 100 % | 1441, chemin Gascon, Terrebonne | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Terrebonne | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 500 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.712055 | | |
| 43 | +| `description` | Description | 100 % | Phase 1 – 3.5 à partir de — Tour 1 | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 11 photo(s) — https://horizonterrebonne.com/app/uploads/2023/05/ht2-101-mar2023-3-scaled.… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true, "tour": "Tour 1", "bathrooms": 1.0} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://horizonterrebonne.com/condos/phase-1-1-chambre-a-coucher/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:40 — 4 trouvées, +4 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 4 au total, **4 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync horizon_terrebonne` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='horizon_terrebonne' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/huma.md
+6 −6
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # HUMĀ Condos locatifs — connecteur `huma` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 38/38 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 39/39 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur HUMĀ Condos locatifs (humalevis.com) Deux phases de 130/132 unités | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 38 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 39 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -49,14 +49,14 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:10 — 38 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 39 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 38 au total, **38 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 39 au total, **39 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/humano.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Humano District — connecteur `humano` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 19/19 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Humano District (humanodistrict.ca) Appartements locatifs au cœur de Sherbrooke — 2 bâtiments (Galt, 1820 rue Galt Ouest, et Maison Générale) sur l'ancien campus des sœurs. Le site WP embarque le widget SmartCondo Plans (silo.immo) : l'API JSON /v2/building/get-project-data?project=humano-district renvoie toutes les unités (prix, superficie, chambres, sdb, étage, disponibilité 1=dispo / 2=loué / 3=réservé + availability_date, plan PDF, photo). Granularité : unité. | |
| 10 | + | |
| 11 | +- **Site** : https://humanodistrict.ca | |
| 12 | +- **Page des annonces** : https://humanodistrict.ca/appartements/ | |
| 13 | +- **Secteurs couverts** : Sherbrooke (rue Galt Ouest — Galt et Maison Générale) | |
| 14 | +- **Module** : `louka/connectors/humano.py` — classe `HumanoConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://smartcondoplans.silo.immo/v2/building/get-project-data?project=humano-district&language=fr | |
| 20 | +- **URLs de départ (constantes du module)** : https://humanodistrict.ca/appartements/ · https://smartcondoplans.silo.immo/v2/building/get-project-data · https://smartcondoplans.silo.immo/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 19 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Unité 217 (3½) — Maison Générale, Humano District | | |
| 33 | +| `address` | Adresse civique | 100 % | rue Galt Ouest, Sherbrooke | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Sherbrooke | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 95 % | 1 721 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 686 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://smartcondoplans.silo.immo/projects/95/buildings/141/floors/841/units… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"floor": "Étage 2", "building": "Maison Générale", "plan_pdf": "https://smartcondoplans.… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://humanodistrict.ca/appartements/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:40 — 19 trouvées, +19 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 19 au total, **19 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 95 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync humano` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='humano' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/immeubles_aeb.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immeubles AEB — connecteur `immeubles_aeb` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 26/26 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:10 — 26 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 26 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 26 au total, **26 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 81 % · description 27 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immeubles_bc.md
+19 −19
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Les Immeubles Beaulieu et Collin — connecteur `immeubles_bc` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 20/30 | |
| 5 | +**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 17/30 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,39 +25,39 @@ connecteur Les Immeubles Beaulieu et Collin (immeublesbc.com — Rimouski, 900+ | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 20 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 17 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | 20 Rue St Laurent E | | |
| 33 | −| `address` | Adresse civique | 90 % | 20 Rue St Laurent E, Rimouski, QC G5L 2C4 | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 183 Rue Langevin | | |
| 33 | +| `address` | Adresse civique | 88 % | 183 Rue Langevin, Rimouski, QC G5L 3A2 | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Rimouski | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 95 % | 5½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 1 410 $ | | |
| 38 | −| `bedrooms` | Chambres | 95 % | 3 | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 94 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 300 $ | | |
| 38 | +| `bedrooms` | Chambres | 94 % | 2 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 100 % | 48.447829977608 | | |
| 43 | −| `description` | Description | 30 % | — | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 11 photo(s) — https://immeublesbc.com/wp-content/uploads/2026/06/logement-a-louer-rimousk… | | |
| 45 | −| `amenities` | Commodités (JSON) | 100 % | ["3 chambre(s)", "2 salle(s) de bain", "Buanderie dans l'immeuble", "Cuisinière", "Déneig… | | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"stove": true}, "laundry": true, "parking": {"available": true, "type": "… | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://immeublesbc.com/property/20-rue-st-laurent-e-2/ | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 48.455654715204 | | |
| 43 | +| `description` | Description | 35 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 8 photo(s) — https://immeublesbc.com/wp-content/uploads/2026/06/DSCN1590.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["2 chambre(s)", "1 salle(s) de bain", "Stationnement extérieur"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"parking": {"available": true, "type": "extérieur"}} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://immeublesbc.com/property/183-rue-langevin/ | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:10 — 20 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 17 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 30 au total, **20 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 30 % | |
| 58 | +- **Annonces en BD** : 30 au total, **17 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 35 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/immeubles_bois.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles Bois — connecteur `immeubles_bois` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 23/23 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:11 — 23 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 23 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 23 au total, **23 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 87 % · prix 0 % · photos 100 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immeubles_db.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles D.B. Busque-Massé — connecteur `immeubles_db` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 13/13 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:11 — 13 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 13 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 13 au total, **13 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immeubles_dcl.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles DCL — connecteur `immeubles_dcl` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 7/11 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:11 — 7 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 11 au total, **7 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immeubles_guillot.md
+6 −8
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles Guillot — connecteur `immeubles_guillot` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 7/7 |
| 6 | 6 | |
@@ -48,23 +48,21 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:11 — 7 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **7 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 57 % · prix 0 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-16 20:39 | HTTPSConnectionPool(host='immeublesguillot.com', port=443): Read timed out. (read timeout=30) | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 68 | 66 | |
| 69 | 67 | Rejouer la source seule : `python3 run.py sync immeubles_guillot` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='immeubles_guillot' ORDER BY ts DESC LIMIT 5;`). |
| 70 | 68 | |
modified
docs/connecteurs/immeubles_ouellet.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles Vianney Ouellet & Fils — connecteur `immeubles_ouellet` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:11 — 1 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immeubles_pm.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles PM — connecteur `immeubles_pm` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:11 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immnasr.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles Michel Nazair — connecteur `immnasr` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:11 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/immo_3r.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# IMMO 3R — connecteur `immo_3r` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 11/11 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur IMMO 3R (immo3r.com) Gestion immobilière locative en Mauricie / Centre-du-Québec : Trois-Rivières (Cap-de-la-Madeleine), Shawinigan, Bécancour, Nicolet, Saint-Maurice. WordPress rendu serveur : pages ville /location/<ville>/ avec cartes (type, rue, ville, prix, badge dispo-oui/dispo-non) ; pages détail /apartments/<slug>/ avec JSON-LD schema.org (Offer → Apartment : adresse postale complète, description, commodités, photos). Granularité : une fiche par modèle d'appartement (adresse + typologie), pas par unité individuelle. | |
| 10 | + | |
| 11 | +- **Site** : https://immo3r.com | |
| 12 | +- **Page des annonces** : https://immo3r.com/location/trois-rivieres/ | |
| 13 | +- **Secteurs couverts** : Trois-Rivières (Cap-de-la-Madeleine), Shawinigan, Bécancour, Nicolet, Saint-Maurice | |
| 14 | +- **Module** : `louka/connectors/immo_3r.py` — classe `Immo3RConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://immo3r.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://immo3r.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 11 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Magnifique 3-1/2 flambants neufs | | |
| 33 | +| `address` | Adresse civique | 100 % | 4170 Madeleine-Roy | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Trois-Rivières | | |
| 35 | +| `sector` | Secteur / quartier | 64 % | Cap-de-la-Madeleine | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 100 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Appartement 3 1/2 à louer à Trois-Rivières, secteur Cap-de-la-Madeleine: Superbe grand 3 … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 7 photo(s) — https://immo3r.com/wp-content/uploads/2024/12/CUISINE-SALON.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Air climatisé", "Balcon", "Chiens refusés", "Construction récente", "Échangeur d'air", … | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": false, "electricity": false, "internet": true}, "appliances": … | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://immo3r.com/apartments/3-1-2-neuf-trois-rivieres-cap-de-la-madeleine-4170-madelein… | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:40 — 11 trouvées, +11 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 11 au total, **11 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync immo_3r` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='immo_3r' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/immobilia.md
+24 −24
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Immobilia Rimouski — connecteur `immobilia` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 1/3 | |
| 5 | +**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 0/3 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,39 +25,39 @@ connecteur Immobilia Rimouski (immobiliarimouski.com) Gestionnaire du centre-vil | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 0 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | Superbe 4½ au centre-ville | | |
| 33 | −| `address` | Adresse civique | 100 % | 173-2 - 171 Rue St André, Rimouski, QC, Canada | | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Rimouski | | |
| 35 | −| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 1 255 $ | | |
| 38 | −| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | −| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | −| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | −| `availability_date` | Date de disponibilité | 100 % | 2026-10-01 | | |
| 42 | −| `lat` | GPS (lat/lng) | 100 % | 48.4462645 | | |
| 43 | −| `description` | Description | 100 % | Caractéristiques de l'espace de vie : 1 stationnement extérieur Unité situé au 2e étage U… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 5 photo(s) — https://immobiliarimouski.com/app/uploads/2026/07/image1785782600-772x1024.j… | | |
| 45 | −| `amenities` | Commodités (JSON) | 100 % | ["1 salle(s) de bain", "Balcon"] | | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": false, "electricity": false, "hot_water": false}, "appliances"… | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://immobiliarimouski.com/proprietes/superbe-4%c2%bd-au-centre-ville/ | | |
| 32 | +| `title` | Titre de l'annonce | — | Superbe 4½ au centre-ville | | |
| 33 | +| `address` | Adresse civique | — | 173-2 - 171 Rue St André, Rimouski, QC, Canada | | |
| 34 | +| `city` | Ville (normalisée) | — | Rimouski | | |
| 35 | +| `sector` | Secteur / quartier | — | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | — | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | — | 1 255 $ | | |
| 38 | +| `bedrooms` | Chambres | — | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | — | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | — | — | | |
| 41 | +| `availability_date` | Date de disponibilité | — | 2026-10-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | — | 48.4462645 | | |
| 43 | +| `description` | Description | — | Caractéristiques de l'espace de vie : 1 stationnement extérieur Unité situé au 2e étage U… | | |
| 44 | +| `images` | Photos (JSON) | — | 5 photo(s) — https://immobiliarimouski.com/app/uploads/2026/07/image1785782600-772x1024.j… | | |
| 45 | +| `amenities` | Commodités (JSON) | — | ["1 salle(s) de bain", "Balcon"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | — | {"inclusions": {"heating": false, "electricity": false, "hot_water": false}, "appliances"… | | |
| 47 | +| `url` | URL de l'annonce source | — | https://immobiliarimouski.com/proprietes/superbe-4%c2%bd-au-centre-ville/ | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:11 — 1 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 3 au total, **1 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 3 au total, **0 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | +- **Complétude clé (actives)** : GPS — · prix — · photos — · description — | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/immogex.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immogex — connecteur `immogex` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:11 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:53 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immomarketing.md
+11 −11
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # IMMOMARKETING (Immoappart) — connecteur `immomarketing` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 83/94 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 84/94 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,20 +25,20 @@ connecteur IMMOMARKETING / Immoappart (immoappart.ca). Le portail couvre la rég | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 83 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 84 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | CITÉ M - 4½ à louer | |
| 33 | 33 | | `address` | Adresse civique | 99 % | 1750 Rue Claire-Bonenfant, Québec, QC | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Québec | |
| 35 | −| `sector` | Secteur / quartier | 72 % | Lebourgneuf | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 35 | +| `sector` | Secteur / quartier | 71 % | Lebourgneuf | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 99 % | 4½ | | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 2 295 $ | |
| 38 | −| `bedrooms` | Chambres | 100 % | 2 | | |
| 38 | +| `bedrooms` | Chambres | 99 % | 2 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | −| `availability_date` | Date de disponibilité | 98 % | now | | |
| 41 | +| `availability_date` | Date de disponibilité | 96 % | now | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.83891 | |
| 43 | 43 | | `description` | Description | 100 % | UNE VIE D’EXCEPTION À LA CITÉ M, LEBOURGNEUF 4 ½ – Confort, espace et vue piscine Promoti… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 17 photo(s) — https://immoappart.ca/wp-content/uploads/2025/06/cite-m_app800_hd-13-scaled… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:11 — 83 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:54 — 84 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 94 au total, **83 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 94 au total, **84 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/immostar.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Immostar — connecteur `immostar` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 156/165 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 140/166 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Immostar (immostar.ca / immostaralouer.ca) Le résidentiel d'Immostar | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 156 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 140 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -39,7 +39,7 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 630 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2026-12-01 | |
| 42 | −| `lat` | GPS (lat/lng) | 78 % | 46.7704016 | | |
| 42 | +| `lat` | GPS (lat/lng) | 76 % | 46.7704016 | | |
| 43 | 43 | | `description` | Description | 100 % | 1 chambre — 630 pi² — étage 1 | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 4 photo(s) — https://habitermu.ca/wp-content/uploads/2023/11/MU-Drone-544_courNuit-scaled… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Grand gym à la fine pointe", "Piscine intérieure", "Studio de yoga ou de cour de groupe… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:12 — 156 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:54 — 140 trouvées, +0 / ~6 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 165 au total, **156 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 78 % · prix 99 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 166 au total, **140 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | +- **Complétude clé (actives)** : GPS 76 % · prix 99 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
added
docs/connecteurs/imvest.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Société Imvest (Le Méribel) — connecteur `imvest` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 1/1 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Société Imvest (societeimvest.ca) Le Méribel, 195 logements en 2 phases au 1191, rue de Courchevel à Lévis (secteur Saint-Romuald). WordPress (thème TeamPress) avec plans d'étage interactifs : endpoints AJAX POST maison — /ajax/recherche-etage/ (id=immeuble) -> liste des étages (li.Etage) /ajax/load-etage/ (id=étage) -> <area> par unité (no, type, superficie dans data-tooltip) + JSON `areas` dont fillColor code le statut : cbcbcb = loué, 940723 = réservé, autre = disponible /ajax/recherche-unite/ (id=unité) -> détail (disponibilité, plan, caractéristiques) Granularité : unité. Pas de prix publié (Tier B). | |
| 10 | + | |
| 11 | +- **Site** : https://www.societeimvest.ca | |
| 12 | +- **Page des annonces** : https://www.societeimvest.ca/immeubles/le-meribel/ | |
| 13 | +- **Secteurs couverts** : Lévis (Saint-Romuald — 1191, rue de Courchevel, 2 phases) | |
| 14 | +- **Module** : `louka/connectors/imvest.py` — classe `ImvestConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.societeimvest.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.societeimvest.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Unité 504 — Le Méribel — Phase 1 | | |
| 33 | +| `address` | Adresse civique | 100 % | 1191, rue de Courchevel, Lévis | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Lévis | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Saint-Romuald | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 780 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-10-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.732973 | | |
| 43 | +| `description` | Description | 100 % | Unité 504 (3½), Étage 5 — Le Méribel — Phase 1, Société Imvest, Lévis. | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://www.societeimvest.ca/wp-content/plugins/team-thumb/phpThumb.php?src=… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"floor": "Étage 5", "floor_plan": "https://www.societeimvest.ca/wp-content/uploads/2017/… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.societeimvest.ca/immeubles/le-meribel/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:41 — 1 trouvées, +1 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 1 au total, **1 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync imvest` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='imvest' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/in_via.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# IN VIA appartements urbains (CAP Immobilier) — connecteur `in_via` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur IN VIA appartements urbains (inviamirabel.com — CAP Immobilier, appartements locatifs neufs au 14385 et 14365 rue Roger-Thomas, secteur Saint-Janvier à Mirabel, phases de 32 unités). WordPress/Elementor rendu SERVEUR : la page /appartements/ annonce les typologies offertes en location (3½, 4½, 5½) et les phases avec leur adresse ; AUCUN prix ni disponibilité par unité publiés (« renseignez-vous sur la disponibilité ») — rien d'inventé. Granularité TYPOLOGIE (external_id = « invia-N.5 », stable). Les phases « À venir » ne créent pas d'annonce distincte. | |
| 10 | + | |
| 11 | +- **Site** : https://www.inviamirabel.com | |
| 12 | +- **Page des annonces** : https://www.inviamirabel.com/appartements/ | |
| 13 | +- **Secteurs couverts** : Mirabel (Saint-Janvier) | |
| 14 | +- **Module** : `louka/connectors/in_via.py` — classe `InViaConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.inviamirabel.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.inviamirabel.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Appartement 3½ — IN VIA Mirabel | | |
| 33 | +| `address` | Adresse civique | 100 % | 14385, rue Roger-Thomas | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Mirabel | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Saint-Janvier | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Déménagez dans un appartement complètement neuf à Mirabel. Vivez dans un espace de vie ne… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://www.inviamirabel.com/wp-content/uploads/2025/09/invia_mirabel_appar… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Comptoirs de quartz", "Air climatisé", "Stationnement intérieur inclus", "Espace de ran… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "storage": true, "parking": {"available": true, "type": "intérieur", "includ… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.inviamirabel.com/appartements/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:41 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync in_via` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='in_via' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/info_logement.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Info-Logement — connecteur `info_logement` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 56/64 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:12 — 56 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:54 — 56 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 64 au total, **56 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/inovario.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Inovario — connecteur `inovario` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 10/10 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Inovario (inovario.com) Promoteur-gestionnaire de Châteauguay — deux projets locatifs : rue St-Denis et Quartier du Centre Signature. WordPress/Elementor rendu serveur : le sitemap Yoast (/sitemap_index.xml → page-sitemap.xml) liste une page par modèle d'appartement (chateauguay-<projet>-<type>[-modele-…]). Pas de prix ni d'unités individuelles publiés. Granularité : modèle (typologie). | |
| 10 | + | |
| 11 | +- **Site** : https://inovario.com | |
| 12 | +- **Page des annonces** : https://inovario.com/appartement-a-louer/ | |
| 13 | +- **Secteurs couverts** : Châteauguay (rue St-Denis, Quartier du Centre Signature) | |
| 14 | +- **Module** : `louka/connectors/inovario.py` — classe `InovarioConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : sitemap XML + pages HTML | |
| 19 | +- **Endpoint de base** : https://inovario.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://inovario.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 10 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Châteauguay Quartier du Centre Signature – 3 1/2 | | |
| 33 | +| `address` | Adresse civique | 100 % | rue Principale, Châteauguay | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Châteauguay | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 10 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Appartement 3½ de style condo du projet Quartier du Centre Signature à Châteauguay : plan… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 15 photo(s) — https://inovario.com/wp-content/uploads/elementor/thumbs/103-150-rue-de-la-… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Châteauguay Quartier du Centre Signature – 3 1/2", "Planchers et balcons en béton; bien… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "elevator": true, "balcony": true, "laundry": true, "storage": true, "parkin… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://inovario.com/chateauguay-quartier-du-centre-signature-3-1-2/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:41 — 10 trouvées, +10 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 10 au total, **10 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync inovario` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='inovario' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/inspire_laval.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Groupe Inspire — connecteur `inspire_laval` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laval · Backend : direct · Annonces actives : 22/22 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Groupe Inspire (groupeinspire.ca) — gestionnaire (siège à Terrebonne) d'immeubles résidentiels à Laval (2525 Havre-des-Îles), Montréal (Randall, Trent, Bois-de-Boulogne, Hurteau, LaSalle…). WordPress custom rendu serveur : la page /espaces_disponibles/ affiche des cartes div.location (nom, secteur Résidentiel/Commercial/Industriel, typologies « 3 ½, 4 ½ et 5 ½ », « à partir de … $ », points forts). La page détail /locations/<slug>/ fournit l'adresse civique complète et les photos (via cache detail()). Seules les cartes RÉSIDENTIELLES sont retenues (commercial/industriel exclus). Granularité TYPOLOGIE par immeuble ; le prix « à partir de » n'est associé qu'à la plus petite typologie (jamais de prix inventé). | |
| 10 | + | |
| 11 | +- **Site** : https://groupeinspire.ca | |
| 12 | +- **Page des annonces** : https://groupeinspire.ca/espaces_disponibles/ | |
| 13 | +- **Secteurs couverts** : Laval (2525 Havre-des-Îles), Montréal (Randall, Wilderton, Madison, Ridgewood, Hurteau, Bois-de-Boulogne, LaSalle), Côte Saint-Luc (5555 Trent) | |
| 14 | +- **Module** : `louka/connectors/inspire_laval.py` — classe `InspireLavalConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://groupeinspire.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://groupeinspire.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 22 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 2525 Havre des Îles — 3½ | | |
| 33 | +| `address` | Adresse civique | 100 % | 2525 Avenue du Havre des Îles | | |
| 34 | +| `city` | Ville (normalisée) | 91 % | Laval | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 41 % | 1 700 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 27 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://groupeinspire.ca/wp-content/uploads/2026/04/20250328-DSC00221-HDR.j… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Piscine extérieure et intérieure", "Terrains de tennis", "Espace sauna", "Débarcadère p… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"pool": true, "price_from": true, "building": "2525 Havre des Îles"} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://groupeinspire.ca/locations/2525-havre-des-iles/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:42 — 22 trouvées, +22 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 22 au total, **22 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 41 % · photos 100 % · description 27 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync inspire_laval` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='inspire_laval' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/interrent.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # InterRent REIT (CLV Group) — connecteur `interrent` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 194/215 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 189/215 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur InterRent REIT (irent.com) Site Next.js (app router) : la page « com | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 194 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 189 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:12 — 194 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:54 — 189 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 215 au total, **194 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 215 au total, **189 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/iparc.md
+80 −0
@@ -0,0 +1,80 @@ | ||
| 1 | +# iParc — connecteur `iparc` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 16/16 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur iParc (iparc.ca) — logements à louer à Montréal. WordPress + plugin Estatik (type « property » non exposé au REST) : on parcourt les pages de la catégorie /property-category/a-louer/ (+ /page/N/) dont les cartes .es-listing portent data-post-id (external_id stable) et le lien /property/<slug>/. La fiche fournit les champs Estatik (« Taille : 4 1/2 », Chambres, Salle de bain), le prix (.es-price), les équipements/caractéristiques, les coordonnées GPS (data-latitude/ longitude), la galerie (wp-content/uploads, miniatures -WxH retirées) et une description bilingue avec l'adresse (📍 …) et la disponibilité. Fiches via le cache détail (clé = hash du texte de la carte). | |
| 10 | + | |
| 11 | +- **Site** : https://iparc.ca | |
| 12 | +- **Page des annonces** : https://iparc.ca/property-category/a-louer/ | |
| 13 | +- **Secteurs couverts** : Montréal (Hochelaga-Maisonneuve, Berri/Quartier latin, Rosemont, Pointe-aux-Trembles) | |
| 14 | +- **Module** : `louka/connectors/iparc.py` — classe `IparcConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://iparc.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://iparc.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 16 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Studio meublé lumineux à louer sur Montréal – Quartier Berri | | |
| 33 | +| `address` | Adresse civique | 75 % | 5187 rue Berri | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 75 % | Berri | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 950 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 75 % | — | | |
| 43 | +| `description` | Description | 100 % | 🇫🇷 /🇺🇸 🏡 Studio à louer – 5187 rue Berri , Appt 16, Montréal – 950$/mois – Disponible 1er… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 7 photo(s) — https://iparc.ca/wp-content/uploads/2026/08/IMG_0154.webp | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Charges incluses Meublé", "Chauffage Eau chaude incluse Electricité Micro-onde Plaque d… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true, "internet": true… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://iparc.ca/property/5187-16-rue-berri-studio-meuble/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:43 — 16 trouvées, +16 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | +- **Caps / budgets du module** : `_MAX_PAGES` = 10 | |
| 56 | + | |
| 57 | +## Volumétrie & complétude | |
| 58 | + | |
| 59 | +- **Annonces en BD** : 16 au total, **16 actives** | |
| 60 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 61 | +- **Complétude clé (actives)** : GPS 75 % · prix 100 % · photos 100 % · description 100 % | |
| 62 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 63 | + | |
| 64 | +## Erreurs connues & dépannage | |
| 65 | + | |
| 66 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 67 | + | |
| 68 | +Rejouer la source seule : `python3 run.py sync iparc` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='iparc' ORDER BY ts DESC LIMIT 5;`). | |
| 69 | + | |
| 70 | +## Licence, attribution & conditions | |
| 71 | + | |
| 72 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 73 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 74 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 75 | +- Retrait sur demande : contact@spboucher.ai. | |
| 76 | + | |
| 77 | +## Historique | |
| 78 | + | |
| 79 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 80 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/jardins_anna.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Les Jardins d'Anna — connecteur `jardins_anna` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 4/4 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Les Jardins d'Anna (lesjardinsdanna.com) Projet domiciliaire de Nicolet (Centre-du-Québec), à 15 minutes de Trois-Rivières — logements 4½ et 5½ de style condo. WordPress rendu serveur : la page /location/ présente les typologies en sections <h3> (« Logements 4 ½ », « … avec verrière », « … avec verrière et garage », « Logements 5 ½ ») suivies de « À partir de 1 250$ par mois, nos … incluent : » + liste d'inclusions. Granularité = typologie (le site ne publie pas d'inventaire par unité). external_id = typologie en slug. | |
| 10 | + | |
| 11 | +- **Site** : https://lesjardinsdanna.com | |
| 12 | +- **Page des annonces** : https://lesjardinsdanna.com/location/ | |
| 13 | +- **Secteurs couverts** : Nicolet | |
| 14 | +- **Module** : `louka/connectors/jardins_anna.py` — classe `JardinsAnnaConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://lesjardinsdanna.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://lesjardinsdanna.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Logements 4 ½ — Les Jardins d'Anna | | |
| 33 | +| `address` | Adresse civique | 100 % | Les Jardins d'Anna, Nicolet | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Nicolet | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 250 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Logements 4 ½ de style condo aux Jardins d'Anna, Nicolet (à 15 minutes de Trois-Rivières). | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 7 photo(s) — https://lesjardinsdanna.com/wp-content/uploads/2016/10/vue-cuisine-condo-a-v… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Air conditionné", "Échangeur d’air", "2 places de stationnement", "Remise extérieure"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"parking": {"available": true, "type": "extérieur"}, "price_from": true} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://lesjardinsdanna.com/location/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:43 — 4 trouvées, +4 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 4 au total, **4 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync jardins_anna` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='jardins_anna' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/jardins_nd.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Les Jardins Notre Dame — connecteur `jardins_nd` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 4/4 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Les Jardins Notre Dame (logement-victoriaville.jardinsnotredame.com) — Victoriaville, 465, rue Notre-Dame Ouest. Complexe locatif neuf tout inclus (studios meublés à 5½). Landing Unbounce page unique (~580 Ko) rendue serveur : pas de sélecteurs sémantiques (divs lp-pom-*) — on parse le TEXTE en ordre du document : une ligne typologie (« Studios », « 3 1/2 », « 4 1/2 », « 5 1/2 ») suivie de lignes d'inclusions puis d'une fourchette de prix (« De 1 550 $ à 1 625 $ /mois »). Granularité = typologie (pas d'inventaire par unité publié). external_id = typologie en slug. | |
| 10 | + | |
| 11 | +- **Site** : https://logement-victoriaville.jardinsnotredame.com | |
| 12 | +- **Page des annonces** : https://logement-victoriaville.jardinsnotredame.com/ | |
| 13 | +- **Secteurs couverts** : Victoriaville (465, rue Notre-Dame Ouest) | |
| 14 | +- **Module** : `louka/connectors/jardins_nd.py` — classe `JardinsNotreDameConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://logement-victoriaville.jardinsnotredame.com/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://logement-victoriaville.jardinsnotredame.com/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Studio — Les Jardins Notre Dame | | |
| 33 | +| `address` | Adresse civique | 100 % | 465, rue Notre-Dame Ouest, Victoriaville | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Victoriaville | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 290 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Studio tout inclus aux Jardins Notre Dame, complexe locatif neuf de Victoriaville (piscin… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://d9hhrg4mnvzow.cloudfront.net/logement-victoriaville.jardinsnotredam… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Meublés, chauffés, éclairés", "Wi-Fi + Stationnement inclus"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"internet": true}, "pool": true, "furnished": true, "parking": {"availabl… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://logement-victoriaville.jardinsnotredame.com/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:43 — 4 trouvées, +4 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 4 au total, **4 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync jardins_nd` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='jardins_nd' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/jcl.md
+80 −0
@@ -0,0 +1,80 @@ | ||
| 1 | +# Petites annonces Groupe JCL — connecteur `jcl` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 42/42 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur petites annonces Groupe JCL (annonces.groupejcl.com) — journal local des Basses-Laurentides / Rive-Nord (Sainte-Thérèse, Saint-Jérôme, Saint-Eustache et environs). WordPress + plugin « Classified Listing » (rtcl) rendu serveur : on ne moissonne QUE la catégorie immobilier/logements-a-louer (cartes .rtcl-listing-item : titre, prix, localité, lien). La page détail (.rtin-des / .rtin-location) fournit description, adresse et photos. Granularité : annonce (unité). ⚠️ Portail de petites annonces de particuliers : certaines annonces restent affichées longtemps — Lou-Ka les reprend telles qu'affichées par la source. | |
| 10 | + | |
| 11 | +- **Site** : https://annonces.groupejcl.com | |
| 12 | +- **Page des annonces** : https://annonces.groupejcl.com/categories/immobilier/logements-a-louer/ | |
| 13 | +- **Secteurs couverts** : Basses-Laurentides / Rive-Nord (Sainte-Thérèse, Saint-Jérôme, Saint-Eustache et environs) | |
| 14 | +- **Module** : `louka/connectors/jcl.py` — classe `JclConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://annonces.groupejcl.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://annonces.groupejcl.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 42 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Superbe 4 1/2 demi sous-sol à louer 1000$ mois Saintes Annes des plaines | | |
| 33 | +| `address` | Adresse civique | 60 % | Sainte Annes des plaines | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Sainte-Thérèse | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 90 % | 950 $ | | |
| 38 | +| `bedrooms` | Chambres | 21 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 10 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 5 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 98 % | Grand logement propre, moderne et lumineux situé dans un secteur paisible et recherché. P… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 3 photo(s) — https://annonces.groupejcl.com/wp-content/uploads/classified-listing/2026/06… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 93 % | {"inclusions": {"heating": false, "electricity": false}, "appliances": {"washer_dryer_hoo… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://annonces.groupejcl.com/listing/superbe-4-1-2-demi-sous-sol-a-louer-1000-mois-sain… | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 42 trouvées, +42 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | +- **Caps / budgets du module** : `MAX_PAGES` = 10 | |
| 56 | + | |
| 57 | +## Volumétrie & complétude | |
| 58 | + | |
| 59 | +- **Annonces en BD** : 42 au total, **42 actives** | |
| 60 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 61 | +- **Complétude clé (actives)** : GPS 0 % · prix 90 % · photos 100 % · description 98 % | |
| 62 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 63 | + | |
| 64 | +## Erreurs connues & dépannage | |
| 65 | + | |
| 66 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 67 | + | |
| 68 | +Rejouer la source seule : `python3 run.py sync jcl` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='jcl' ORDER BY ts DESC LIMIT 5;`). | |
| 69 | + | |
| 70 | +## Licence, attribution & conditions | |
| 71 | + | |
| 72 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 73 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 74 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 75 | +- Retrait sur demande : contact@spboucher.ai. | |
| 76 | + | |
| 77 | +## Historique | |
| 78 | + | |
| 79 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 80 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/junic.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Junic — Agora Village Urbain — connecteur `junic` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 27/27 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Junic (junic.ca — promoteur de Gatineau : projets Agora Village Urbain, VILL, Central…) Seul l'AGORA publie un inventaire exploitable : la page residentiel.agora-plateau.com/appartements/ (WordPress/Jupiter) est rendue SERVEUR avec une carte par unité disponible (div.unit) regroupée par typologie (h2 : Micro, Loft, 1 chambre, 1 chambre + bureau…) : numéro « 20 - #320 » (immeuble 20 ou 35, rue de Hambourg, secteur Le Plateau à Gatineau), disponibilité (date ou « MAINTENANT DISPONIBLE »), type, dimension pi², LOYER de base, forfait tout-inclus obligatoire (505 $/mois : meubles en option non — chauffage/clim, internet…), mensualité totale, visite virtuelle et plan de l'unité. Le prix publié est le LOYER de base ; le forfait et la mensualité totale sont reportés en description/détails. VILL (villappartements.com) n'a qu'un portail résident Building Stack avec login — aucune annonce publique, donc hors connecteur. | |
| 10 | + | |
| 11 | +- **Site** : https://junic.ca | |
| 12 | +- **Page des annonces** : https://residentiel.agora-plateau.com/appartements/ | |
| 13 | +- **Secteurs couverts** : Gatineau (Le Plateau — 20 et 35 rue de Hambourg) ; VILL (villappartements.com) : portail résident avec login seulement, sans annonces publiques | |
| 14 | +- **Module** : `louka/connectors/junic.py` — classe `JunicConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://residentiel.agora-plateau.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://residentiel.agora-plateau.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 27 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Agora Village Urbain (20 Hambourg) — Unité 320 | | |
| 33 | +| `address` | Adresse civique | 100 % | 20 Rue de Hambourg, Gatineau | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Gatineau | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Le Plateau | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 965 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 426 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-12-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Type MICRO — 426 pi² — Loyer de base 965 $ + forfait tout-inclus 505 $/mois — mensualité … | | |
| 44 | +| `images` | Photos (JSON) | 33 % | 2 photo(s) — https://residentiel.agora-plateau.com/wp-content/uploads/2021/10/capture-dec… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"building": "20 Rue de Hambourg", "bedrooms": 0, "virtual_tour": "https://www.tourbuzz.n… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://residentiel.agora-plateau.com/appartements/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 27 trouvées, +27 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 27 au total, **27 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 33 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync junic` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='junic' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/jutras.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Habitations Jutras — connecteur `jutras` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 35/35 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:12 — 35 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:55 — 35 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 35 au total, **35 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 60 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/kangalou.md
+12 −10
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Kangalou — connecteur `kangalou` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 7776/8415 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 7781/8559 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -21,11 +21,11 @@ Kangalou (kangalou.com) — portail locatif québécois géré (Solutions Kangal | ||
| 21 | 21 | - **Authentification** : aucune — contenu public |
| 22 | 22 | - **Pagination** : page de liste unique (pas de pagination) |
| 23 | 23 | - **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) |
| 24 | −- **Politesse** : 0.5 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 24 | +- **Politesse** : 0.5 s entre requêtes, timeout 90 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 7776 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 7781 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -36,7 +36,7 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 6½+ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 2 250 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | −| `bathrooms` | Salles de bain | 97 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 98 % | 1 | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 60 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.4734 | |
@@ -49,20 +49,22 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:14 — 7752 trouvées, +2 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:57 — 7771 trouvées, +11 / ~2 / -1 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 8415 au total, **7776 actives** | |
| 59 | −- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 8559 au total, **7781 actives** | |
| 59 | +- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 99 % · description 78 % |
| 61 | −- **Runs journalisés (60 derniers)** : 40, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −Aucune erreur dans les 60 derniers runs journalisés. | |
| 65 | +| Date | Message (sync_log) | | |
| 66 | +|---|---| | |
| 67 | +| 2026-08-24 17:21 | HTTPSConnectionPool(host='www.kangalou.com', port=443): Read timed out. (read timeout=30) | | |
| 66 | 68 | |
| 67 | 69 | Rejouer la source seule : `python3 run.py sync kangalou` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='kangalou' ORDER BY ts DESC LIMIT 5;`). |
| 68 | 70 | |
added
docs/connecteurs/kare.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Kare Gestion Immobilière — connecteur `kare` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 52/52 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Kare Gestion Immobilière (gestionkare.com) Gestionnaire de Sherbrooke (Estrie) — ~54 unités : Sherbrooke (Les Nations, Fleurimont, Rock Forest, Lennoxville), Waterloo, Windsor, Richmond, Magog + quelques hors Estrie (Drummondville, Châteauguay). SPA Angular avec SSR : la page /units/ embarque l'état hydraté dans <script id="ng-state"> — on y lit la réponse JSON complète de /api/units (id, title, address, city, sublocality, price, availability ISO, amenities booléens, images CDN, lat/lng, promotion). Repli : GET direct sur l'API (kare-test-dhpzr.ondigitalocean.app — hôte lu dans le ng-state quand possible). URL détail = /units/<id>--<ville>-<type> (même slugification que le front). external_id = id (UID Kare) — stable. | |
| 10 | + | |
| 11 | +- **Site** : https://www.gestionkare.com | |
| 12 | +- **Page des annonces** : https://www.gestionkare.com/units/ | |
| 13 | +- **Secteurs couverts** : Sherbrooke (Les Nations, Fleurimont, Rock Forest, Lennoxville), Waterloo, Windsor, Richmond, Magog | |
| 14 | +- **Module** : `louka/connectors/kare.py` — classe `KareConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API JSON interne du site | |
| 19 | +- **Endpoint de base** : https://www.gestionkare.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.gestionkare.com · https://kare-test-dhpzr.ondigitalocean.app/api/units | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 52 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Studio 1 ½ à louer | | |
| 33 | +| `address` | Adresse civique | 100 % | 122 Rue de Carillon #4, Sherbrooke, QC J1J 2L2 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Sherbrooke | | |
| 35 | +| `sector` | Secteur / quartier | 83 % | Les Nations | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 88 % | 1½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 841 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 2 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 6 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-12-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.400768 | | |
| 43 | +| `description` | Description | 100 % | Découvrez ce charmant 1 ½ situé au 122 rue Carillon #4, dans un quartier résidentiel pais… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 6 photo(s) — https://cdn.gestionkare.com/A3557-8FDD-DC125-1F335F66-36/4f016649-b1bd-4208-… | | |
| 45 | +| `amenities` | Commodités (JSON) | 98 % | ["Internet", "Eau-chaude", "Cuisinière", "Réfrigérateur"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true, "internet": true}, "appliances": {"fridge": true, "sto… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.gestionkare.com/units/A3557-8FDD-DC125-1F335F66-36--sherbrooke-studio | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 52 trouvées, +52 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 52 au total, **52 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync kare` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='kare' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/kass.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # KASS Property Management — connecteur `kass` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:14 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:57 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/katasa.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Katasa — connecteur `katasa` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:15 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 22:57 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/kijiji.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Kijiji Québec (location) — connecteur `kijiji` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 5327/9432 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 5372/10365 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ Kijiji (kijiji.ca) — petites annonces de LOCATION UNIQUEMENT les catégories l | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 5327 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 5372 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -38,7 +38,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 78 % | 1 | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 65 % | — | |
| 41 | −| `availability_date` | Date de disponibilité | 68 % | 2026-08-01 | | |
| 41 | +| `availability_date` | Date de disponibilité | 69 % | 2026-08-01 | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.55274 | |
| 43 | 43 | | `description` | Description | 100 % | <p data-start="191" data-end="358"><strong data-start="191" data-end="260">PROMOTION 2 MO… | |
| 44 | 44 | | `images` | Photos (JSON) | 99 % | 9 photo(s) — https://media.kijiji.ca/api/v1/ca-prod-dealer-ads/images/c7/c77f45e6-d45a-41… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:25 — 5252 trouvées, +53 / ~18 / -42 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:09 — 5250 trouvées, +119 / ~21 / -44 | |
| 53 | 53 | - **Throttling** : 1.2 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 9432 au total, **5327 actives** | |
| 59 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 10365 au total, **5372 actives** | |
| 59 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 97 % · photos 99 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/l_laval.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Le L Laval — connecteur `l_laval` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laval · Backend : direct · Annonces actives : 4/4 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le L Laval (l-laval.com) Projet locatif unique au 1585, boulevard des Laurentides, Laval (104 unités, studio à 5½). WordPress (thème maison) rendu serveur : la page /plans-condos-locatifs-laval/ contient un sélecteur d'étages avec UNE ligne <tr id="rowUnitNNN"> par unité — la classe « not-available » marque les unités louées, et l'attribut onclick=loadPage(unité, prix, pi², étage, état, typologie, sdb, salle d'eau, den, modulable) porte toutes les données. Granularité : unité. Certaines unités libres affichent 0$ (prix sur demande). | |
| 10 | + | |
| 11 | +- **Site** : https://l-laval.com | |
| 12 | +- **Page des annonces** : https://l-laval.com/plans-condos-locatifs-laval/ | |
| 13 | +- **Secteurs couverts** : Laval (1585, boulevard des Laurentides) | |
| 14 | +- **Module** : `louka/connectors/l_laval.py` — classe `LLavalConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://l-laval.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://l-laval.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Le L Laval — Unité 401 | | |
| 33 | +| `address` | Adresse civique | 100 % | 1585, boulevard des Laurentides, Laval | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Laval | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 50 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1101 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité 401, 4e étage — 01 salle(s) de bain | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://l-laval.com/wp-content/uploads/2021/12/banniere-projet-Llaval.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 0 % | {} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://l-laval.com/plans-condos-locatifs-laval/#unite-401 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 4 trouvées, +4 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 4 au total, **4 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 50 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync l_laval` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='l_laval' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/la_cour.md
+5 −7
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # La Cour Appartements — connecteur `la_cour` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 19/21 |
| 6 | 6 | |
@@ -49,22 +49,20 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 17:45 — 19 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:38 — 19 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 21 au total, **19 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-18 15:52 | database is locked | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 68 | 66 | |
| 69 | 67 | Rejouer la source seule : `python3 run.py sync la_cour` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='la_cour' ORDER BY ts DESC LIMIT 5;`). |
| 70 | 68 | |
modified
docs/connecteurs/laberge.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Laberge — connecteur `laberge` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 57/62 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:25 — 57 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:09 — 57 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 62 au total, **57 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 93 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/labonte.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Labonté — connecteur `labonte` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 18/18 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:25 — 18 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:09 — 18 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 18 au total, **18 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/lac_jerome.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Habitations du Lac Jérôme (Le Seize, La Quaza, Le Hexa) — connecteur `lac_jerome` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 15/15 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Habitations du Lac Jérôme (habitationsdulacjerome.com — 3 projets locatifs neufs à Saint-Jérôme : Le Seize (condos), La Quaza (maisons et bachelors), Le Hexa (condos)). Le site WordPress affiche ses unités via le widget Planpoint : on interroge l'API JSON publique (app.planpoint.io/api/groups/find, 1 requête/sync, voir _planpoint.py). Granularité UNITÉ, AVEC prix mensuel publié (1 900 $ à 2 800 $), pi², plans par unité, inclusions françaises et date de livraison. Les projets Planpoint n'ont ni adresse ni lat/lng ; chez La Quaza et Le Hexa le NOM de l'unité est une adresse civique (« 113 Réal-Piché ») qu'on récupère comme adresse. Seules les unités « Available » sont retenues. | |
| 10 | + | |
| 11 | +- **Site** : https://habitationsdulacjerome.com | |
| 12 | +- **Page des annonces** : https://habitationsdulacjerome.com/ | |
| 13 | +- **Secteurs couverts** : Saint-Jérôme | |
| 14 | +- **Module** : `louka/connectors/lac_jerome.py` — classe `LacJeromeConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://habitationsdulacjerome.com/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://habitationsdulacjerome.com/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 15 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Le Seize – Condos — Unité D-002 | | |
| 33 | +| `address` | Adresse civique | 20 % | — | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Jérôme | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 150 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 3 | | |
| 39 | +| `bathrooms` | Salles de bain | 20 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1085 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-07-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité D-002 — Le Seize – Condos, Saint-Jérôme. Modèle a2, étage semi sous-sol, 1085 pi². … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 2 photo(s) — https://storage.googleapis.com/planpoint-bucket/Condo-locatif-Lac-Jerome_Pla… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["1 place de parking", "5 appareils", "Fixations de lumière", "Stockage disponible $$"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"parking": {"available": true, "included": false}, "floor": "Semi Sous-Sol", "model": "A… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://habitationsdulacjerome.com/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 15 trouvées, +15 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 15 au total, **15 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync lac_jerome` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='lac_jerome' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/lachance.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Les Entreprises Lachance — connecteur `lachance` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 75/98 | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 72/98 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,18 +25,18 @@ connecteur Les Entreprises Lachance (lachance.qc.ca) Constructeur-gestionnaire d | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 75 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 72 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 1331, rue Quatre-Saisons, Sherbrooke (Fleurimont) | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 1331, rue Quatre-Saisons, Sherbrooke (Fleurimont) | |
| 34 | 34 | | `city` | Ville (normalisée) | 89 % | Sherbrooke | |
| 35 | −| `sector` | Secteur / quartier | 73 % | Fleurimont | | |
| 35 | +| `sector` | Secteur / quartier | 72 % | Fleurimont | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 350 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | −| `bathrooms` | Salles de bain | 21 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 22 % | — | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 650 | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2026-12-18 | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 93 % | 45.4228717 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:26 — 75 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:11 — 72 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 98 au total, **75 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 98 au total, **72 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 93 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/lacite.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # La Cité Gatineau (Adam Real Estate) — connecteur `lacite` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 6/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:28 — 6 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:13 — 6 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 10.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/lafrance_mathieu.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Lafrance & Mathieu — connecteur `lafrance_mathieu` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 37/41 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 38/42 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Lafrance & Mathieu (lafrance-mathieu.com — Québec, Lévis, Val-Bé | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 37 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 38 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:29 — 37 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:13 — 38 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 41 au total, **37 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 42 au total, **38 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/lak_nature.md
+78 −0
@@ -0,0 +1,78 @@ | ||
| 1 | +# LAK Appartements Nature (Acropole) — connecteur `lak_nature` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 0/0 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur LAK Appartements Nature (lakappartementsnature.ca — 1004, boul. du Lac, Lac-Beauport, près de la station Le Relais ; 62 unités locatives, gestion Acropole). WordPress + Elementor avec sélecteur de plans « do-selecteur-plans » : chaque unité est un <polygon> SVG rendu serveur avec sa classe d'état (disponible/indisponible) et ses data-* (data-numero=id interne, data-etage, data-type, data-prix, data-promotion). On n'ingère que les unités DISPONIBLES ; la fiche JSON /wp-json/do-selecteur-plans/v1/unite ?id=<numero> (via cache détail) confirme l'état et fournit le vrai numéro d'unité, superficies, plan PDF et galerie. | |
| 10 | + | |
| 11 | +- **Site** : https://lakappartementsnature.ca | |
| 12 | +- **Page des annonces** : https://lakappartementsnature.ca/ | |
| 13 | +- **Secteurs couverts** : Lac-Beauport — 1004, boul. du Lac, 62 unités près de la station Le Relais ; sélecteur de plans SVG + API wp-json (inventaire complet loué au 2026-08-25) | |
| 14 | +- **Module** : `louka/connectors/lak_nature.py` — classe `LakNatureConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API REST WordPress (wp-json) | |
| 19 | +- **Endpoint de base** : https://lakappartementsnature.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://lakappartementsnature.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 0 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | — | — | | |
| 33 | +| `address` | Adresse civique | — | — | | |
| 34 | +| `city` | Ville (normalisée) | — | — | | |
| 35 | +| `sector` | Secteur / quartier | — | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | — | — | | |
| 37 | +| `price` | Loyer mensuel ($) | — | — | | |
| 38 | +| `bedrooms` | Chambres | — | — | | |
| 39 | +| `bathrooms` | Salles de bain | — | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | — | — | | |
| 41 | +| `availability_date` | Date de disponibilité | — | — | | |
| 42 | +| `lat` | GPS (lat/lng) | — | — | | |
| 43 | +| `description` | Description | — | — | | |
| 44 | +| `images` | Photos (JSON) | — | — | | |
| 45 | +| `amenities` | Commodités (JSON) | — | — | | |
| 46 | +| `details` | Détails additionnels (JSON) | — | — | | |
| 47 | +| `url` | URL de l'annonce source | — | — | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 0 au total, **0 actives** | |
| 59 | +- **Première ingestion** : — · **Dernière observation** : — | |
| 60 | +- **Complétude clé (actives)** : GPS — · prix — · photos — · description — | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync lak_nature` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='lak_nature' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/lakle.md
+5 −5
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # La Klé — connecteur `lakle` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 43/49 |
| 6 | 6 | |
@@ -38,7 +38,7 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 5 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 682 | |
| 41 | −| `availability_date` | Date de disponibilité | 100 % | now | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-08-25 | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 46.798431 | |
| 43 | 43 | | `description` | Description | 100 % | Étage 1 \| 1 chambre(s) \| Superficie 682 pi² \| Balcon 161 pi² \| Style Classique \| Pla… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 7 photo(s) — https://lakle.ca/wp-content/uploads/2025/02/LaKle4-D3.png | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:29 — 43 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:14 — 43 trouvées, +0 / ~23 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 49 au total, **43 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 53 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/lambert.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Société Immobilière Lambert — connecteur `lambert` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:29 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:14 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 50 % · photos 100 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/lameer.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Gestion Lameer — connecteur `lameer` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 15/15 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Gestion Lameer (lameer.ca, 2300+ unités) Site Webflow rendu serveur : /properties liste les immeubles (cartes a.properties_item-link), chaque fiche /properties/<slug> expose un tableau « overview » (Neighbourhood, Postal Code, Bedrooms « 2.5 to 4.5 », Starting Price, Appliances/Laundry/Heating/Hydro/Parking) + description et galerie (cdn.prod.website-files.com). Immeubles résidentiels seulement (Building Type = Residential). Une annonce par immeuble, prix « à partir de » ; external_id = slug de la fiche. Fiches via le cache détail (clé = hash du texte de la carte). | |
| 10 | + | |
| 11 | +- **Site** : https://www.lameer.ca | |
| 12 | +- **Page des annonces** : https://www.lameer.ca/properties | |
| 13 | +- **Secteurs couverts** : Montréal (centre-ville, CDN, Lachine, Verdun), Côte Saint-Luc, Mont-Royal, Pointe-Claire | |
| 14 | +- **Module** : `louka/connectors/lameer.py` — classe `LameerConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.lameer.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.lameer.ca · https://cdn.prod.website-files.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 15 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3551 Boulevard Gouin Est | | |
| 33 | +| `address` | Adresse civique | 100 % | 3551 Boulevard Gouin Est, Montréal, QC H1H 0C3 | | |
| 34 | +| `city` | Ville (normalisée) | 87 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 20 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 660 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 67 % | Permettant l’accès à des sentiers piétonniers en bordure de la rivière et à des kilomètre… | | |
| 44 | +| `images` | Photos (JSON) | 80 % | 6 photo(s) — https://cdn.prod.website-files.com/632e000e190813401d79d849/65a015d151cfe4bf… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Unités de 3½ à 5½", "Électroménagers : incluse(s)", "Buanderie : dans l'unité", "Chauff… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true}, "appliances": {… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.lameer.ca/properties/3551-boulevard-gouin-est | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 15 trouvées, +15 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 15 au total, **15 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 80 % · description 67 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync lameer` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='lameer' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/laureat_richard.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Logements Lauréat Richard — connecteur `laureat_richard` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 23/23 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:29 — 23 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:14 — 23 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 23 au total, **23 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 1 en erreur |
| 62 | 62 | |
added
docs/connecteurs/lbm.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Groupe Rive-Nord / LBM Gestion Locative — connecteur `lbm` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 8/8 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Groupe Rive-Nord / LBM Gestion Locative (grouperivenord.ca — info@lbmgestionlocative.com). Condos locatifs neufs « tout inclus » sur le chemin d'Oka : Le 2922 et Le 3215 à Sainte-Marthe-sur-le-Lac, Le 3533 (page /le-3537/) à Saint-Joseph-du-Lac. WordPress/Divi rendu serveur : les pages projet (liens « le-* » du menu) sont des vitrines ; certaines publient des cartes « Modèle N » (type, « À partir de X$/m », superficie, chambres, inclusions), les autres seulement les typologies offertes (« 4 1/2 et 5 1/2 », 1100 pi²). Granularité MODÈLE/TYPOLOGIE par immeuble, prix seulement où publié. | |
| 10 | + | |
| 11 | +- **Site** : https://grouperivenord.ca | |
| 12 | +- **Page des annonces** : https://grouperivenord.ca/ | |
| 13 | +- **Secteurs couverts** : Sainte-Marthe-sur-le-Lac (Le 2922, Le 3215), Saint-Joseph-du-Lac (Le 3533) — condos tout inclus, chemin d'Oka | |
| 14 | +- **Module** : `louka/connectors/lbm.py` — classe `LbmConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://grouperivenord.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://grouperivenord.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 8 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ (modèle 1) — 3533 chemin d'Oka, Saint-Joseph-Du-Lac | | |
| 33 | +| `address` | Adresse civique | 100 % | 3533 chemin d'Oka | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Joseph-Du-Lac | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 50 % | 1 370 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 684 | | |
| 41 | +| `availability_date` | Date de disponibilité | 50 % | 2026-11-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Condo locatif neuf en formule tout inclus au 3533 chemin d'Oka, Saint-Joseph-Du-Lac (Grou… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 15 photo(s) — https://grouperivenord.ca/wp-content/uploads/2025/10/Version-en-cours-e1761… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Stationnement inclus", "Thermopompe et climatisation incluses", "Comptoirs en quartz (c… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 50 % | {"inclusions": {"internet": true}, "ac": true, "balcony": true, "parking": {"available": … | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://grouperivenord.ca/le-3537/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 8 trouvées, +8 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 8 au total, **8 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 50 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync lbm` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='lbm' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/le_730.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Le 730 Notre-Dame (condos locatifs, marina) — connecteur `le_730` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le 730 Notre-Dame (730.ca — 186 condos locatifs luxueux, marina et club privé au 730, rue Notre-Dame à Repentigny, au bord du Saint-Laurent). WordPress/Elementor une-page rendu SERVEUR : l'accueil publie les prix « à partir de » par typologie (3½/4½), l'occupation (« Occupation immédiate » pour les phases I-II) et un plan PDF par variante d'unité (« 3 1/2 – Unité 1 »). Granularité TYPOLOGIE (external_id = « le730-N.5 », stable) ; aucune liste d'unités individuelles publiée. Les phases III-IV (livraison 2027) ne créent pas d'annonce. | |
| 10 | + | |
| 11 | +- **Site** : https://730.ca | |
| 12 | +- **Page des annonces** : https://730.ca/ | |
| 13 | +- **Secteurs couverts** : Repentigny | |
| 14 | +- **Module** : `louka/connectors/le_730.py` — classe `Le730Connector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://730.ca/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://730.ca/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Condo 3½ — Le 730 Notre-Dame | | |
| 33 | +| `address` | Adresse civique | 100 % | 730, rue Notre-Dame | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Repentigny | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 67 % | 1 750 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Le 730 Notre-Dame : plus de 180 condos locatifs, une marina et un club privé sur les berg… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 20 photo(s) — https://730.ca/wp-content/uploads/2020/11/Vecto_Water.png | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Toit terrasse", "Jardin communautaire", "BBQ", "Piscine", "Gym", "Bornes pour voitures … | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"elevator": true, "balcony": true, "pool": true, "gym": true, "price_from": true, "floor… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://730.ca/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 67 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync le_730` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='le_730' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/le_baronet.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le Baronet — connecteur `le_baronet` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 4/6 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:30 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:14 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 6 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/le_fjord.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Le Fjord (condos locatifs tout inclus) — connecteur `le_fjord` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 68/68 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le Fjord (le-fjord.com) — condos locatifs tout inclus au 11, rue Fortier à Lévis (occupation printemps 2027). Le site WordPress/Elementor embarque le widget Livya (Graph Synergie) : la page plans app.livya.com/fr/fjord/projects/le-fjord/ plans/<entity> (Next.js) sérialise dans son flux RSC (self.__next_f.push) un tableau "units" complet — unitId, no, étage, pièces (5.5), chambres, sdb, PRIX mensuel, pi², adresse, lat/lng, availability AVAILABLE / RESERVED / NOT_AVAILABLE. Granularité : unité, avec prix. | |
| 10 | + | |
| 11 | +- **Site** : https://www.le-fjord.com | |
| 12 | +- **Page des annonces** : https://www.le-fjord.com/unites/ | |
| 13 | +- **Secteurs couverts** : Lévis (11, rue Fortier — occupation printemps 2027) | |
| 14 | +- **Module** : `louka/connectors/le_fjord.py` — classe `LeFjordConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.le-fjord.com/unites/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.le-fjord.com/unites/ · https://app.livya.com/fr/fjord/projects/le-fjord/plans/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 68 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Unité 908 — Le Fjord | | |
| 33 | +| `address` | Adresse civique | 100 % | 11, rue Fortier, Lévis | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Lévis | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 71 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 3 045 $ | | |
| 38 | +| `bedrooms` | Chambres | 71 % | 3 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1300 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.7935 | | |
| 43 | +| `description` | Description | 100 % | Unité 908 (5½, modèle D1), 9e étage — condos locatifs tout inclus avec vue sur le fleuve … | | |
| 44 | +| `images` | Photos (JSON) | 0 % | — | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Tout inclus", "5 électroménagers", "Internet haute vitesse", "Chauffage et climatisatio… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "hot_water": true, "internet": true}, "appliances": {"fr… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.le-fjord.com/unites/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 68 trouvées, +68 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 68 au total, **68 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 0 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync le_fjord` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='le_fjord' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/le_george.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Le George — connecteur `le_george` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 36/36 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le George (legeorge.ca) Tour locative au 1001, rue Lucien-L'Allier, centre-ville de Montréal (Ville-Marie), studio à 5½. Site JS lourd : le sélecteur d'unités est un iframe Planpoint — on interroge directement son API officielle (POST app.planpoint.io/api/projects/find, namespace « le-george ») qui retourne les 43 étages et ~730 unités. Seules les unités « Available » sont annoncées (les « Leased »/« Unavailable » sont exclues) : numéro, type (bedrooms « 1.5 » -> 1½, « Studio »), prix, pi², meublé, inclusions FR, galerie photos + plan de l'unité (PDF). | |
| 10 | + | |
| 11 | +- **Site** : https://legeorge.ca | |
| 12 | +- **Page des annonces** : https://legeorge.ca/choisir-mon-unite/ | |
| 13 | +- **Secteurs couverts** : Ville-Marie (1001, rue Lucien-L'Allier — centre-ville) | |
| 14 | +- **Module** : `louka/connectors/le_george.py` — classe `LeGeorgeConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API JSON interne du site | |
| 19 | +- **Endpoint de base** : https://app.planpoint.io/api/projects/find | |
| 20 | +- **URLs de départ (constantes du module)** : https://legeorge.ca · https://app.planpoint.io/api/projects/find | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 36 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Le George — Unité 204 (1½) | | |
| 33 | +| `address` | Adresse civique | 100 % | 1001, rue Lucien-L'Allier, Montréal, QC H3G 0G7 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Ville-Marie | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 1½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 450 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 356 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 21 photo(s) — https://storage.googleapis.com/planpoint-bucket/Le Georges - Vues d_ensembl… | | |
| 45 | +| `amenities` | Commodités (JSON) | 94 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"floor": "2", "floor_plan_pdf": "https://storage.googleapis.com/planpoint-bucket/LeGeorg… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://legeorge.ca/choisir-mon-unite/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 36 trouvées, +36 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 36 au total, **36 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync le_george` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='le_george' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/le_pilier.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Le Pilier Lévis — connecteur `le_pilier` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 1/1 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le Pilier (lepilierlevis.com) — condos locatifs neufs au 1275, rue J.-B.-Demers à Lévis (sections 3 et 6 étages). WordPress + plugin maison « themelio-real-estate » : la page /projet/ rend côté serveur un <table class="units-table"> (Unité, Étage, Superficie, Pièces, Prix, Disponibilité, lien /units/unite-NNN/), filtré par défaut sur les unités disponibles ; la page unité fournit le plan. Granularité : unité, avec prix. | |
| 10 | + | |
| 11 | +- **Site** : https://lepilierlevis.com | |
| 12 | +- **Page des annonces** : https://lepilierlevis.com/projet/ | |
| 13 | +- **Secteurs couverts** : Lévis (1275, rue J.-B.-Demers) | |
| 14 | +- **Module** : `louka/connectors/le_pilier.py` — classe `LePilierConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://lepilierlevis.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://lepilierlevis.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Unité 614 — Le Pilier Lévis | | |
| 33 | +| `address` | Adresse civique | 100 % | 1275, rue J.-B.-Demers, Lévis | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Lévis | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 625 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 986 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité 614 (4½), Étage 6 — Le Pilier, condos locatifs neufs au cœur de Lévis. | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://lepilierlevis.com/wp-content/uploads/2024/10/B-1.2-png.avif | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"floor": "Étage 6", "contact": {"phone": "418-836-7666"}} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://lepilierlevis.com/units/unite-614/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 1 trouvées, +1 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 1 au total, **1 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync le_pilier` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='le_pilier' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/le_st_georges.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le St-Georges — connecteur `le_st_georges` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:30 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:14 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/leclif.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le Clif — connecteur `leclif` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 10/10 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:30 — 10 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:14 — 10 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 10 au total, **10 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/ledomaine.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Habitations Le Domaine — connecteur `ledomaine` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:30 — 5 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:14 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/lelaureat.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Résidences Le Lauréat — connecteur `lelaureat` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:30 — 5 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:14 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/lemay_fleury.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Lemay Fleury Immobilier — connecteur `lemay_fleury` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 45/45 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Lemay Fleury Immobilier (lemayfleury.com) — Victoriaville, Kingsey Falls, Val-des-Sources (Centre-du-Québec). Appartements récents de type condo en formule TOUT INCLUS. Site Wix très lourd (fiches de ~6,4 Mo) MAIS rendu serveur : le HTML brut contient les cartes d'unités en <h3> « Unité 4 1/2 | à partir de 1725$ » suivies des inclusions « (électricité, internet et garage inclus) » — un simple GET suffit, pas de Scrapfly. On parcourt les fiches immeubles de Victoriaville (/monfette /rheault /anemone /gaby /marcoux) et les pages villes (/kingsey-falls /val-des-sources). ⚠️ Chaque page embarque AUSSI des blocs partagés « … TOUT INCLUS / COMPLET » identiques sur tout le site : seuls les h3 « | à partir de » (spécifiques à la page) sont retenus. La page /warwick est vide (aucune carte) — ignorée. Granularité = typologie par immeuble. external_id = <page>-<type>-<prix> (même convention que trylon : le prix disambiguë deux plans homonymes). | |
| 10 | + | |
| 11 | +- **Site** : https://www.lemayfleury.com | |
| 12 | +- **Page des annonces** : https://www.lemayfleury.com/monfette | |
| 13 | +- **Secteurs couverts** : Victoriaville, Kingsey Falls, Val-des-Sources | |
| 14 | +- **Module** : `louka/connectors/lemay_fleury.py` — classe `LemayFleuryConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.lemayfleury.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.lemayfleury.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 1.2 s entre requêtes, timeout 60 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 45 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Unité 4 1/2 — Lemay Fleury (rue Monfette) | | |
| 33 | +| `address` | Adresse civique | 100 % | 66, rue Monfette, Victoriaville | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Victoriaville | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 900 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité 4 1/2 en formule tout inclus chez Lemay Fleury Immobilier (66, rue Monfette, Victor… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://static.wixstatic.com/media/fc4c28_5db8c802894348c58e6f88d8b4cd46bf~… | | |
| 45 | +| `amenities` | Commodités (JSON) | 96 % | ["Électricité", "Internet"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"electricity": true, "internet": true}, "price_from": true} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.lemayfleury.com/monfette | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 45 trouvées, +45 / ~0 / -0 | |
| 53 | +- **Throttling** : 1.2 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 45 au total, **45 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync lemay_fleury` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='lemay_fleury' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 1.2 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/lequerre.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Habitations L'Équerre — connecteur `lequerre` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:30 — 1 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:14 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/lespac.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # LesPAC (location) — connecteur `lespac` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 2246/2891 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 2242/2974 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,13 +25,13 @@ LesPAC (lespac.com) — petites annonces du Québec UNIQUEMENT l'immobilier LOCA | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2246 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2242 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 4 1/2 St-Georges de Beauce, logement à louer, Disponible dès maintenant | |
| 33 | 33 | | `address` | Adresse civique | 84 % | 13063 24e Avenue | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Saint-Georges | | |
| 34 | +| `city` | Ville (normalisée) | 99 % | Saint-Georges | | |
| 35 | 35 | | `sector` | Secteur / quartier | 34 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 97 % | 4½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 97 % | 995 $ | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:33 — 2239 trouvées, +9 / ~1 / -5 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:17 — 2239 trouvées, +2 / ~2 / -4 | |
| 53 | 53 | - **Throttling** : 0.9 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 2891 au total, **2246 actives** | |
| 59 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 2974 au total, **2242 actives** | |
| 59 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 97 % · photos 93 % · description 99 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/leviu.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le VIU / VIU2 (Groupe Heafey) — connecteur `leviu` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:33 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:17 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/levivo.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# LeVivo Condos Locatifs — connecteur `levivo` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 14/14 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur LeVivo Condos Locatifs (levivo.ca) Quatre projets « tout inclus » en Montérégie : Longueuil 1, Longueuil 2, Greenfield Park et La Prairie. Squarespace rendu serveur : chaque page /fr/projets/<slug> affiche l'adresse (ligne au-dessus de « Adresse ») puis une « Description des unités » en triplets texte (« 4 ½ / À partir de / 2 100,00 $ »). Granularité : typologie par projet. | |
| 10 | + | |
| 11 | +- **Site** : https://www.levivo.ca | |
| 12 | +- **Page des annonces** : https://www.levivo.ca/fr/projets/longueuil-1 | |
| 13 | +- **Secteurs couverts** : Longueuil, Greenfield Park, La Prairie (4 projets) | |
| 14 | +- **Module** : `louka/connectors/levivo.py` — classe `LevivoConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.levivo.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.levivo.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 14 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 4½ — LeVivo Longueuil 1 | | |
| 33 | +| `address` | Adresse civique | 100 % | 55, rue de l'Église Longueuil | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Longueuil | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 100 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Condos locatifs « tout inclus » du projet LeVivo Longueuil 1 : électricité, chauffage, ea… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 4 photo(s) — https://images.squarespace-cdn.com/content/v1/690e2a9fcf934d51f72a657f/bad99… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true, "internet": true… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.levivo.ca/fr/projets/longueuil-1 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 14 trouvées, +14 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 14 au total, **14 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync levivo` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='levivo' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/lienard.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Liénard (condos locatifs Sainte-Foy) — connecteur `lienard` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 7/7 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Liénard (lienard.ca) — condos locatifs à Sainte-Foy (Québec), 2 phases : 950, rue Liénard (unités 1xx-6xx) et 1000, avenue Myrand (unités 1001-6006). WordPress rendu serveur ; les disponibilités vivent dans des plans d'étage interactifs Image Map Pro : chaque <script> embarque `var settings = {...}` (JSON) avec un spot par unité et un tooltip « Unité NNN » + statut (Disponible / Loué / Non disponible). Granularité : unité. Ni prix ni typologie publiés. | |
| 10 | + | |
| 11 | +- **Site** : https://lienard.ca | |
| 12 | +- **Page des annonces** : https://lienard.ca/plans-et-disponibilites/ | |
| 13 | +- **Secteurs couverts** : Québec (Sainte-Foy — 950, rue Liénard et 1000, avenue Myrand) | |
| 14 | +- **Module** : `louka/connectors/lienard.py` — classe `LienardConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://lienard.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://lienard.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 7 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Unité 119 — Liénard | | |
| 33 | +| `address` | Adresse civique | 100 % | 950, rue Liénard, Québec | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Québec | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Sainte-Foy | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 0 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité 119, 1e étage — condo locatif du projet Liénard à Sainte-Foy (chauffé, éclairé, cli… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://lienard.ca/wp-content/uploads/2021/04/1-etage-plan.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Chauffé", "Éclairé", "Climatisé", "Wi-Fi illimité", "Électroménagers inclus"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "internet": true}, "appliances": {"… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://lienard.ca/plans-et-disponibilites/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 7 trouvées, +7 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 7 au total, **7 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync lienard` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='lienard' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/linea.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Linéa (District 55) — connecteur `linea` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 11/11 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur LINÉA (linea.ca) — Trois-Rivières Complexe locatif neuf du District 55 (6900, boulevard des Athlètes, secteur Trois-Rivières-Ouest), 3 phases. WordPress/WPBakery rendu serveur : chaque page /unites/phase-N/ présente les typologies disponibles sous forme de colonnes « <type> » (Loft, 3 ½, 4 ½, 5 ½) suivies d'un bloc texte « De 1 008 pi² à 1 071 pi² / À partir de 1 750 $ / mois ». Granularité = typologie par phase (le site ne publie pas d'inventaire unité par unité). external_id = phaseN-<type> — stable tant que la typologie est offerte. | |
| 10 | + | |
| 11 | +- **Site** : https://linea.ca | |
| 12 | +- **Page des annonces** : https://linea.ca/unites/phase-3/ | |
| 13 | +- **Secteurs couverts** : Trois-Rivières (District 55, boulevard des Athlètes — phases 1 à 3) | |
| 14 | +- **Module** : `louka/connectors/linea.py` — classe `LineaConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://linea.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://linea.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 11 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — LINÉA Phase 1 | | |
| 33 | +| `address` | Adresse civique | 100 % | 6900, boulevard des Athlètes, Trois-Rivières | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Trois-Rivières | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Trois-Rivières-Ouest | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 450 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1008 | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Phase 1 du LINÉA (District 55) \| Superficies de 1 008 à 1 071 pi² | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://linea.ca/dist/uploads/2025/05/103-scaled.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://linea.ca/unites/phase-1/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 11 trouvées, +11 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 11 au total, **11 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync linea` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='linea' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/lobato.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Groupe Lobato — vallée du Richelieu — connecteur `lobato` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 41/41 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Groupe Lobato (groupelobato.com — promoteur/gestionnaire de la vallée du Richelieu : Beloeil, McMasterville, Mont-Saint-Hilaire, Saint-Jean-sur-Richelieu). WordPress (thème Vortex Solution) rendu serveur : chaque page /project/<slug>/ contient un tableau HTML des unités (Unit | Bed. | S.F | Price | Availability | Plan). Seules les lignes « Available » sont retenues ; les locaux « Commercial » du Carrefour Laurier sont exclus. Granularité = UNITÉ. external_id = <slug-projet>-<slug-unité> (slug du lien /unit/ si présent, sinon nom affiché slugifié). Colonne Bed. hétérogène : « 1 », « 2 », « 3 », « 1 + den », « 4 1/2 ». Photos servies via le proxy PhastPress (phast.php/<base64>.q.jpg) — on décode le base64 pour retrouver l'URL wp-content/uploads originale. | |
| 10 | + | |
| 11 | +- **Site** : https://groupelobato.com | |
| 12 | +- **Page des annonces** : https://groupelobato.com/projets/ | |
| 13 | +- **Secteurs couverts** : Beloeil (Faubourg du Richelieu), McMasterville (Carrefour Laurier, rue Constable), Mont-Saint-Hilaire (rue de la Sucrerie), Saint-Jean-sur-Richelieu (Havre du Richelieu) | |
| 14 | +- **Module** : `louka/connectors/lobato.py` — classe `LobatoConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://groupelobato.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://groupelobato.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 41 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Le Faubourg du Richelieu — unité FDR Phase 1 – Unité 405 | | |
| 33 | +| `address` | Adresse civique | 100 % | 2000, rue Richelieu, Beloeil | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Beloeil | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 2 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 023 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1053 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité FDR Phase 1 – Unité 405 au Le Faubourg du Richelieu (2000, rue Richelieu, Beloeil) … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://groupelobato.com/wp-content/uploads/2017/03/Faubourg-Front.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 98 % | {"plan_pdf": "https://groupelobato.com/wp-content/uploads/2017/06/LOCATIF-35-FDR-VENTE-20… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://groupelobato.com/project/beloeil-faubourg-du-richelieu/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:44 — 41 trouvées, +41 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 41 au total, **41 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync lobato` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='lobato' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/localys.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Gestion Localys — connecteur `localys` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 12/12 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Gestion Localys (gestionlocalys.com, 240+ unités). Site Next.js rendu serveur : /fr/logements liste les logements disponibles (cartes avec adresse, quartier, « 2 ch. · 1 sdb. » et prix « 1 500 $ / mois »), chaque fiche /fr/logements/<slug> fournit la description (avec **DISPONIBLE …**, sections #### Inclusions/Exclusions), les caractéristiques (« 2 ch. 1 sdb. 750 pi² ») et la galerie (photos ws.jumptools.com encodées dans /_next/image?url=…). Une annonce par logement ; external_id = slug ; fiches via le cache détail (clé = hash du texte de la carte). | |
| 10 | + | |
| 11 | +- **Site** : https://www.gestionlocalys.com/fr | |
| 12 | +- **Page des annonces** : https://www.gestionlocalys.com/fr/logements | |
| 13 | +- **Secteurs couverts** : Montréal (Ville-Marie, Sud-Ouest, Plateau, Hochelaga-Maisonneuve, Villeray, Montréal-Nord), Westmount | |
| 14 | +- **Module** : `louka/connectors/localys.py` — classe `LocalysConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.gestionlocalys.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.gestionlocalys.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 12 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 2558 Rue De Cadillac, Montréal (Mercier/Hochelaga-Maisonneuve) | | |
| 33 | +| `address` | Adresse civique | 100 % | 2558 Rue De Cadillac, Montréal | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 92 % | Mercier/Hochelaga-Maisonneuve | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 500 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 92 % | 750 | | |
| 41 | +| `availability_date` | Date de disponibilité | 92 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | DISPONIBLE IMMÉDIATEMENT Magnifique logement au 2e étage d'un duplex, semi-meublé. Situé … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 5 photo(s) — https://ws.jumptools.com/photos/28/36/59/91/28365991_0.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 92 % | {"inclusions": {"electricity": true, "internet": true}, "appliances": {"fridge": true, "s… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.gestionlocalys.com/fr/logements/2558-rue-de-cadillac-montreal-mercier-hochela… | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 12 trouvées, +12 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 12 au total, **12 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync localys` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='localys' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/location_di.md
+17 −17
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Location DI (Groupe Sphère DI) — connecteur `location_di` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Mauricie / Lanaudière · Backend : direct · Annonces actives : 9/16 | |
| 5 | +**État : actif** · Région : Mauricie / Lanaudière · Backend : direct · Annonces actives : 9/18 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -29,34 +29,34 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | 3½ — 261 Rue Beauvilliers, Saint-Gabriel-de-Brandon | | |
| 33 | −| `address` | Adresse civique | 100 % | 261 Rue Beauvilliers | | |
| 34 | −| `city` | Ville (normalisée) | 100 % | Saint-Gabriel-de-Brandon | | |
| 35 | −| `sector` | Secteur / quartier | 100 % | Lanaudière | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — 655 Rue Saint Christophe, Trois-Rivières | | |
| 33 | +| `address` | Adresse civique | 100 % | 655 Rue Saint Christophe | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Trois-Rivières | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Mauricie | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 950 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 015 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 78 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 100 % | 750 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 850 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 100 % | 46.295955 | | |
| 43 | −| `description` | Description | 100 % | Logement 3½ situé à Saint-Gabriel-de-Brandon. 1 chambre, 1 salle de bain, 750 pi², 1er ét… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 5 photo(s) — https://cdn.sanity.io/images/4ae0mkdu/production/52e052a8c456e330f4d0d501051… | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.3563852 | | |
| 43 | +| `description` | Description | 100 % | Logement 3½ situé à Trois-Rivières. 1 chambre, 1 salle de bain, 850 pi², 1er étage. Loyer… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 5 photo(s) — https://cdn.sanity.io/images/4ae0mkdu/production/ed01996639d09df99a096ad3bbd… | | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Insonorisation supérieure", "Thermopompe", "Échangeur d’air (VRC)", "Animaux acceptés",… | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "storage": true, "pets": "oui", "parking": {"available": true, "included": t… | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://locationdi.com/logements/3-261-rue-beauvilliers-003-626595 | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "pets": "oui", "price_from": true, "floor_label": "1er Étage", "bedrooms": 1} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://locationdi.com/logements/3-655-rue-saint-christophe-3-864226 | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:33 — 9 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:18 — 9 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 16 au total, **9 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 18 au total, **9 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/location_saguenay.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Location Saguenay — connecteur `location_saguenay` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 21/21 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:33 — 21 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:18 — 21 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 10.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 21 au total, **21 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 76 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/location_sb.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Location Résidentielle SB — connecteur `location_sb` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 2/2 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Location Résidentielle SB (locationresidentielle.com — jumelés, appartements et maisons à louer à Saint-Georges, Beauce). WordPress thème RealHomes rendu serveur : la page /a-louer/ liste des cartes <article class="property-item"> (titre, extrait, vignette, lien /property/<slug>/). Petit inventaire (2-3 fiches actives) ; on écarte les cartes « liste d'attente » et « NON DISPONIBLE ». La page détail (via cache BD) fournit adresse, chambres, salles de bain, prix ($/mois — souvent « communiquez avec nous »), disponibilité, caractéristiques (<li>) et photos. | |
| 10 | + | |
| 11 | +- **Site** : https://locationresidentielle.com | |
| 12 | +- **Page des annonces** : https://locationresidentielle.com/a-louer/ | |
| 13 | +- **Secteurs couverts** : Saint-Georges (Beauce) — jumelés, appartements et maisons ; cartes « liste d'attente » et « non disponible » écartées | |
| 14 | +- **Module** : `louka/connectors/location_sb.py` — classe `LocationSbConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://locationresidentielle.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://locationresidentielle.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | GRAND APP 4 1/2 À LOUER | | |
| 33 | +| `address` | Adresse civique | 100 % | 11555, 28e Avenue, Saint-Georges G6A 0G6 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Georges | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 50 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 50 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 50 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 50 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | APP 4 1/2 À Louer au 2e étage Informations | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://locationresidentielle.com/wp-content/uploads/2026/04/Salle-a-diner.… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["2 grandes chambres", "Grand îlot convivial", "Salle de lavage indépendante", "Bain et d… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true}, "ac": true, "elevator": true, "bal… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://locationresidentielle.com/property/appartement-4-1-2-a-louer/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 2 trouvées, +2 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 2 au total, **2 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 50 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync location_sb` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='location_sb' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/loftsmtl.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Lofts MTL — connecteur `loftsmtl` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 9/9 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:33 — 9 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:18 — 9 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 9 au total, **9 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/logement_mauricie.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Logement Mauricie (regroupement de propriétaires) — connecteur `logement_mauricie` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:33 — 1 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:18 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/loggia.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Loggia Saint-Lambert — connecteur `loggia` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 1/1 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Loggia Saint-Lambert (loggiasaintlambert.com) Trois immeubles locatifs (Loggia 1, 2, 3) sur l'avenue Saint-Charles à Saint-Lambert. WordPress rendu serveur : la page /le-projet/ embarque une carte interactive (blocs « div.available.bloc.appt-N-demi » libellés « 111-$2495. - 4 ½ / Disponible ») et ~260 fiches d'unités (« Appartement NNN / Loggia N / ÉTAGE N », p.dispo[.not] = Loué/Disponible/Réservé, p.superficie, plan PNG/PDF). On ne retient que les unités « Disponible ». Granularité : unité. | |
| 10 | + | |
| 11 | +- **Site** : https://www.loggiasaintlambert.com | |
| 12 | +- **Page des annonces** : https://www.loggiasaintlambert.com/le-projet/ | |
| 13 | +- **Secteurs couverts** : Saint-Lambert (av. Saint-Charles, Loggia 1-2-3) | |
| 14 | +- **Module** : `louka/connectors/loggia.py` — classe `LoggiaConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.loggiasaintlambert.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.loggiasaintlambert.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Appartement 111 (4½) — Loggia 3, Loggia Saint-Lambert | | |
| 33 | +| `address` | Adresse civique | 100 % | avenue Saint-Charles, Saint-Lambert | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Lambert | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 495 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://www.loggiasaintlambert.com/wp-content/uploads/2021/09/Loggia-3-etage… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"balcony": true, "plan_pdf": "https://www.loggiasaintlambert.com/wp-content/themes/cinq/… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.loggiasaintlambert.com/le-projet/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 1 trouvées, +1 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 1 au total, **1 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync loggia` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='loggia' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/logicom.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Les Immeubles Logicom — connecteur `logicom` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 15/15 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Les Immeubles Logicom (immeubleslogicom.com — Sainte-Foy, Sillery, Lévis…). WordPress rendu serveur : /appartements-a-louer/ liste les immeubles (/immeuble/<slug>/), et chaque page immeuble expose ses unités disponibles en cartes `.appartement` (no d'unité dans le titre, disponibilité, type n ½, superficie, balcon, prix « À partir de … $ », plan PDF/PNG) + un marqueur carte data-lat/data-lng. Granularité : unité. | |
| 10 | + | |
| 11 | +- **Site** : https://immeubleslogicom.com | |
| 12 | +- **Page des annonces** : https://immeubleslogicom.com/appartements-a-louer/ | |
| 13 | +- **Secteurs couverts** : Québec (Sainte-Foy, Sillery, Cap-Rouge…) et Lévis | |
| 14 | +- **Module** : `louka/connectors/logicom.py` — classe `LogicomConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://immeubleslogicom.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://immeubleslogicom.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 15 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Terrasses St-Louis 201 | | |
| 33 | +| `address` | Adresse civique | 0 % | — | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Québec | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Sainte-Foy | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 930 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 3 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1564 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-12-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.758506 | | |
| 43 | +| `description` | Description | 100 % | Unité 201 — Terrasses St-Louis (Sainte-Foy). | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 16 photo(s) — https://immeubleslogicom.com/wp-content/uploads/2026/01/Plan_3044-201-301-C… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Balcon : 137 pi²"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"balcony": true, "price_from": true, "floor_plan": "https://immeubleslogicom.com/wp-cont… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://immeubleslogicom.com/immeuble/terrasses-st-louis/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 15 trouvées, +15 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 15 au total, **15 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync logicom` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='logicom' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/logiluxx.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Logiluxx (Investissements Cleary) — connecteur `logiluxx` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 9/9 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Logiluxx / Investissements Cleary (logiluxx.com — habitations locatives tout inclus LEED, 50 ans et mieux). Trois immeubles, chacun avec son mini-site statique (HTML iso-8859-1) : St-Hubert I et II (Faubourg Cousineau, Longueuil) et Boucherville. Les sites St-Hubert affichent une table « PRIX » par typologie (superficie @ superficie, loyer « à partir de X$ ») ; Boucherville n'a que les plans (superficies) et fonctionne par liste d'attente. Granularité : une annonce par immeuble × typologie. | |
| 10 | + | |
| 11 | +- **Site** : https://logiluxx.com | |
| 12 | +- **Page des annonces** : https://logiluxx.com/sthubert/ | |
| 13 | +- **Secteurs couverts** : Saint-Hubert/Longueuil (Faubourg Cousineau, 2 phases) et Boucherville — tout inclus LEED, 50 ans et mieux | |
| 14 | +- **Module** : `louka/connectors/logiluxx.py` — classe `LogiluxxConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://logiluxx.com/sthubert/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://logiluxx.com/sthubert/ · https://logiluxx.com/sthubert2/ · https://logiluxx.com/boucherville/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Logiluxx St-Hubert I — 3½ | | |
| 33 | +| `address` | Adresse civique | 0 % | — | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Longueuil | | |
| 35 | +| `sector` | Secteur / quartier | 67 % | Saint-Hubert | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 67 % | 1 941 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 817 | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Logiluxx St-Hubert I — habitations locatives haut de gamme tout inclus pour les 50 ans et… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 7 photo(s) — https://logiluxx.com/sthubert/images/projets/logiluxxB_1.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Formule tout inclus (chauffage, électricité, eau chaude)", "5 électroménagers en acier … | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true}, "appliances": {… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://logiluxx.com/sthubert/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 9 trouvées, +9 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 9 au total, **9 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 67 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync logiluxx` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='logiluxx' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/logis_experts.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Logis-Experts — connecteur `logis_experts` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 487/519 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 486/519 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Logis-Experts (logis-experts.com) Gestionnaire-constructeur, centre-v | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 487 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 486 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:33 — 487 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:18 — 486 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 519 au total, **487 actives** | |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 519 au total, **486 actives** | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 38 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/logisbourg.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Logisbourg — connecteur `logisbourg` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 11/14 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 15/19 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Logisbourg (logisbourg.com) Site ASP classique : tableau des disponib | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 11 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 15 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:33 — 11 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:18 — 15 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 14 au total, **11 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 19 au total, **15 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/logisco.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Logisco — connecteur `logisco` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 160/184 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 159/186 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Logisco (logisco.com) Site rendu serveur. Crawl : page liste principa | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 160 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 159 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:33 — 160 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:18 — 159 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 184 au total, **160 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 186 au total, **159 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 99 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/logisma.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Logisma — connecteur `logisma` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 12/20 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:33 — 12 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:18 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 20 au total, **12 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/logispro.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # LogisPro Rimouski — connecteur `logispro` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:34 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:18 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 75 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/logispro_mauricie.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# LogisPro Mauricie — connecteur `logispro_mauricie` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 12/12 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur LogisPro Mauricie (logispro.ca) Trois-Rivières, Cap-de-la-Madeleine, Shawinigan, Bécancour, Nicolet. ⚠️ Compagnie DISTINCTE de LogisPro Rimouski (logisprorimouski.com, connecteur `logispro`). WordPress thème maison rendu serveur : /appartements-a-louer/ = cartes (prix, adresse, typologie, lien /apartments/<slug>/) ; page détail = liste « Secteur / Prix / Grandeur / Étage / … », description riche et galerie fancybox. Granularité : une annonce par logement disponible. | |
| 10 | + | |
| 11 | +- **Site** : https://logispro.ca | |
| 12 | +- **Page des annonces** : https://logispro.ca/appartements-a-louer/ | |
| 13 | +- **Secteurs couverts** : Trois-Rivières, Cap-de-la-Madeleine, Shawinigan, Bécancour (Gentilly), Nicolet | |
| 14 | +- **Module** : `louka/connectors/logispro_mauricie.py` — classe `LogisProMauricieConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://logispro.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://logispro.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 12 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 6880#107 Boulevard des Forges, Trois-Rivières | | |
| 33 | +| `address` | Adresse civique | 100 % | 6880 Boulevard des Forges, Trois-Rivières, QC G8Y 0K6 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Trois-Rivières | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Trois-Rivières | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 195 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | ✨ TRÈS JOLIE 3 ½ DANS UN QUARTIER CONVOITÉ ✨ 📍Logement au 6880#107 des Forges au rez-de-c… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://logispro.ca/wp-content/uploads/2026/08/1-logispro-4.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Étage : Rez-de-chaussée", "Laveuse / Sécheuse : Entrées", "Stationnement : Disponible",… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"internet": true}, "appliances": {"dishwasher": true}, "ac": true, "parki… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://logispro.ca/apartments/6880107-boulevard-des-forges-trois-rivieres/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 12 trouvées, +12 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 12 au total, **12 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync logispro_mauricie` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='logispro_mauricie' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/logisquebec.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # LogisQuébec — connecteur `logisquebec` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 9702/10212 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 9696/10348 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ LogisQuébec (logisquebec.com) — portail locatif québécois (Réglisse Média | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9702 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9696 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -35,7 +35,7 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 35 | 35 | | `sector` | Secteur / quartier | 50 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 95 % | 5½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 99 % | 900 $ | |
| 38 | −| `bedrooms` | Chambres | 95 % | 3 | | |
| 38 | +| `bedrooms` | Chambres | 96 % | 3 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 85 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 32 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 75 % | now | |
@@ -49,16 +49,16 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:39 — 9665 trouvées, +34 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:27 — 9681 trouvées, +20 / ~61 / -3 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 10212 au total, **9702 actives** | |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 10348 au total, **9696 actives** | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 99 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 44, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
added
docs/connecteurs/lok36.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# LOK 36 — connecteur `lok36` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 2/2 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur LOK 36 (lok36.com) Immeuble locatif au 36, boulevard de la Seigneurie Ouest, Blainville (60 unités, 3½ à 5½). WordPress rendu serveur : la page /prix-plans/ contient une image cliquable dont chaque unité a un tooltip <div id="wl-tooltip-XXXX-N" class="wl-tooltip"> avec Modèle : TypeN, Numéro:NNN, Chambre(s) :4½, Superficie : NNN pi2, Prix : NNNN$, Statut : LOUÉ|Disponible et un lien plan PDF. On ne garde que les unités NON louées. Granularité : unité (external_id = numéro d'unité). | |
| 10 | + | |
| 11 | +- **Site** : https://www.lok36.com | |
| 12 | +- **Page des annonces** : https://www.lok36.com/prix-plans/ | |
| 13 | +- **Secteurs couverts** : Blainville (36, boulevard de la Seigneurie Ouest) | |
| 14 | +- **Module** : `louka/connectors/lok36.py` — classe `Lok36Connector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.lok36.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.lok36.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | LOK 36 — Unité 301 | | |
| 33 | +| `address` | Adresse civique | 100 % | 36, boulevard de la Seigneurie Ouest, Blainville | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Blainville | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 125 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1008 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité 301 — Modèle Type1 Numéro:301 Chambre(s) :4½ Superficie : 1008 pi2 Prix : 2125$ Sta… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://www.lok36.com/wp-content/uploads/2025/12/header_accueil_1mois.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"floor_plan": "https://www.lok36.com/wp-content/uploads/2024/06/lok36_feuillet_unite_x01… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.lok36.com/prix-plans/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 2 trouvées, +2 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 2 au total, **2 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync lok36` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='lok36' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/lokalia.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Espaces Lokalia — connecteur `lokalia` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 130/141 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:40 — 130 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:29 — 130 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 141 au total, **130 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 82 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/louer_ca.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Louer.ca — connecteur `louer_ca` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 4564/5908 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 4518/6025 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ Louer.ca — portail locatif 100 % Québec du réseau Rentals.ca. Accès par l'A | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4564 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4518 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -37,8 +37,8 @@ Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `l | ||
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 450 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 84 % | 400 | | |
| 41 | −| `availability_date` | Date de disponibilité | 100 % | now | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 83 % | 400 | | |
| 41 | +| `availability_date` | Date de disponibilité | 99 % | now | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.492189 | |
| 43 | 43 | | `description` | Description | 100 % | Le Marco Situé au 1225, rue Saint Marc, à proximité du métro Guy-Concordia, ce quartier o… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 12 photo(s) — https://images.rentals.ca/property-pictures/large/montreal-qc/809380/apartm… | |
@@ -49,16 +49,16 @@ Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `l | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:47 — 5617 trouvées, +0 / ~1 / -292 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:35 — 4759 trouvées, +4 / ~12 / -188 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 5908 au total, **4564 actives** | |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 6025 au total, **4518 actives** | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 42, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/louer_saguenay.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Louer Saguenay — connecteur `louer_saguenay` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:47 — 5 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:35 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/louis14.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Quartier Louis Quatorze (Groupe Damco) — connecteur `louis14` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 17/18 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:47 — 17 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:36 — 17 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 18 au total, **17 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/louis_alexandre.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Le Louis-Alexandre — connecteur `louis_alexandre` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 6/6 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le Louis-Alexandre (condoslouisalexandre.ca — Longueuil, 2100, rue René, près du Vieux-Longueuil). WordPress + Elementor rendu serveur : la page « Appartements disponibles » liste chaque unité en blocs Elementor « Condo #NNN | Superficie de X pi² | n chambres, n sdb | PRIX $ / mois » avec image du plan et fiche PDF par unité. Le numéro d'unité (#NNN) sert d'identifiant stable. | |
| 10 | + | |
| 11 | +- **Site** : https://condoslouisalexandre.ca | |
| 12 | +- **Page des annonces** : https://condoslouisalexandre.ca/appartements-disponibles-longueuil/ | |
| 13 | +- **Secteurs couverts** : Longueuil (Vieux-Longueuil) | |
| 14 | +- **Module** : `louka/connectors/louis_alexandre.py` — classe `LouisAlexandreConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://condoslouisalexandre.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://condoslouisalexandre.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 6 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Condo #212 — Le Louis-Alexandre | | |
| 33 | +| `address` | Adresse civique | 100 % | 2100, rue René, Longueuil | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Longueuil | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 245 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 2 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1131 | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://condoslouisalexandre.ca/wp-content/uploads/2025/06/appartement-512.p… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Superficie de 1131 pi²", "2 salle(s) de bain"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"contact": {"email": "info@condoslouisalexandre.ca", "phone": "450-800-1961"}, "plan_pdf… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://condoslouisalexandre.ca/appartements-disponibles-longueuil/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 6 trouvées, +6 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 6 au total, **6 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync louis_alexandre` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='louis_alexandre' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/lr_gestion.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # LR Gestion immobilière (LR Location) — connecteur `lr_gestion` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 106/116 | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 103/117 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,19 +25,19 @@ connecteur LR Gestion immobilière / LR Location (lrgestion.com ; portail d'anno | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 106 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 103 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 1005B Rue Notre Dame — unité 1005B-3 | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 1005 Rue Notre Dame, Gatineau, QC | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Gatineau | |
| 35 | −| `sector` | Secteur / quartier | 66 % | — | | |
| 35 | +| `sector` | Secteur / quartier | 65 % | — | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 595 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 0 % | — | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 21 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 20 % | — | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.4893935 | |
| 43 | 43 | | `description` | Description | 100 % | Bel immeuble bien entretenu, offrant un environnement calme, propre et sécuritaire. La pr… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:47 — 107 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:36 — 104 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 116 au total, **106 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 117 au total, **103 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/lsr.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# LSR GesDev — NOVIA (centre-ville Longueuil et Novia de la Gare Candiac) — connecteur `lsr` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 81/81 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur LSR GesDev (lsrgesdev.ca — anciennement lsrgesdev.com, redirige) — développeur-gestionnaire de Saint-Lambert. Le site corporatif ne publie aucun prix ; l'inventaire locatif vit sur lenovia.ca (WordPress) avec DEUX backends différents : - NOVIA centre-ville – Longueuil (300, place Charles-Le Moyne) : widget Livya (app.livya.com, client « lsr-gesdev », projet « novia ») — flux RSC Next.js parsé par la base commune LivyaConnector (_livya.py) ; - NOVIA de la Gare – Candiac (125, rue des Marronniers) : widget Planpoint (app.planpoint.io/125-marronniers/125-marronniers) — API JSON publique via le helper _planpoint.py. Granularité = UNITÉ pour les deux projets (prix, pi², chambres, étage). Roomî (espaceroomi.ca, résidence étudiante Trois-Rivières) exclu. | |
| 10 | + | |
| 11 | +- **Site** : https://www.lsrgesdev.ca | |
| 12 | +- **Page des annonces** : https://lenovia.ca | |
| 13 | +- **Secteurs couverts** : Longueuil (NOVIA centre-ville, widget Livya), Candiac (Novia de la Gare, Planpoint) | |
| 14 | +- **Module** : `louka/connectors/lsr.py` — classe `LSRConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://lenovia.ca/novia-de-la-gare-candiac/plans/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://lenovia.ca/novia-de-la-gare-candiac/plans/ · https://lenovia.ca/novia-centre-ville-longueuil/appartements/ · https://www.lsrgesdev.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 81 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | NOVIA centre-ville (NOVIA) — unité 2-709 | | |
| 33 | +| `address` | Adresse civique | 100 % | 300 Place Charles-Le Moyne, Ville de Longueuil, J4K1E1 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Longueuil | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 950 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 642 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 54 % | 45.5252 | | |
| 43 | +| `description` | Description | 100 % | 7eme \| Modèle U09 \| 1 chambre(s) \| 1 salle(s) de bain \| Plan : https://d10eh8wo1l4y8c… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 2 photo(s) — https://d10eh8wo1l4y8c.cloudfront.net/projects/83b91530-6f60-433a-84b3-af47e… | | |
| 45 | +| `amenities` | Commodités (JSON) | 46 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true, "gestionnaire": "https://www.lsrgesdev.ca", "building": "NOVIA", "fl… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://app.livya.com/fr/lsr-gesdev/projects/novia/plans | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 81 trouvées, +81 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 81 au total, **81 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 54 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync lsr` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='lsr' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/luxuor.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Immeubles Luxuor — connecteur `luxuor` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:47 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:36 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 75 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/lynk_olymbec.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Lynk (Olymbec) — connecteur `lynk_olymbec` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : Firecrawl · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (Firecrawl, pages HTML (rendu serveur)) alimente les colonnes de l | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:47 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:36 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/m3_laval.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# M3 Mirabel (condos locatifs) — connecteur `m3_laval` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 8/8 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur M3 Condos locatifs (m3mirabel.com — Cité Mirabel, boul. de Versailles ; 2 groupes d'immeubles : Bâtiments 1 à 3 et 4 à 7, ~325 unités). NB : slug historique « m3_laval » de la campagne Laval/Rive-Nord, mais le projet est bien à MIRABEL (Laurentides). La page /plans/ affiche ses unités via le widget Planpoint : on interroge l'API JSON publique (app.planpoint.io/api/projects/find, 2 requêtes/sync, voir _planpoint.py). Granularité UNITÉ : type (« 4 1/2 »), pi², chambres, plans par unité, adresse + lat/lng par immeuble ; la source ne publie AUCUN prix (price null/0 chez Planpoint, pas de prix sur le site non plus) — rien d'inventé. Seules les unités « Available » sont retenues. | |
| 10 | + | |
| 11 | +- **Site** : https://www.m3mirabel.com | |
| 12 | +- **Page des annonces** : https://www.m3mirabel.com/plans/ | |
| 13 | +- **Secteurs couverts** : Mirabel | |
| 14 | +- **Module** : `louka/connectors/m3_laval.py` — classe `M3LavalConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.m3mirabel.com/plans/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.m3mirabel.com/plans/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 8 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Bâtiments 4 à 7 — Unité 505 | | |
| 33 | +| `address` | Adresse civique | 100 % | 17925 Boulevard de Versailles | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Mirabel | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 901 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-09-15 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.6759744 | | |
| 43 | +| `description` | Description | 100 % | Unité 505 — Bâtiments 4 à 7, Mirabel. Modèle 4 1/2, étage bâtiment 4 - étage 5, 901 pi², … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 14 photo(s) — https://storage.googleapis.com/planpoint-bucket/DSC_0784-v2-1665702704887.j… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["• 5 électroménagers inclus"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"fridge": true}, "bathrooms": 1, "floor": "Bâtiment 4 - Étage 5", "model"… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.m3mirabel.com/plans/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 8 trouvées, +8 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 8 au total, **8 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync m3_laval` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='m3_laval' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/m_immobilier.md
+12 −12
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # M Immobilier (location) — connecteur `m_immobilier` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 186/207 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 179/207 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,21 +25,21 @@ M Immobilier (mimmobilier.com) — LOCATIONS Agence indépendante de prestige (G | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 186 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 179 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 9017 Rue Jean-Baptiste-Gauthie, Mirabel | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 9017 Rue Jean-Baptiste-Gauthier | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Mirabel | |
| 35 | −| `sector` | Secteur / quartier | 73 % | — | | |
| 35 | +| `sector` | Secteur / quartier | 75 % | — | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 98 % | 4½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 500 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 98 % | 2 | |
| 39 | −| `bathrooms` | Salles de bain | 91 % | 1 | | |
| 40 | −| `area_sqft` | Superficie (pi²) | 53 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 92 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 52 % | — | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | −| `lat` | GPS (lat/lng) | 58 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 57 % | — | | |
| 43 | 43 | | `description` | Description | 100 % | Beau logement de 2 chambres situé au niveau inférieur d'une propriété unifamiliale constr… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 25 photo(s) — https://www.mimmobilier.com/images/centris-slideshow/13486094-1-494761508.j… | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:48 — 186 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:36 — 179 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 207 au total, **186 actives** | |
| 59 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 58 % · prix 100 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 207 au total, **179 actives** | |
| 59 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-24 | |
| 60 | +- **Complétude clé (actives)** : GPS 57 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/majestic.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le Majestic du Lac Boivin — connecteur `majestic` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:48 — 1 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:36 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 0 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/marquise_8.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Marquise 8 — connecteur `marquise_8` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laval · Backend : direct · Annonces actives : 47/47 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Marquise 8 (marquise8.com — Devmet/ Marquise Condominiums). Tour de 137 condos locatifs tout inclus au 3641, avenue Jean-Béraud à Laval (Chomedey, centre-ville). Le site Webflow affiche ses unités via le widget Planpoint : on interroge l'API JSON publique (app.planpoint.io/api/projects/find, 1 requête/sync, voir _planpoint.py). Granularité UNITÉ (numéro de porte, pi², plan, étage) mais AUCUN prix publié (« unitPriceTBD ») ni typologie ; seules les unités « Available » sont retenues. deliveryDate au format JJ-MM-AAAA (contrairement aux autres comptes Planpoint) — converti ici. | |
| 10 | + | |
| 11 | +- **Site** : https://marquise8.com | |
| 12 | +- **Page des annonces** : https://marquise8.com/#unite | |
| 13 | +- **Secteurs couverts** : Laval (Chomedey, 3641 av. Jean-Béraud — tout inclus) | |
| 14 | +- **Module** : `louka/connectors/marquise_8.py` — classe `Marquise8Connector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://marquise8.com/#unite | |
| 20 | +- **URLs de départ (constantes du module)** : https://marquise8.com/#unite | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 47 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Marquise 8 — Unité 102 | | |
| 33 | +| `address` | Adresse civique | 100 % | 3641 Av. Jean-Béraud | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Laval | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Chomedey | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 0 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 649 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-07-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité 102 — Marquise 8, Laval. Étage rdc, 649 pi². Inclusions : Réfrigérateur, Cuisinière… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://storage.googleapis.com/planpoint-bucket/DEVMETA_M8_BILLARD_06-17659… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Réfrigérateur", "Cuisinière", "Lave-vaisselle", "Machine à laver", "Sèche-linge", "Eau … | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true}, "appliances": {"fridge": true, "stove": true, "dishwa… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://marquise8.com/#unite | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 47 trouvées, +47 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 47 au total, **47 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync marquise_8` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='marquise_8' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/martin_roy.md
+78 −0
@@ -0,0 +1,78 @@ | ||
| 1 | +# Construction Martin Roy — connecteur `martin_roy` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 0/0 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Construction Martin Roy (constructionmartinroy.com — Saint-Georges, Beauce). WordPress (WP Engine) rendu serveur : la page /logement-a-louer/ liste 18 fiches par adresse (cartes .v-logements-louer__logements-modeles-item) avec statut Loué/Disponible, prix ($/mois, « À partir de », « Sur demande »), chambres, salles de bain, superficie et photo (background-image). On n'ingère que les unités NON louées (statut ≠ Loué). Les pages détail /logement/<slug>/ sont derrière un WAF Cloudflare agressif : on s'en tient à la liste, qui contient déjà tous les champs utiles. | |
| 10 | + | |
| 11 | +- **Site** : https://constructionmartinroy.com | |
| 12 | +- **Page des annonces** : https://constructionmartinroy.com/logement-a-louer/ | |
| 13 | +- **Secteurs couverts** : Saint-Georges (Beauce) — 18 adresses ; seules les unités non louées sont ingérées (inventaire complet loué au 2026-08-25) | |
| 14 | +- **Module** : `louka/connectors/martin_roy.py` — classe `MartinRoyConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://constructionmartinroy.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://constructionmartinroy.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 0 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | — | — | | |
| 33 | +| `address` | Adresse civique | — | — | | |
| 34 | +| `city` | Ville (normalisée) | — | — | | |
| 35 | +| `sector` | Secteur / quartier | — | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | — | — | | |
| 37 | +| `price` | Loyer mensuel ($) | — | — | | |
| 38 | +| `bedrooms` | Chambres | — | — | | |
| 39 | +| `bathrooms` | Salles de bain | — | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | — | — | | |
| 41 | +| `availability_date` | Date de disponibilité | — | — | | |
| 42 | +| `lat` | GPS (lat/lng) | — | — | | |
| 43 | +| `description` | Description | — | — | | |
| 44 | +| `images` | Photos (JSON) | — | — | | |
| 45 | +| `amenities` | Commodités (JSON) | — | — | | |
| 46 | +| `details` | Détails additionnels (JSON) | — | — | | |
| 47 | +| `url` | URL de l'annonce source | — | — | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 0 au total, **0 actives** | |
| 59 | +- **Première ingestion** : — · **Dernière observation** : — | |
| 60 | +- **Complétude clé (actives)** : GPS — · prix — · photos — · description — | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync martin_roy` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='martin_roy' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/matinale.md
+10 −10
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Gestion Matinale — connecteur `matinale` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 44/46 | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 43/46 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Gestion Matinale (gestionmatinale.com) ~44 apparts + maisons à Sherb | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 44 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 43 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -36,10 +36,10 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 345 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 95 % | 3 | |
| 39 | −| `bathrooms` | Salles de bain | 11 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 12 % | — | | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 14 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 86 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 59 % | 45.3985951 | | |
| 42 | +| `lat` | GPS (lat/lng) | 58 % | 45.3985951 | | |
| 43 | 43 | | `description` | Description | 100 % | Magnifique 5 ½ entièrement rénové en 2024 — Coup de cœur assuré ! Découvrez ce superbe lo… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 13 photo(s) — https://gestionmatinale.com/wp-content/uploads/2024/06/1330-Ko-facade-1.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 0 % | [] | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:49 — 44 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:37 — 43 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 20.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 46 au total, **44 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 59 % · prix 100 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 46 au total, **43 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | +- **Complétude clé (actives)** : GPS 58 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/may_bourg.md
+6 −8
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion May Bourg — connecteur `may_bourg` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 6/7 |
| 6 | 6 | |
@@ -48,23 +48,21 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:49 — 6 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:37 — 6 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 50 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 1 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
| 65 | −| Date | Message (sync_log) | | |
| 66 | −|---|---| | |
| 67 | −| 2026-08-16 17:13 | 503 Server Error: Service Unavailable for url: https://maybourg.com/repertoire-de-logements/ | | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 68 | 66 | |
| 69 | 67 | Rejouer la source seule : `python3 run.py sync may_bourg` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='may_bourg' ORDER BY ts DESC LIMIT 5;`). |
| 70 | 68 | |
modified
docs/connecteurs/medway.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Groupe Medway — connecteur `medway` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 482/499 | |
| 5 | +**État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 481/499 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Groupe Medway (condosmedway.ca) Condos locatifs neufs multi-villes : | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 482 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 481 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -42,21 +42,21 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 42 | 42 | | `lat` | GPS (lat/lng) | 91 % | 46.7321163 | |
| 43 | 43 | | `description` | Description | 100 % | Découvrez un milieu de vie pensé pour suivre votre rythme. Stratégiquement situé à quelqu… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 23 photo(s) — https://b3853357.assetcdn.net/2.0/3853357/wp-content/uploads/2025/09/Header… | |
| 45 | −| `amenities` | Commodités (JSON) | 78 % | ["Balcon 43 pi²"] | | |
| 45 | +| `amenities` | Commodités (JSON) | 79 % | ["Balcon 43 pi²"] | | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"balcony": true, "pool": true, "gym": true, "virtual_tour": "https://minuitmoinsune.view… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://condosmedway.ca/medwayfaro/medway-faro-unite-1513/ | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:50 — 482 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:38 — 481 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 499 au total, **482 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 499 au total, **481 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 91 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/mellem.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Mellem (Groupe Mach) — connecteur `mellem` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 78/90 | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 86/95 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Mellem (mellem.ca — Groupe Mach) Site Nuxt (rendu serveur) : un pro | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 78 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 86 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -33,7 +33,7 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 33 | 33 | | `address` | Adresse civique | 100 % | 6085 Rue Sherbrooke Est, Montréal, H1N 1C2 | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Montréal | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 96 % | 3½ | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 95 % | 3½ | | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 868 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:50 — 78 trouvées, +0 / ~0 / -1 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:38 — 86 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 90 au total, **78 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 95 au total, **86 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/mercille.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Groupe Mercille — connecteur `mercille` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 9/9 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Groupe Mercille (groupemercille.com) Quatre immeubles résidentiels à Longueuil, secteur du métro (Le D'Assigny 110 rue de la Barre, Le Neuville Nord/Sud, Le Sérigny). Site custom (Orangium) rendu serveur : la page « Appartements résidentiels » expose une table .table-listings — une ligne par unité disponible : type + disponibilité (« 3.5 1er septembre »), secteur, prix, étage (« 11 de 22 »), immeuble (lien vers sa page) et plan PDF. Les lignes du formulaire de contact (repliées sous chaque unité) sont ignorées. La page de chaque immeuble (via cache BD) fournit l'adresse civique et une photo. ⚠️ Le volet espaces commerciaux/bureaux du site n'est pas visité. | |
| 10 | + | |
| 11 | +- **Site** : https://groupemercille.com | |
| 12 | +- **Page des annonces** : https://groupemercille.com/appartements-residentiels | |
| 13 | +- **Secteurs couverts** : Longueuil (secteur du métro : Le D'Assigny, Le Neuville, Le Sérigny) | |
| 14 | +- **Module** : `louka/connectors/mercille.py` — classe `MercilleConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://groupemercille.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://groupemercille.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — Le D'Assigny | | |
| 33 | +| `address` | Adresse civique | 100 % | 110, rue de la Barre, Longueuil QC J4K 1A3 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Longueuil | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Métro Longueuil | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 400 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Ce site utilise des témoins (Cookies) afin de vous offrir la meilleure expérience possibl… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://assets.orangium.com/api/assets/groupemercille/Content-undefined_d-as… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"balcony": true, "floor_label": "Étage 11 de 22", "plan_pdf": "https://assets.orangium.c… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://groupemercille.com/le-d-assigny | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 9 trouvées, +9 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 9 au total, **9 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync mercille` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='mercille' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/mercini.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Mercini (Gestion Faleschini Mercier) — connecteur `mercini` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 45/53 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:50 — 45 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:39 — 45 trouvées, +0 / ~2 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 53 au total, **45 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 96 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/metcap.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # MetCap Living — connecteur `metcap` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 8/8 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:50 — 8 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:39 — 8 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 8 au total, **8 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/miner.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Le Miner — connecteur `miner` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie (Granby) · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le Miner (leminer.ca) Unités locatives neuves au 354, rue Principale à Granby (reconversion du site Miner). Webflow statique rendu serveur : la page /unites affiche trois cartes de typologie (« Unités d'une chambre / à partir de 1 470 $/mois »). Granularité : typologie (pas d'unités individuelles). | |
| 10 | + | |
| 11 | +- **Site** : https://leminer.ca | |
| 12 | +- **Page des annonces** : https://leminer.ca/unites | |
| 13 | +- **Secteurs couverts** : Granby (354 rue Principale) | |
| 14 | +- **Module** : `louka/connectors/miner.py` — classe `MinerConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://leminer.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://leminer.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Unités d'une chambre — Le Miner | | |
| 33 | +| `address` | Adresse civique | 100 % | 354, rue Principale, Granby | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Granby | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 470 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 67 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unités locatives neuves du projet Le Miner à Granby : chambres spacieuses, espaces réfléc… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 13 photo(s) — https://leminer.ca/images/LeMiner_Unit_901_CAM_005.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://leminer.ca/unites | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:45 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync miner` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='miner' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/minto.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Minto Apartments — connecteur `minto` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 19/20 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:50 — 19 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:39 — 19 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 20 au total, **19 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 84 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/mkar.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Immobilière MKAR — connecteur `mkar` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:50 — 5 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:39 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 1 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/moderno.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Moderno Construction — connecteur `moderno` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 7/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:50 — 7 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:39 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **7 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/mondev.md
+10 −10
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Mondev — connecteur `mondev` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 43/49 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 41/49 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Mondev (mondev.ca) Grand constructeur-locateur montréalais (Ville-Ma | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 43 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 41 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -39,8 +39,8 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 0 % | — | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | −| `lat` | GPS (lat/lng) | 47 % | 45.526832 | | |
| 43 | −| `description` | Description | 95 % | Find your new home at Jacques in Ville-Marie. Studios, 1, 2, or 3-bedroom rentals with hi… | | |
| 42 | +| `lat` | GPS (lat/lng) | 44 % | 45.526832 | | |
| 43 | +| `description` | Description | 98 % | Find your new home at Jacques in Ville-Marie. Studios, 1, 2, or 3-bedroom rentals with hi… | | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 40 photo(s) — https://mondev.ca/wp-content/uploads/2025/06/Fullum_ext_Cam_001_1-1.jpg | |
| 45 | 45 | | `amenities` | Commodités (JSON) | 100 % | ["Appliances", "Electricity", "Heating", "Air Conditioning", "Indoor parking", "Gym", "Po… | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true}, "appliances": {"fridge": true}, "a… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:51 — 43 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:40 — 41 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 49 au total, **43 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 47 % · prix 100 % · photos 100 % · description 95 % | |
| 58 | +- **Annonces en BD** : 49 au total, **41 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | +- **Complétude clé (actives)** : GPS 44 % · prix 100 % · photos 100 % · description 98 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/montagnais.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le Montagnais, résidences étudiantes — connecteur `montagnais` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 31/31 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API admin-ajax (WordPress)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:51 — 31 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:40 — 31 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 31 au total, **31 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/morguard.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Morguard (Morguard Living) — connecteur `morguard` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 84/84 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Morguard (morguardliving.ca) REIT pancanadien (~126 immeubles) sur plateforme Rentsync : le site est une SPA mais son backend officiel (website-gateway.rentsync.com, sans auth) est interrogé directement — /properties pour les immeubles, /units pour les unités disponibles, /photos pour les galeries. Seul le Québec est conservé (code postal H/J/G) : 15 immeubles — centre-ville de Montréal (Maisonneuve, Crescent, Mackay, des Pins…), Dollard-des-Ormeaux, Côte-Saint-Luc et Pointe-Claire. Une annonce par unité disponible (available == 1). | |
| 10 | + | |
| 11 | +- **Site** : https://www.morguardliving.ca | |
| 12 | +- **Page des annonces** : https://www.morguardliving.ca/residential | |
| 13 | +- **Secteurs couverts** : Montréal (centre-ville — Maisonneuve, Crescent, Mackay, des Pins), Dollard-des-Ormeaux, Côte-Saint-Luc, Pointe-Claire | |
| 14 | +- **Module** : `louka/connectors/morguard.py` — classe `MorguardConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://website-gateway.rentsync.com/v1/morguard_invest | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.morguardliving.ca · https://website-gateway.rentsync.com/v1/morguard_invest · https://s3.amazonaws.com/lws_lift/morguard_invest/images/gallery/1152 | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 84 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | La Mosaïque — 0 Bedroom, 1 Bathroom | | |
| 33 | +| `address` | Adresse civique | 100 % | 345a Rue De la Gauchetière Ouest, Montréal, QC H2Z 0A2 | | |
| 34 | +| `city` | Ville (normalisée) | 95 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 535 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 506 | | |
| 41 | +| `availability_date` | Date de disponibilité | 10 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.5042086 | | |
| 43 | +| `description` | Description | 100 % | Honour your own personal style at La Mosaïque, a stylish and upscale apartment community … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 14 photo(s) — https://s3.amazonaws.com/lws_lift/morguard_invest/images/gallery/1152/17816… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"fridge": true}, "balcony": true, "gym": true, "pets": "oui", "price_from… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.morguardliving.ca/residential/345-rue-de-la-gauchetiere-ouest | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:46 — 84 trouvées, +84 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 84 au total, **84 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync morguard` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='morguard' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/morin.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Constructions Morin — connecteur `morin` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 6/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:51 — 6 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:40 — 6 trouvées, +0 / ~0 / -1 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 83 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/mostra.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Mostra (Cogir) — connecteur `mostra` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie / Laval / Lanaudière / Montréal · Backend : direct · Annonces actives : 21/21 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Mostra (condos locatifs gérés par Cogir) Couvre TOUS les sites Mostra dans un seul connecteur : 1. mostra.ca (ColdFusion) — Mostra Longueuil et Mostra Candiac : pages /fr/disponibilites-condo-<ville>.html découvertes depuis l'accueil, puis rejeu de l'AJAX officiel POST /inc/ajax/unite.cfm (mêmes champs que le bouton « Plus de résultats ») qui retourne UNIQUEMENT les unités disponibles : emplacement, no d'unité, pi², ch./sb., modèle (3 1/2…), plan PDF et loyer. Une annonce par unité disponible. 2. Sites satellites WordPress/Elementor (un immeuble chacun) — prix « à partir de » par type d'unité, rendus serveur : - mostracentropolis.ca (Laval, 550 unités, phases A/B) ; - mostramascouche.ca (/appartements/) ; - mostramaisonneuve.ca (/choisir-mon-unite/, Hochelaga-Maisonneuve) — les types marqués « liste d'attente » sont exclus (aucune dispo). | |
| 10 | + | |
| 11 | +- **Site** : https://www.mostra.ca | |
| 12 | +- **Page des annonces** : https://www.mostra.ca/fr/disponibilites-condo-longueuil.html | |
| 13 | +- **Secteurs couverts** : Longueuil, Candiac, Laval (Centropolis), Mascouche, Hochelaga-Maisonneuve | |
| 14 | +- **Module** : `louka/connectors/mostra.py` — classe `MostraConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.mostra.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.mostra.ca · https://mostracentropolis.ca/ · https://mostramascouche.ca/appartements/ · https://mostramaisonneuve.ca/choisir-mon-unite/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : pagination par numéro de page | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 21 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Mostra Longueuil — 3 1/2 · unité 112 | | |
| 33 | +| `address` | Adresse civique | 100 % | Longueuil | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Longueuil | | |
| 35 | +| `sector` | Secteur / quartier | 29 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 725 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 52 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 57 % | 636 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://www.mostra.ca/DATA/PHOTO/125_photo.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 57 % | ["636 pi²"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 43 % | {} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.mostra.ca/fr/disponibilites-condo-longueuil.html | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:46 — 21 trouvées, +21 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 21 au total, **21 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync mostra` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='mostra' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/mountbridge.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# MountBridge (incl. ELEVA) — connecteur `mountbridge` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 34/34 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur MountBridge (mountbridge.ca) Gestionnaire montréalais (~75 immeubles : Montréal, Longueuil, Sainte-Thérèse…), inventaire complet incluant le projet ELEVA (2330 rue Tupper) — pas de connecteur séparé pour ELEVA. WordPress/Elementor + FacetWP mais les 75 URLs /property/<slug>/ sont dans le HTML statique de /properties/. Chaque fiche affiche ses types d'unités disponibles en rangées .e-loop-item : séquence de h6 label -> valeur (Beds, Baths, Surface Area, Price « Starting at $1,595 », Availability Date). Une annonce par type disponible, id stable <slug>-<beds>b-<baths>sdb. Les fiches sont mises en cache BD (self.detail) clé = hash des rangées. | |
| 10 | + | |
| 11 | +- **Site** : https://mountbridge.ca | |
| 12 | +- **Page des annonces** : https://mountbridge.ca/properties/ | |
| 13 | +- **Secteurs couverts** : Montréal (Ahuntsic, Ville-Marie, Villeray…), Longueuil, Boisbriand, Sainte-Thérèse | |
| 14 | +- **Module** : `louka/connectors/mountbridge.py` — classe `MountbridgeConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://mountbridge.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://mountbridge.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 34 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 9675 Papineau — 1 chambre(s) | | |
| 33 | +| `address` | Adresse civique | 100 % | 9675 Papineau 9675 rue Papineau, Montreal QC, H2B 3C8 | | |
| 34 | +| `city` | Ville (normalisée) | 91 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 94 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 97 % | 1 595 $ | | |
| 38 | +| `bedrooms` | Chambres | 94 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 9 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | 9675 Papineau — Where Montreal’s Industrial past meets contemporary living: Discover cont… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://mountbridge.ca/wp-content/uploads/2026/01/9675-papineau-image-1.WEBP | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Co-working space", "Elevator", "Exterior parking", "Gym", "Interior parking", "Pool tab… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "hot_water": true}, "appliances": {"fridge": true, "stov… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://mountbridge.ca/property/9675-papineau/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:46 — 34 trouvées, +34 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 34 au total, **34 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 97 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync mountbridge` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='mountbridge' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/msi.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # MSI Gestion immobilière — connecteur `msi` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 96/109 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 98/112 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur MSI Gestion immobilière (msimmobiliers.com) Crawl des pages de secte | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 96 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 98 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:52 — 96 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:40 — 98 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 109 au total, **96 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 112 au total, **98 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/multi_logis.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Multi-Logis — connecteur `multi_logis` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Côte-Nord · Backend : direct · Annonces actives : 27/27 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:52 — 27 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:40 — 27 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 27 au total, **27 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 96 % · photos 70 % · description 81 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/nelson.md
+80 −0
@@ -0,0 +1,80 @@ | ||
| 1 | +# Le Nelson — connecteur `nelson` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie (Brome-Missisquoi) · Backend : direct · Annonces actives : 0/0 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le Nelson (lenelson.com) Immeuble locatif de 5 étages au 111, rue Jean-Besré à Cowansville (Brome-Missisquoi). Site PHP statique rendu serveur : une page par étage (/appartements-a-louer/logements-a-louer-cowansville-<etage>) avec, pour chaque unité, un lien porteur de data-attributes (data-appt, data-area, data-room, data-bathroom, data-pdf, data-availability, data-type). ⚠️ HTTPS obligatoire (les URL http bouclent en 301) et User-Agent complet requis (406 sinon — géré par l'escalade de BaseConnector). Granularité : unité ; on ne retient que celles non « LOUÉ ». Prix non publiés. | |
| 10 | + | |
| 11 | +- **Site** : https://lenelson.com | |
| 12 | +- **Page des annonces** : https://lenelson.com/appartements-a-louer/logements-a-louer-cowansville-premiere-etage | |
| 13 | +- **Secteurs couverts** : Cowansville (111 rue Jean-Besré) | |
| 14 | +- **Module** : `louka/connectors/nelson.py` — classe `NelsonConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://lenelson.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://lenelson.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 0 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | — | — | | |
| 33 | +| `address` | Adresse civique | — | — | | |
| 34 | +| `city` | Ville (normalisée) | — | — | | |
| 35 | +| `sector` | Secteur / quartier | — | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | — | — | | |
| 37 | +| `price` | Loyer mensuel ($) | — | — | | |
| 38 | +| `bedrooms` | Chambres | — | — | | |
| 39 | +| `bathrooms` | Salles de bain | — | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | — | — | | |
| 41 | +| `availability_date` | Date de disponibilité | — | — | | |
| 42 | +| `lat` | GPS (lat/lng) | — | — | | |
| 43 | +| `description` | Description | — | — | | |
| 44 | +| `images` | Photos (JSON) | — | — | | |
| 45 | +| `amenities` | Commodités (JSON) | — | — | | |
| 46 | +| `details` | Détails additionnels (JSON) | — | — | | |
| 47 | +| `url` | URL de l'annonce source | — | — | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:46 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 0 au total, **0 actives** | |
| 59 | +- **Première ingestion** : — · **Dernière observation** : — | |
| 60 | +- **Complétude clé (actives)** : GPS — · prix — · photos — · description — | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +**Note du registre** : actif (0 annonce au test : 52 unités toutes louées) | |
| 68 | + | |
| 69 | +Rejouer la source seule : `python3 run.py sync nelson` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='nelson' ORDER BY ts DESC LIMIT 5;`). | |
| 70 | + | |
| 71 | +## Licence, attribution & conditions | |
| 72 | + | |
| 73 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 74 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 75 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 76 | +- Retrait sur demande : contact@spboucher.ai. | |
| 77 | + | |
| 78 | +## Historique | |
| 79 | + | |
| 80 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/nexliving.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# NexLiving Communities (REIT) — connecteur `nexliving` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Outaouais / Abitibi-Témiscamingue · Backend : direct · Annonces actives : 11/11 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur NexLiving Communities (residential.nexliving.ca) — REIT pancanadien ; côté Québec : Gatineau (Pointe-Gatineau, Place du Golf, Saint-James, Prado, Nelson-Morin, Progrès, Futaie, Lanctot, JGR), Thurso (Fraser) et Val-d'Or (Roland-Audet). Site Yardi RentCafe derrière Cloudflare (403 direct) : tout passe par Scrapfly (ASP), SANS rendu JS — RentCafe embarque un bloc SEO rendu serveur (#list-view-cards-hidden, li.property-box-hidden) avec nom, adresse complète, lits/sdb/pi², prix « à partir de », téléphone et vignette. Une annonce par propriété (uid = slug RentCafe stable). Pages parcourues : /qc/gatineau/apartments, /qc/thurso/apartments, /qc/val-d'or/apartments — SEULES les fiches /apartments/qc/ passent (les parcs ON et NB du REIT sont exclus), avec la ville réelle par annonce. La fiche propriété (galerie, description) passe par self.detail() (cache BD) avec budget Scrapfly par synchronisation. | |
| 10 | + | |
| 11 | +- **Site** : https://residential.nexliving.ca | |
| 12 | +- **Page des annonces** : https://residential.nexliving.ca/qc/gatineau/apartments | |
| 13 | +- **Secteurs couverts** : Gatineau (Pointe-Gatineau, Place du Golf, Saint-James, Prado, Nelson-Morin, Progrès, Futaie, Lanctot, JGR), Thurso (Fraser), Val-d'Or (Roland-Audet) | |
| 14 | +- **Module** : `louka/connectors/nexliving.py` — classe `NexLivingConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://residential.nexliving.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://residential.nexliving.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct | |
| 24 | +- **Politesse** : 1.0 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 11 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Pointe-Gatineau | | |
| 33 | +| `address` | Adresse civique | 100 % | 499 - 541 Rue de Pointe-Gatineau, Gatineau, QC J8T 2B1 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Gatineau | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 27 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 73 % | 1 849 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 3 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 73 % | 1300 | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Apartment — 3.0Beds - 3.0Beds — 1.00Baths - 1.00Baths — 1,300 Sq. Ft. | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 20 photo(s) — https://resource.rentcafe.com/image/upload//q_auto,f_auto,w_600,h_400,c_lim… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"contact": {"phone": "819-663-7777"}} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://residential.nexliving.ca/apartments/qc/gatineau/pointe-gatineau/default.aspx | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:47 — 11 trouvées, +11 / ~0 / -0 | |
| 53 | +- **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 11 au total, **11 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 73 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync nexliving` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='nexliving' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 1.0 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/niddamour.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Nid d'Amour — connecteur `niddamour` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 14/14 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:52 — 14 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:40 — 14 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 14 au total, **14 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/nomade.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Nomade Gestion immobilière — connecteur `nomade` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 10/10 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Nomade Gestion Immobilière (nomadegestion.com — 16+ immeubles à Québec : Beauport, Charlesbourg, Val-Bélair, Lebourgneuf… dont Le Melozio, L'Astral, Le Nordet ph. 1-2 et Le Bélair qui ont leurs microsites). Site Squarespace : la liste des prix et disponibilités est publiée dans un PDF dont le NOM CHANGE chaque mois (ex. /s/Liste-site-web-juillet-26.pdf) — on découvre le lien depuis la page d'accueil (bouton « Liste de prix et disponibilités »), puis on parse le tableau du PDF avec pdfplumber : en-tête d'immeuble (« L'Astral - 2500 de Beaubassin - Info ou visite 418-952-2701 »), rangée « Inclus dans le prix : … », rangées d'unités (type | étage(s) | prix ou fourchette | disponibilité) ou « Aucun logement disponible dans cet immeuble ». Photos : page de l'immeuble (interne ou microsite) via le cache BD des pages détail. | |
| 10 | + | |
| 11 | +- **Site** : https://nomadegestion.com | |
| 12 | +- **Page des annonces** : https://nomadegestion.com/ | |
| 13 | +- **Secteurs couverts** : Québec : Charlesbourg (Gros-Pin, Louis-XIV), Limoilou, Vanier, Val-Bélair, Neufchâtel — liste prix/disponibilités publiée en PDF Squarespace (lien découvert dynamiquement) | |
| 14 | +- **Module** : `louka/connectors/nomade.py` — classe `NomadeConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://nomadegestion.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://nomadegestion.com · https://www.lastral.ca · https://www.lenordet.com · https://www.lebelair.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 10 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — L'Astral | | |
| 33 | +| `address` | Adresse civique | 100 % | 2500, rue de Beaubassin, Québec | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Québec | | |
| 35 | +| `sector` | Secteur / quartier | 80 % | Beauport | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 425 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-10-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Étage(s) : 5 | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 11 photo(s) — https://images.squarespace-cdn.com/content/v1/66181cd14e66c64b89b937f5/fb8a… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["1 stationnement intérieur", "Internet", "Air climatisé", "1 rangement", "Étage : 5"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"internet": true}, "ac": true, "storage": true, "parking": {"available": … | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.lastral.ca | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:47 — 10 trouvées, +10 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 10 au total, **10 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync nomade` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='nomade' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/novelo.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Appartements Novelo — connecteur `novelo` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Saguenay–Lac-Saint-Jean · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:52 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:40 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 2 en erreur |
| 62 | 62 | |
added
docs/connecteurs/novo_stjean.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# NOVO St-Jean (Atimco) — connecteur `novo_stjean` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 4/4 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur NOVO St-Jean (novostjean.com) Condos locatifs tout-inclus au 201, rue Saint-Georges, Saint-Jean-sur-Richelieu (projet Atimco). ⚠️ Compagnie distincte du connecteur `novelo`. WordPress + Bricks rendu serveur : la page d'accueil liste 4 typologies en blocs .units_item — « 3½ », « 3½ + den », « 4½ », « 4½ + den » avec prix plancher (« À partir de 1370$ / mois »). Une annonce par typologie (pas d'inventaire unité par unité public) ; les inclusions (électroménagers, eau chaude, électricité, clim, câble, Wi-Fi) viennent de la grille .inclusion_grid-item et la mention « Disponible dès maintenant » sert de disponibilité. | |
| 10 | + | |
| 11 | +- **Site** : https://www.novostjean.com | |
| 12 | +- **Page des annonces** : https://www.novostjean.com/ | |
| 13 | +- **Secteurs couverts** : Saint-Jean-sur-Richelieu | |
| 14 | +- **Module** : `louka/connectors/novo_stjean.py` — classe `NovoStJeanConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.novostjean.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.novostjean.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — NOVO St-Jean | | |
| 33 | +| `address` | Adresse civique | 100 % | 201, rue Saint-Georges, Saint-Jean-sur-Richelieu | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Jean-sur-Richelieu | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 370 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://www.novostjean.com/wp-content/uploads/2024/10/hero-Aire-commune-46-… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["5 électroménagers", "Eau chaude", "Électricité", "Air climatisé", "Câblodistribution (V… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"electricity": true, "hot_water": true, "internet": true, "cable": true},… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.novostjean.com/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:47 — 4 trouvées, +4 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 4 au total, **4 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync novo_stjean` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='novo_stjean' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/obohec.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# O'bohec (Voyer & Tremblay) — connecteur `obohec` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 1/1 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur O'bohec (obohec.ca) — Voyer & Tremblay Trois immeubles locatifs sur le boulevard Michèle-Bohec, Blainville (27 unités affichées : studio, 1 et 2 chambres). WordPress (thème maison « trema ») rendu serveur : /projets-locatifs/obohec/ liste des cartes .item-listing-unite groupées par en-tête .item-unites-filter (data-immeuble-id → Immeuble 1/2/3, classe filter-<id> sur la carte). Carte : .title-unite (Studio/1 chambre/2 chambres), .number-unite (« #105 Tout meublé Disponible septembre 2026 »), .disponiblite-unite (Loué/Disponible), caractéristiques .car-* (chambres, bain, balcon, stationnement, orientation, superficie) et plan image + PDF. AUCUN prix publié (« Prix sur demande »). On exclut « BUREAU DE LOCATION » et les unités louées. Granularité : unité. ⚠️ Le volet VENTE du site est ignoré. | |
| 10 | + | |
| 11 | +- **Site** : https://obohec.ca | |
| 12 | +- **Page des annonces** : https://obohec.ca/projets-locatifs/obohec/ | |
| 13 | +- **Secteurs couverts** : Blainville (boulevard Michèle-Bohec — 3 immeubles) | |
| 14 | +- **Module** : `louka/connectors/obohec.py` — classe `ObohecConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://obohec.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://obohec.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | O'bohec — Immeuble 1 — Unité #105 (Studio) | | |
| 33 | +| `address` | Adresse civique | 100 % | Boulevard Michèle-Bohec, Blainville | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Blainville | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 539 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité #105 — Immeuble 1 — Studio — Tout meublé | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://obohec.ca/wp-content/uploads/2020/04/105-2.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Tout meublé", "Balcon/terrasse : 1", "Stationnement Extérieur", "Orientation Nord"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"balcony": true, "furnished": true, "parking": {"available": true, "type": "extérieur"},… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://obohec.ca/projets-locatifs/obohec/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:47 — 1 trouvées, +1 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 1 au total, **1 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync obohec` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='obohec' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/ocartier.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# OCartier (phase 2) — connecteur `ocartier` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laval · Backend : direct · Annonces actives : 4/4 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur OCartier 2 (ocartier.ca — TDR Développements). Tour locative de 200 appartements au 30, rue St-Hubert à Laval (métro Cartier, secteur Pont-Viau), loyer tout inclus (électricité, chauffage, climatisation, eau, internet). WordPress/Elementor rendu serveur : la page /plans/ affiche une fourchette de prix par TYPOLOGIE (« Studios / 3 1/2 / 4 1/2 / 5 1/2 », « À partir de X $ jusqu'à Y $ »). Granularité TYPOLOGIE. | |
| 10 | + | |
| 11 | +- **Site** : https://ocartier.ca | |
| 12 | +- **Page des annonces** : https://ocartier.ca/plans/ | |
| 13 | +- **Secteurs couverts** : Laval (Pont-Viau, 30 rue St-Hubert) | |
| 14 | +- **Module** : `louka/connectors/ocartier.py` — classe `OCartierConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://ocartier.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://ocartier.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Studio — OCartier 2, appartements locatifs à Laval | | |
| 33 | +| `address` | Adresse civique | 100 % | 30, rue St-Hubert | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Laval | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Pont-Viau | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 630 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | OCartier 2 propose 200 appartements locatifs haut de gamme à Laval, du studio au 5½, à de… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 3 photo(s) — https://ocartier.ca/wp-content/uploads/2025/09/Home-1-Streamline-Sharp-Remix… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Électricité incluse", "Chauffage inclus", "Climatisation incluse", "Eau incluse", "Inte… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "internet": true}, "ac": true, "pri… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://ocartier.ca/plans/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:47 — 4 trouvées, +4 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 4 au total, **4 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync ocartier` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='ocartier' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/oklouer.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # OK Louer (location temporaire) — connecteur `oklouer` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 41/41 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:52 — 41 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:41 — 41 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 41 au total, **41 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 98 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/omhm.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # OMHM — logements abordables — connecteur `omhm` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 3/4 |
| 6 | 6 | |
@@ -49,16 +49,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:52 — 3 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:41 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 67 % · prix 100 % · photos 0 % · description 0 % |
| 61 | −- **Runs journalisés (60 derniers)** : 42, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
added
docs/connecteurs/org_dupuis.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Organisation Dupuis — connecteur `org_dupuis` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie / Estrie / multi-régions · Backend : direct · Annonces actives : 49/49 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Organisation Dupuis (organisationdupuis.ca — promoteur/gestionnaire de Granby ; portail de location locationorganisationdupuis.bstk.io sur la plateforme Building Stack, même famille que les portails des connecteurs summum.py / urban_services.py / edifia.py) : - /Listing/Listings embarque `var units = [...]` (une entrée par appartement annoncé : ApartmentId stable, prix, pi², chambres, sdb, adresse complète avec GPS, contact de location, photo) ; - les pages immeuble /b/<id> donnent la date de disponibilité par unité et les commodités de l'immeuble (une requête par immeuble, via le cache self.detail, plafonnée). Parc étendu au-delà de Granby/Bromont/Waterloo : Sherbrooke, Terrebonne, L'Assomption, Bécancour, Sorel-Tracy, Trois-Rivières, Victoriaville… ⚠️ Le portail liste aussi Edmundston (Nouveau-Brunswick) : tout ce qui n'est pas Province == QC est exclu. | |
| 10 | + | |
| 11 | +- **Site** : https://www.organisationdupuis.ca | |
| 12 | +- **Page des annonces** : https://locationorganisationdupuis.bstk.io/Listing/Listings | |
| 13 | +- **Secteurs couverts** : Granby, Bromont, Waterloo, Sherbrooke, Terrebonne, L'Assomption, Bécancour, Sorel-Tracy, Trois-Rivières, Victoriaville (Edmundston N.-B. exclu) | |
| 14 | +- **Module** : `louka/connectors/org_dupuis.py` — classe `OrgDupuisConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://locationorganisationdupuis.bstk.io | |
| 20 | +- **URLs de départ (constantes du module)** : https://locationorganisationdupuis.bstk.io | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 49 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 60-94 Leo-Gendreau Inc — Unité 62 | | |
| 33 | +| `address` | Adresse civique | 100 % | 60 Rue Léo-Gendreau Nord, Granby, QC J2J 0W8, Canada | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Granby | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 565 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 82 % | 1050 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.4201767 | | |
| 43 | +| `description` | Description | 100 % | 1050 pi² — 2 chambre(s) — 1 salle(s) de bain | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 3 photo(s) — https://wfiles.buildingstack.com/resources/image/CJDlGMT1UKfqOd9bAtPBGa5QT6y… | | |
| 45 | +| `amenities` | Commodités (JSON) | 71 % | ["Arrêt de bus à proximité", "Parc à proximité", "Petits animaux autorisés", "Grands chie… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"pets": "conditions", "parking": {"available": true, "type": "extérieur"}, "bedrooms": 2… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://locationorganisationdupuis.bstk.io/b/202482129311007900926/714755 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 49 trouvées, +49 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 49 au total, **49 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync org_dupuis` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='org_dupuis' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/osgoode.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Osgoode Properties — connecteur `osgoode` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:52 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:41 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/oxford.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Appartements Oxford — connecteur `oxford` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,8 +48,8 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:53 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:41 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `_MAX_FICHES` = 12 |
@@ -57,7 +57,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | 59 | - **Annonces en BD** : 2 au total, **2 actives** |
| 60 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 60 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 61 | 61 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 62 | 62 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 63 | 63 | |
modified
docs/connecteurs/per.md
+6 −6
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Les Immeubles Paul-E. Richard — connecteur `per` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 3/3 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 3/4 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:53 — 3 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:41 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 4 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/phg.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Habitations PHG — connecteur `phg` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 8/8 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Habitations PHG (habitationsphg.com) — constructeur-locateur de Deux-Montagnes (OXIA, Carré de la Gare…). La page « Louer une unité » embarque le widget Livya (app.livya.com, ex-RealVuu, data-client="habitations-phg") : même patron que atimco/cloria — flux RSC des pages /plans du projet « portefeuille » (voir _livya.py). Granularité UNITÉ : prix, pièces, pi², adresse civique, GPS, plans. | |
| 10 | + | |
| 11 | +- **Site** : https://habitationsphg.com | |
| 12 | +- **Page des annonces** : https://app.livya.com/habitations-phg | |
| 13 | +- **Secteurs couverts** : Deux-Montagnes et environs (portefeuille Livya) | |
| 14 | +- **Module** : `louka/connectors/phg.py` — classe `PhgConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : sitemap XML + pages HTML | |
| 19 | +- **Endpoint de base** : https://habitationsphg.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://habitationsphg.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 8 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Habitations PHG (406 7e Avenue) — unité 302 | | |
| 33 | +| `address` | Adresse civique | 100 % | 406 7e Avenue, Deux-Montagnes, J7R 3J1 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Deux-Montagnes | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 195 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 3 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 2 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1270 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.5483 | | |
| 43 | +| `description` | Description | 100 % | 3e étage \| Modèle 5 1/2 \| 3 chambre(s) \| 2 salle(s) de bain | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://d10eh8wo1l4y8c.cloudfront.net/projects/eee4ee24-61e6-46a5-998b-b4c7… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Cabanon extérieur", "Très grand", "Stores", "Bain et douche", "2 stationnements extérie… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"fridge": true}, "parking": {"available": true, "type": "extérieur"}, "ge… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://app.livya.com/fr/habitations-phg/projects/portefeuille/plans | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 8 trouvées, +8 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 8 au total, **8 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync phg` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='phg' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/picard.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Picard Immobilier — connecteur `picard` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 29/34 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:53 — 29 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:41 — 29 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 34 au total, **29 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/place_barrage.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Place du Barrage — connecteur `place_barrage` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 10/10 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Place du Barrage (placedubarrage.com) Immeuble locatif au 2, rue Vertu à Windsor (Estrie), géré par Sphère immobilier. Site Wix rendu serveur : la page /appartements liste 24 cartes (répéteur Wix « wixui-repeater__item ») — « Appartement 101-A », courte description, prix (« 1475$ ») ou « LOUÉ », lien vers la fiche /appartements/appartement-<no>-<lettre>. ⚠️ Le <title> du gabarit Wix mentionne un autre projet (Le Connaught) : ignorer. On dérive l'URL de la fiche du numéro affiché sur la carte (les hrefs peuvent être désalignés). Granularité : unité ; prix affichés, typologies non publiées. | |
| 10 | + | |
| 11 | +- **Site** : https://www.placedubarrage.com | |
| 12 | +- **Page des annonces** : https://www.placedubarrage.com/appartements | |
| 13 | +- **Secteurs couverts** : Windsor (2 rue Vertu) | |
| 14 | +- **Module** : `louka/connectors/place_barrage.py` — classe `PlaceBarrageConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.placedubarrage.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.placedubarrage.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 10 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Appartement 101-A — Place du Barrage | | |
| 33 | +| `address` | Adresse civique | 100 % | 2, rue Vertu, Windsor | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Windsor | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 475 $ | | |
| 38 | +| `bedrooms` | Chambres | 0 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Appartement situé au premier étage de l'immeuble. | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 2 photo(s) — https://static.wixstatic.com/media/9efd1e_f6b3d8ed14d34cee98b8e2d12103a06d~m… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"floor": "Étage 1"} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.placedubarrage.com/appartements/appartement-101-a | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 10 trouvées, +10 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 10 au total, **10 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync place_barrage` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='place_barrage' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/place_florimay.md
+3 −3
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Place Florimay — connecteur `place_florimay` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 0/0 |
| 6 | 6 | |
@@ -48,8 +48,8 @@ Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:53 — 0 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:41 — 0 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
modified
docs/connecteurs/plan_a.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Plan A Immobilier — connecteur `plan_a` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 11/11 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:53 — 11 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:41 — 11 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 11 au total, **11 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 91 % · prix 91 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/plantation.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Domaine de la Plantation — connecteur `plantation` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 2/2 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Domaine de la Plantation (domainedelaplantation.ca) — Shawinigan, secteur Saint-Georges-de-Champlain (entre Grand-Mère et le Lac-à-la-Tortue). Nouveau quartier de 4½ neufs de Construction Michael Massicotte. Site vitrine Pixpa page unique rendu serveur : section « Prix » avec paires <h3> typologie (« Demi sous-sol 4 ½ » / « Étages 4 ½ ») + <h4> prix (« 1295$ par mois »), section « Inclusions » en items, photos Pixpa en data-src (lazy-load). Granularité = typologie (pas d'inventaire par unité publié). external_id = typologie en slug — stable. | |
| 10 | + | |
| 11 | +- **Site** : https://www.domainedelaplantation.ca | |
| 12 | +- **Page des annonces** : https://www.domainedelaplantation.ca/ | |
| 13 | +- **Secteurs couverts** : Shawinigan (Saint-Georges-de-Champlain) | |
| 14 | +- **Module** : `louka/connectors/plantation.py` — classe `PlantationConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.domainedelaplantation.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.domainedelaplantation.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Demi sous-sol 4 ½ — Domaine de la Plantation | | |
| 33 | +| `address` | Adresse civique | 100 % | Saint-Georges-de-Champlain, Shawinigan | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Shawinigan | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Saint-Georges-de-Champlain | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 295 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Entre la vitalité de Grand-Mère et la douceur du Lac-à-la-Tortue, un nouveau quartier pre… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://px-web-images1.pixpa.com/3-17czPzjUB2bTecC2VKZEjOkRo5cqiFHcGB_Ws1F1… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Aspirateur central", "Internet", "Garage & stationnement", "Thermopompe & échangeur d'a… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"internet": true}, "ac": true, "pets": "conditions", "parking": {"availab… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.domainedelaplantation.ca/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 2 trouvées, +2 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 2 au total, **2 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync plantation` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='plantation' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/port_de_mer.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Port de Mer — connecteur `port_de_mer` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 1/1 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Port de Mer (portdemer.ca) Complexe locatif unique de 389 unités au 99-101 Place Charles-LeMoyne, Longueuil — directement en face du métro Longueuil. Site une-page (CMS Prog Expert) rendu serveur : description, caractéristiques, fourchette de prix « À partir de : 1515 $ - 2040 $ ». Aucun inventaire par unité publié (sitemap-Room vide) → une annonce par immeuble, comme brochu.py. | |
| 10 | + | |
| 11 | +- **Site** : https://portdemer.ca | |
| 12 | +- **Page des annonces** : https://portdemer.ca/fr/accueil | |
| 13 | +- **Secteurs couverts** : Longueuil (Place Charles-LeMoyne, face au métro) — 389 unités | |
| 14 | +- **Module** : `louka/connectors/port_de_mer.py` — classe `PortDeMerConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : sitemap XML + pages HTML | |
| 19 | +- **Endpoint de base** : https://portdemer.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://portdemer.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Port de Mer — appartements face au métro Longueuil | | |
| 33 | +| `address` | Adresse civique | 100 % | 99-101, Place Charles-LeMoyne, Longueuil | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Longueuil | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 515 $ | | |
| 38 | +| `bedrooms` | Chambres | 0 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Confort familial, accessibilité urbaine et animations estivales, dans un seul et unique l… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 6 photo(s) — https://portdemer.ca/mod/file/SubBlockImage/704afe073992cbe4813cae2f7715336f… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Certifié BOMA BEST", "Immeuble locatif certifié", "Chargeur de véhicule électrique", "S… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"gym": true, "laundry": true, "pets": "oui", "parking": {"available": true, "included": … | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://portdemer.ca/fr/accueil | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 1 trouvées, +1 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 1 au total, **1 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync port_de_mer` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='port_de_mer' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/primo.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Primo Immobilier — Lumicité Condominiums et Quartier Trinité — connecteur `primo` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 2/2 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Primo Immobilier (primoimmobilier.ca — condos locatifs de luxe en Montérégie : Lumicité Condominiums à Saint-Mathieu-de-Beloeil et Quartier Trinité à Saint-Basile-le-Grand). WordPress rendu serveur mais SANS inventaire d'unités : chaque page projet affiche un seul prix plancher « À partir de 2075$/mois » (les typologies 3½/4½/5½ n'apparaissent que dans le formulaire, sans prix). Granularité = PROJET (une annonce par projet, prix « à partir de »). external_id = slug de la page projet — stable. | |
| 10 | + | |
| 11 | +- **Site** : https://primoimmobilier.ca | |
| 12 | +- **Page des annonces** : https://primoimmobilier.ca | |
| 13 | +- **Secteurs couverts** : Saint-Mathieu-de-Beloeil (Lumicité Condominiums), Saint-Basile-le-Grand (Quartier Trinité) — condos locatifs de luxe, granularité projet (prix « à partir de ») | |
| 14 | +- **Module** : `louka/connectors/primo.py` — classe `PrimoConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://primoimmobilier.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://primoimmobilier.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Louer un condo luxueux à Saint-Mathieu-de-Beloeil sur le site de Lumicité Condominiums | | |
| 33 | +| `address` | Adresse civique | 0 % | — | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Mathieu-de-Beloeil | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 075 $ | | |
| 38 | +| `bedrooms` | Chambres | 0 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Lumicité Condominiums à Saint-Mathieu-de-Beloeil — condos locatifs de luxe de Primo Immob… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://primoimmobilier.ca/wp-content/themes/primoimmo/s/primoimmo/ss/fbsha… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"elevator": true, "storage": true, "parking": {"available": true, "type": "intérieur"}, … | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://primoimmobilier.ca/saint-mathieu-de-beloeil/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 2 trouvées, +2 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 2 au total, **2 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync primo` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='primo' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/pro_urbain.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Gestion Pro-Urbain — connecteur `pro_urbain` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 18/18 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Gestion Pro-Urbain (gestionpro-urbain.com). Gestionnaire locatif de Lanaudière / Rive-Nord / Grand Montréal (Charlemagne, Repentigny, Berthierville, Saint-Paul, Saint-Jacques, Saint-Charles-Borromée…). Site October CMS (plugin maison « nerd/realestate ») rendu serveur : /fr/proprietes liste des cartes par UNITÉ (adresse, ville, code postal, prix/mois, type n½, sdb, chambres, stationnements, disponibilité), page /fr/propriete/<slug> pour la description, les inclusions (puces « • ») et les photos (via cache detail). Granularité UNITÉ, external_id = slug de la fiche. | |
| 10 | + | |
| 11 | +- **Site** : https://gestionpro-urbain.com | |
| 12 | +- **Page des annonces** : https://gestionpro-urbain.com/fr/proprietes | |
| 13 | +- **Secteurs couverts** : Charlemagne, Repentigny, Berthierville, Saint-Paul, Saint-Jacques, Saint-Ambroise-de-Kildare, Saint-Charles-Borromée | |
| 14 | +- **Module** : `louka/connectors/pro_urbain.py` — classe `ProUrbainConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://gestionpro-urbain.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://gestionpro-urbain.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 18 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — 50 du Sacré-Coeur, Charlemagne | | |
| 33 | +| `address` | Adresse civique | 100 % | 50 du Sacré-Coeur | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Charlemagne | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 400 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 17 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Projet de 20 unités locatives dans un quartier en plein essor, Charlemagne. Près d’une mu… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 14 photo(s) — https://gestionpro-urbain.com/storage/app/uploads/public/69d/fb5/6f1/69dfb5… | | |
| 45 | +| `amenities` | Commodités (JSON) | 94 % | ["WIFI haute vitesse et illimité", "Lave-vaisselle, laveuse et sécheuse", "Un espace de s… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"internet": true}, "appliances": {"dishwasher": true, "washer_dryer": tru… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://gestionpro-urbain.com/fr/propriete/charlemagne-3-demi-sous-sol-2 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 18 trouvées, +18 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 18 au total, **18 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync pro_urbain` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='pro_urbain' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/probloc.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Probloc CL inc. — connecteur `probloc` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Centre-du-Québec · Backend : direct · Annonces actives : 24/24 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Probloc CL inc. (probloccl.com) Gestionnaire immobilier de Bécancour (Centre-du-Québec) — parc de plex et d'immeubles répartis dans les secteurs Gentilly / Croix-du-Sud / centre. Le site vitrine probloccl.com (Next.js) renvoie « Logements à louer » vers le portail Proprio Expert de Magex Technologies : https://peweb.magextechnologies.com/RentalListings/Ffllf1/Probloc-Cl-Inc Même plateforme ASP.NET WebForms rendue serveur que leviu.py : une carte par unité disponible avec prix (« 1 150,00 $ / mois »), adresse complète, taille (« 4 ½ (2 Chambres, 1 200,00 pi²) » ou « 1 Chambre » pour les chambres), animaux, description, date « Disponible: … » et photo. Pas d'URL de fiche propre (__doPostBack) : l'URL d'annonce pointe sur le portail avec un fragment. external_id = adresse en slug (aucun identifiant public stable exposé — même convention que leviu). | |
| 10 | + | |
| 11 | +- **Site** : https://peweb.magextechnologies.com/RentalListings/Ffllf1/Probloc-Cl-Inc | |
| 12 | +- **Page des annonces** : https://peweb.magextechnologies.com/RentalListings/Ffllf1/Probloc-Cl-Inc | |
| 13 | +- **Secteurs couverts** : Bécancour (Gentilly et autres secteurs) | |
| 14 | +- **Module** : `louka/connectors/probloc.py` — classe `ProblocConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://probloccl.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://peweb.magextechnologies.com/RentalListings/Ffllf1/Probloc-Cl-Inc · https://peweb.magextechnologies.com · https://probloccl.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 1.0 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 24 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 1095-1 Av. Des Hirondelles | | |
| 33 | +| `address` | Adresse civique | 100 % | 1095-1 Av. Des Hirondelles, Bécancour | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Bécancour | | |
| 35 | +| `sector` | Secteur / quartier | 17 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Chambre | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 550 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 62 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 62 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Description: chambre travailleur, C/E, 1er étage, Aménagement complet ** CHAMBRE TRAVAILL… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://peweb.magextechnologies.com/Handlers/ImageDownloadHandler.ashx?dID=2… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"pets": "non"} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://peweb.magextechnologies.com/RentalListings/Ffllf1/Probloc-Cl-Inc#1095-1-av-des-hi… | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 24 trouvées, +24 / ~0 / -0 | |
| 53 | +- **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 24 au total, **24 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync probloc` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='probloc' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 1.0 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/progim.md
+8 −8
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Progim — connecteur `progim` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 65/73 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 63/73 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Gestion Immobilière Progim (progimannonces.bstk.io — plateforme Bu | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 65 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 63 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -37,7 +37,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 450 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 71 % | 737 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 73 % | 737 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.441216 | |
| 43 | 43 | | `description` | Description | 94 % | Situé dans le secteur paisible et recherché de Dorval, cet appartement bénéficie d’un emp… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:53 — 63 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:41 — 63 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 73 au total, **65 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 73 au total, **63 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 94 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/projection_immo.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Projection Immobilière — connecteur `projection_immo` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 1/1 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:53 — 1 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:42 — 1 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 1 au total, **1 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/promenade_des_forts.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Promenade des Forts — connecteur `promenade_des_forts` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:54 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:42 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/prona.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Gestion Prona — connecteur `prona` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 8/8 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Gestion Prona (gestionprona.ca) Gestionnaire multi-régions : Cowansville, Saint-Jean-sur-Richelieu, Saint-Hubert, Candiac, Saint-Hyacinthe (Montérégie) + Montréal, Québec, Blainville. WordPress + thème immobilier Houzez rendu serveur (même plateforme qu'immeubles_bc) : la page /properties/ expose des cartes .item-listing-wrap (data-listid STABLE, titre, adresse taxonomique, prix, chambres/sdb). La fiche /property/<slug>/ (via cache BD) fournit la VILLE structurée (champ « Ville » du bloc adresse — la taxonomie de la carte liste mêle quartier/arrondissement/MRC), la description, les caractéristiques, le GPS et la galerie. Les locaux commerciaux/bureaux sont exclus. | |
| 10 | + | |
| 11 | +- **Site** : https://gestionprona.ca | |
| 12 | +- **Page des annonces** : https://gestionprona.ca/properties/ | |
| 13 | +- **Secteurs couverts** : Cowansville, Saint-Jean-sur-Richelieu, Saint-Hubert, Candiac, Saint-Hyacinthe, Montréal, Québec, Lévis, Blainville | |
| 14 | +- **Module** : `louka/connectors/prona.py` — classe `PronaConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://gestionprona.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://gestionprona.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 8 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Grand 4.5 disponible maintenant au 1249B Curé-Labelle, Blainville | | |
| 33 | +| `address` | Adresse civique | 100 % | 1249, Boulevard du Curé-Labelle, Blainville, Thérèse-De Blainville, Laurentides, Québec, … | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Blainville | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 051 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 12 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 75 % | 900 | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.684353 | | |
| 43 | +| `description` | Description | 100 % | Voici un grand 4.5 moderne disponible maintenant. Il s’agit d’une cession de bail. 📍 Empl… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 11 photo(s) — https://gestionprona.ca/wp-content/uploads/2022/03/73452-pronabuilding_blan… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["2 chambre(s)", "1 salle(s) de bain", "Murale"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 88 % | {"ac": true, "balcony": true, "pets": "conditions", "parking": {"available": true, "type"… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://gestionprona.ca/property/grand-4-5-disponible-maintenant-au-1249b-cure-labelle-bl… | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 8 trouvées, +8 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 8 au total, **8 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync prona` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='prona' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/proprio_direct.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Proprio Direct (location) — connecteur `proprio_direct` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 183/193 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 184/199 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,14 +25,14 @@ Proprio Direct (propriodirect.com) — LOCATION L'inventaire (alimenté par le f | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 183 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 184 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 31, Boul. des Hauteurs | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 31, Boul. des Hauteurs | |
| 34 | 34 | | `city` | Ville (normalisée) | 99 % | Saint-Jérôme | |
| 35 | −| `sector` | Secteur / quartier | 61 % | Lafontaine | | |
| 35 | +| `sector` | Secteur / quartier | 60 % | Lafontaine | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 99 % | 3½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 095 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 99 % | 1 | |
@@ -42,22 +42,22 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.8090705871582 | |
| 43 | 43 | | `description` | Description | 92 % | — | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 7 photo(s) — https://cdn.propriodirect.com/properties/22315758/large/001_ADD432ADA40CBE0D… | |
| 45 | −| `amenities` | Commodités (JSON) | 77 % | ["Stationnement"] | | |
| 45 | +| `amenities` | Commodités (JSON) | 74 % | ["Stationnement"] | | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"parking": {"available": true}, "Niveau": "Sous-sol", "Zonage": "Résidentiel", "Approvis… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://propriodirect.com/laurentides/saint-jerome/appartement-a-vendre/31-boul-des-haute… | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:54 — 183 trouvées, +0 / ~1 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:42 — 183 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.4 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `MAX_PAGES` = 60 |
| 56 | 56 | |
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | −- **Annonces en BD** : 193 au total, **183 actives** | |
| 60 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Annonces en BD** : 199 au total, **184 actives** | |
| 60 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-24 | |
| 61 | 61 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 92 % |
| 62 | 62 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 63 | 63 | |
modified
docs/connecteurs/quanta.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Quanta — connecteur `quanta` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 2/2 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:54 — 2 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:42 — 2 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 2 au total, **2 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/quartier_7.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Quartier 7 (condos locatifs, avenue de la Gare) — connecteur `quartier_7` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 89/89 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Quartier 7 (quartier7mascouche.com — Constructions Lacourse, 9 phases de condos locatifs au 1451 avenue de la Gare à Mascouche, ~650 unités). La page « condos neufs à louer » affiche ses unités via le widget Planpoint : on interroge l'API JSON publique (app.planpoint.io/api/groups/find, 1 requête/sync, voir _planpoint.py). Granularité UNITÉ : pi², chambres, salle(s) de bain, plans et inclusions par unité, date de livraison, adresse + lat/lng par phase ; la source ne publie AUCUN prix (price null chez Planpoint, « sans prix publics » — rien d'inventé). Seules les unités « Available » sont retenues. | |
| 10 | + | |
| 11 | +- **Site** : https://quartier7mascouche.com | |
| 12 | +- **Page des annonces** : https://quartier7mascouche.com/condos-neufs-a-louer-mascouche/ | |
| 13 | +- **Secteurs couverts** : Mascouche | |
| 14 | +- **Module** : `louka/connectors/quartier_7.py` — classe `Quartier7Connector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://quartier7mascouche.com/condos-neufs-a-louer-mascouche/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://quartier7mascouche.com/condos-neufs-a-louer-mascouche/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 89 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Quartier 7 - Phase 6 — Unité 205 | | |
| 33 | +| `address` | Adresse civique | 100 % | 1451 Avenue de la Gare | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Mascouche | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 794 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.729936 | | |
| 43 | +| `description` | Description | 100 % | Unité 205 — Quartier 7 - Phase 6, Mascouche. Étage 2, 794 pi², 1 salle(s) de bain. Inclus… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 30 photo(s) — https://storage.googleapis.com/planpoint-bucket/203-1_finalcc4-scaled-16821… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["5 électroménagers", "Stationnement intérieur", "Internet", "Chaînes TV HD", "Eau chaude… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true, "internet": true}, "appliances": {"fridge": true}, "ac… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://quartier7mascouche.com/condos-neufs-a-louer-mascouche/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 89 trouvées, +89 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 89 au total, **89 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync quartier_7` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='quartier_7' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/quartier_horizon.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Quartier Horizon — connecteur `quartier_horizon` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 17/17 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Quartier Horizon (quartierhorizon.com — Lévis, secteur Saint-Jean-Chrysostome : 1802, rue des Fines-Herbes). WordPress/Divi rendu serveur : la page /plans/ liste ~114 cartes <article class="ps-card"> dont TOUTES les données sont des attributs data-* (unité, bâtiment, étage, type 3½-5½, chambres, superficie, balcon, prix « à partir de », disponibilité, plan PDF, image du plan, état). États : disponible / attente / indisponible / a-venir — on n'ingère que « disponible » (comme aula exclut « attente »). | |
| 10 | + | |
| 11 | +- **Site** : https://quartierhorizon.com | |
| 12 | +- **Page des annonces** : https://quartierhorizon.com/plans/ | |
| 13 | +- **Secteurs couverts** : Lévis (Saint-Jean-Chrysostome) — 1802, rue des Fines-Herbes ; unités data-etat=disponible seulement | |
| 14 | +- **Module** : `louka/connectors/quartier_horizon.py` — classe `QuartierHorizonConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://quartierhorizon.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://quartierhorizon.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 17 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — unité 104, Quartier Horizon | | |
| 33 | +| `address` | Adresse civique | 100 % | 1802, rue des Fines-Herbes, Lévis, G6Z 2L1 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Lévis | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Saint-Jean-Chrysostome | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 600 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 914 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-11-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Bâtiment B1 · Rez-de-chaussée | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://quartierhorizon.com/wp-content/uploads/2026/07/2022-12-104A-104B-104… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Étage : Rez-de-chaussée", "Balcon de 92 pi²"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"balcony": true, "price_from": true, "contact": {"phone": "418-650-4171"}, "plan_pdf": "… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://quartierhorizon.com/plans/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 17 trouvées, +17 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 17 au total, **17 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync quartier_horizon` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='quartier_horizon' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/quartier_mosaique.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Quartier Mosaïque (Constrobourg) — connecteur `quartier_mosaique` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 24/24 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:54 — 24 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:42 — 24 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 24 au total, **24 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/quartier_oree.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Quartier Orée — connecteur `quartier_oree` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 28/31 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:54 — 28 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:42 — 28 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 31 au total, **28 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/quartier_plus.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le Quartier Plus — connecteur `quartier_plus` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 59/59 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:54 — 59 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:42 — 59 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 59 au total, **59 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 97 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/quartier_sila.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Quartier Sila — connecteur `quartier_sila` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 198/200 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:54 — 198 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:42 — 198 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 200 au total, **198 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 26 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/rakotta.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Rakotta Real Estate (Dorchester, Gramercy, Le 2100) — connecteur `rakotta` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 187/187 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Rakotta Real Estate (rakotta.com) Centre-ville de Montréal — Appartements Dorchester (1555 René-Lévesque O.), Gramercy Residences (1900-1950 Sherbrooke O.) et Le 2100 (2100 boul. de Maisonneuve O.). Le site rakotta.com est une SPA Rentsync/LiftSystem (client « rakotta_rebuild », clientId 484 — mêmes gens que appartementsdorchester.com et residencesgramercy.com) ; l'API passerelle publique website-gateway.rentsync.com/v1/rakotta_rebuild expose : - /properties?findBy[status]=enabled : les immeubles actifs (adresse, intersection, contact, stationnement) ; - /units?where=status~in:enabled&limit=750 : TOUTES les unités (id stable, numéro, prix, pi², chambres, sdb, étage, date de dispo, drapeaux furnished/shortTerm et durée de bail leaseTerm) ; - /photos?where=buildingId~in:<ids> : galeries (mainGallery), fichiers servis par assets.rentsync.com/appartements_dorchester/images/gallery/. ⚠️ Rakotta fait aussi du meublé à bail flexible (1 à 12 mois) : seuls les BAUX 12 MOIS sont conservés (leaseTerm == "12-month", shortTerm == 0) — le meublé 12 mois reste admissible (furnished=True). Les unités d'immeubles absents de /properties (immeubles désactivés) sont exclues. | |
| 10 | + | |
| 11 | +- **Site** : https://www.rakotta.com | |
| 12 | +- **Page des annonces** : https://www.rakotta.com/properties | |
| 13 | +- **Secteurs couverts** : Montréal (Centre-ville — René-Lévesque O., Sherbrooke O., de Maisonneuve O.) ; baux 12 mois seulement (meublé flexible 1-11 mois exclu) | |
| 14 | +- **Module** : `louka/connectors/rakotta.py` — classe `RakottaConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.rakotta.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://website-gateway.rentsync.com/v1/rakotta_rebuild · https://www.rakotta.com · https://assets.rentsync.com/appartements_dorchester | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 187 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Dorchester Apartments — Unité 311 | | |
| 33 | +| `address` | Adresse civique | 100 % | 1555 Rene-Levesque West, Montréal, H3G 0G9 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Centre-ville | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 200 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 255 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Welcome to Appartements Dorchester , a new building situated at 1555 René-Lévesque W. in … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://assets.rentsync.com/appartements_dorchester/images/gallery/full/165… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true, "internet": true… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.rakotta.com/properties/dorchester-new | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:48 — 187 trouvées, +187 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 187 au total, **187 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync rakotta` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='rakotta' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/realstar.md
+14 −14
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Realstar — connecteur `realstar` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 9/9 |
| 6 | 6 | |
@@ -33,31 +33,31 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 33 | 33 | | `address` | Adresse civique | 100 % | 25 Place Casavant, Sainte Therese, QC J7E 5X1 | |
| 34 | 34 | | `city` | Ville (normalisée) | 89 % | Sainte-Thérèse | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 11 % | 4½ | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 1 750 $ | | |
| 38 | −| `bedrooms` | Chambres | 100 % | 2 | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 89 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 3 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 2 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 100 % | 918 | | |
| 41 | −| `availability_date` | Date de disponibilité | 89 % | now | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1240 | | |
| 41 | +| `availability_date` | Date de disponibilité | 78 % | — | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.634686 | |
| 43 | −| `description` | Description | 100 % | Le site Bourg Du Village de Realstar se situe dans la petite ville de Sainte-Thérèse. Que… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 25 photo(s) — https://resource.rentcafe.com/image/upload//q_auto,f_auto,w_600,h_400,c_lfi… | | |
| 45 | −| `amenities` | Commodités (JSON) | 78 % | ["Laveuse-sécheuse incluse", "Stationnement Intérieur", "Stationnement extérieur", "Balco… | | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"washer_dryer": true}, "elevator": true, "balcony": true, "pool": true, "… | | |
| 43 | +| `description` | Description | 100 % | Cloudflare Ray ID: a3034392bb364967 • Your IP: Click to reveal 195.96.134.255 • Performan… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://resource.rentcafe.com/image/upload//q_auto,f_auto,w_600,h_400,c_lfil… | | |
| 45 | +| `amenities` | Commodités (JSON) | 67 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"contact": {"phone": "450-987-0868"}} | | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.realstar.ca/apartments/qc/sainte-therese/bourg-du-village | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 18:54 — 9 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:42 — 9 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 9 au total, **9 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 89 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 1 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
modified
docs/connecteurs/remax_quebec.md
+6 −6
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # RE/MAX Québec (location) — connecteur `remax_quebec` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 3227/3521 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 3227/3567 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:00 — 3227 trouvées, +3 / ~0 / -3 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:49 — 3221 trouvées, +9 / ~5 / -14 | |
| 53 | 53 | - **Throttling** : 0.4 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 3521 au total, **3227 actives** | |
| 59 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 3567 au total, **3227 actives** | |
| 59 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 99 % · description 96 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/rentals_ca.md
+13 −13
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Rentals.ca (Québec) — connecteur `rentals_ca` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : Scrapfly · Annonces actives : 4433/5654 | |
| 5 | +**État : actif** · Région : Province · Backend : Scrapfly · Annonces actives : 4692/5705 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,40 +25,40 @@ Rentals.ca — portail locatif national, filtré PROVINCE DE QUÉBEC. Même plat | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (Scrapfly, API GraphQL interne) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4433 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (Scrapfly, API GraphQL interne) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4692 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | 1225 Saint Marc Street | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 1225 Saint Marc Street | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Montréal | |
| 35 | −| `sector` | Secteur / quartier | 18 % | — | | |
| 35 | +| `sector` | Secteur / quartier | 17 % | — | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 450 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 100 % | 1 | |
| 40 | −| `area_sqft` | Superficie (pi²) | 80 % | 400 | | |
| 41 | −| `availability_date` | Date de disponibilité | 94 % | now | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 79 % | 400 | | |
| 41 | +| `availability_date` | Date de disponibilité | 95 % | now | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.492189 | |
| 43 | −| `description` | Description | 100 % | Le Marco Situé au 1225, rue Saint Marc, à proximité du métro Guy-Concordia, ce quartier o… | | |
| 43 | +| `description` | Description | 99 % | Le Marco Situé au 1225, rue Saint Marc, à proximité du métro Guy-Concordia, ce quartier o… | | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 12 photo(s) — https://images.rentals.ca/property-pictures/large/montreal-qc/809380/apartm… | |
| 45 | −| `amenities` | Commodités (JSON) | 92 % | ["Cuisinière", "Non-fumeur", "Balcon", "Réfrigérateur", "Électricité incluse", "Chauffage… | | |
| 45 | +| `amenities` | Commodités (JSON) | 93 % | ["Cuisinière", "Non-fumeur", "Balcon", "Réfrigérateur", "Électricité incluse", "Chauffage… | | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true}, "appliances": {"fridge": true, "st… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://rentals.ca/montreal/le-marco-1225-st-marc-st | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:05 — 4097 trouvées, +0 / ~2 / -159 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:55 — 4404 trouvées, +5 / ~15 / -160 | |
| 53 | 53 | - **Throttling** : 0.3 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 5654 au total, **4433 actives** | |
| 59 | −- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | −- **Runs journalisés (60 derniers)** : 38, dont 0 en erreur | |
| 58 | +- **Annonces en BD** : 5705 au total, **4692 actives** | |
| 59 | +- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-24 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 99 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 56, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/rentalys.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Rentalys — connecteur `rentalys` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 10/10 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 18/19 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,19 +25,19 @@ connecteur Rentalys (location.rentalys.ca) Agence de location du Grand Montréal | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 10 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 18 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | VERDUN – 4 1/2 dans bâtisse récente | |
| 33 | 33 | | `address` | Adresse civique | 100 % | 200 Rue Egan, Verdun, QC | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Montréal | |
| 35 | −| `sector` | Secteur / quartier | 80 % | Verdun | | |
| 35 | +| `sector` | Secteur / quartier | 89 % | Verdun | | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 2 177 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | −| `area_sqft` | Superficie (pi²) | 80 % | 790 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 56 % | 790 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 100 % | now | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.45175800000001 | |
| 43 | 43 | | `description` | Description | 100 % | Superbe 4 1/2 situé dans un immeuble de construction récente , au cœur du quartier recher… | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:05 — 10 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:55 — 18 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 10 au total, **10 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 19 au total, **18 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/res_cogir.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Résidences Cogir (RPA) — connecteur `res_cogir` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 262/262 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +Résidences Cogir (residencescogir.com) — 85 résidences privées pour aînés (RPA) partout au Québec : réseaux Jazz, ex-Sélection (Domaine des Forges, Jardins de Renoir…), Villa, etc. Domaine DISTINCT de cogir.net (le connecteur `cogir` couvre le locatif traditionnel Cogir Immobilier — aucun doublon avec les RPA d'ici). Site rendu serveur mais derrière un WAF (403 en direct) : tout passe par Scrapfly ASP sans rendu JS. Le sitemap.xml liste les fiches /residences-aines-<ville>/<slug> (les Venvi « -ontario » sont exclues) ; chaque fiche expose le tableau « Modèles disponibles » (Type | Plan | À partir ($)), l'adresse civique (lien Google Maps), le téléphone, les coordonnées GPS (widget Walk Score) et la galerie. Une annonce Lou-Ka par résidence × typologie, prix plancher « à partir de » ; la superficie est récupérée du nom de fichier du plan (« …_3.5_typeA_702pc.jpg »). | |
| 10 | + | |
| 11 | +- **Site** : https://residencescogir.com | |
| 12 | +- **Page des annonces** : https://residencescogir.com/trouver-une-residence | |
| 13 | +- **Secteurs couverts** : 85 résidences pour aînés (RPA) au Québec — Jazz, ex-Sélection, Villa… (Montréal, Québec, Lévis, Laval, Rive-Sud, Outaouais, Saguenay, Abitibi, Bas-St-Laurent…) | |
| 14 | +- **Module** : `louka/connectors/res_cogir.py` — classe `ResidencesCogirConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : sitemap XML + pages HTML | |
| 19 | +- **Endpoint de base** : https://residencescogir.com/sitemap.xml | |
| 20 | +- **URLs de départ (constantes du module)** : https://residencescogir.com/sitemap.xml | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 60 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 262 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 2 1/2 — Résidence Château Baie-Comeau | | |
| 33 | +| `address` | Adresse civique | 100 % | 1401, boul. Jolliet | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Baie-Comeau | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 2½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 390 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 51 % | 342 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 49.1875551337521 | | |
| 43 | +| `description` | Description | 100 % | La résidence privée pour retraités Château Baie-Comeau vous offre une vue incomparable su… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 8 photo(s) — https://residencescogir.com/uploads/residence/image/682cef2b6153c_image.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"balcony": true, "price_from": true, "Résidence pour aînés": "oui", "contact": {"phone":… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://residencescogir.com/residences-aines-baie-comeau/chateau-baie-comeau | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:51 — 262 trouvées, +262 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 262 au total, **262 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync res_cogir` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='res_cogir' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/res_soleil.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Les Résidences Soleil — connecteur `res_soleil` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 54/54 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +Les Résidences Soleil (Groupe Savoie) — 15 manoirs pour aînés au Québec (Montréal, Laval, Rive-Sud, Sherbrooke, Granby, Pointe-aux-Trembles…). WordPress avec API REST maison : /wp-json/closest_residence_locator/coordinates/<lat>/<lng>/-1/fr retourne les 15 manoirs géolocalisés (adresse civique, ville, téléphone, url). Les LOYERS ne sont publiés que dans la grille-image « Notre offre » (uploads/…/Notre-offre_<Manoir>_<année>.jpg) de chaque fiche manoir : on la lit par OCR (tesseract, requis sur l'hôte) — lignes « <typo> ½ <forfait repas> <min>$ à <max>$ ». Une annonce Lou-Ka par manoir × typologie (1½ studio … 5½), prix plancher de la fourchette « sans repas » quand elle existe, sinon du forfait repas le moins cher (noté en détails). Le résultat OCR est mis en cache (louka.db) sous la clé = URL de la grille, donc relu uniquement quand la résidence publie une nouvelle grille. | |
| 10 | + | |
| 11 | +- **Site** : https://residencessoleil.ca | |
| 12 | +- **Page des annonces** : https://residencessoleil.ca/nos-residences/ | |
| 13 | +- **Secteurs couverts** : 15 manoirs pour aînés (Groupe Savoie) — Montréal, Laval, Brossard, Boucherville, Sainte-Julie, Mont-St-Hilaire, Sorel, Granby, Sherbrooke, Pointe-aux-Trembles… | |
| 14 | +- **Module** : `louka/connectors/res_soleil.py` — classe `ResidencesSoleilConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API REST WordPress (wp-json) | |
| 19 | +- **Endpoint de base** : https://residencessoleil.ca/wp-json/closest_residence_locator/coordinates/45.5/-73.5/-1/fr | |
| 20 | +- **URLs de départ (constantes du module)** : https://residencessoleil.ca/wp-json/closest_residence_locator/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 45 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API REST WordPress (wp-json)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 54 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 1 ½ (studio) — Les Résidences Soleil Manoir Brossard | | |
| 33 | +| `address` | Adresse civique | 100 % | 8080 Boulevard du Saint Laurent | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Brossard | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 1½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 716 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.4543664 | | |
| 43 | +| `description` | Description | 100 % | Les Résidences Soleil Manoir Brossard vous promet l’un des plus beaux panoramas des envir… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 15 photo(s) — https://residencessoleil.ca/wp-content/uploads/2020/08/1_Exterieur_Facade.j… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true, "Résidence pour aînés": "oui", "Loyer estimé": "grille officielle « … | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://residencessoleil.ca/nos-residences/manoir-brossard/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:52 — 54 trouvées, +54 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 54 au total, **54 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync res_soleil` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='res_soleil' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/rivero.md
+1 −1
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le Rivero — connecteur `rivero` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : désactivé (disabled=True)** · Région : Québec · Backend : direct · Annonces actives : 0/214 |
| 6 | 6 | |
modified
docs/connecteurs/roomies.md
+12 −12
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Roomies.ca — connecteur `roomies` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 279/308 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 278/323 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,40 +25,40 @@ Roomies.ca — chambres et colocation (segment que les gestionnaires ne couvrent | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 279 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 278 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | 32 | | `title` | Titre de l'annonce | 100 % | Furnished room in an apartment | |
| 33 | −| `address` | Adresse civique | 68 % | — | | |
| 33 | +| `address` | Adresse civique | 67 % | — | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Montréal | |
| 35 | 35 | | `sector` | Secteur / quartier | 0 % | — | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | Chambre | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 690 $ | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 1 | |
| 39 | −| `bathrooms` | Salles de bain | 70 % | 1 | | |
| 40 | −| `area_sqft` | Superficie (pi²) | 5 % | — | | |
| 41 | −| `availability_date` | Date de disponibilité | 96 % | 2026-10-01 | | |
| 39 | +| `bathrooms` | Salles de bain | 73 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 4 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 97 % | 2026-10-01 | | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 100 % | 45.4600610916329 | |
| 43 | 43 | | `description` | Description | 100 % | Cute, clean, bright and practical private room for a female at 690$ / month. It is 5 minu… | |
| 44 | 44 | | `images` | Photos (JSON) | 100 % | 10 photo(s) — https://cloudinary.roomies.pics/image/upload/c_fill,f_jpg,fl_lossy,g_auto,h… | |
| 45 | −| `amenities` | Commodités (JSON) | 97 % | ["Furnished", "Internet access"] | | |
| 45 | +| `amenities` | Commodités (JSON) | 98 % | ["Furnished", "Internet access"] | | |
| 46 | 46 | | `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "hot_water": true, "internet": true}, "appliances": {"fr… | |
| 47 | 47 | | `url` | URL de l'annonce source | 100 % | https://www.roomies.ca/rooms/1024705 | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:07 — 276 trouvées, +2 / ~1 / -4 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:56 — 275 trouvées, +2 / ~0 / -1 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 308 au total, **279 actives** | |
| 59 | −- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 323 au total, **278 actives** | |
| 59 | +- **Première ingestion** : 2026-08-17 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 41, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 59, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
modified
docs/connecteurs/roussin.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immeubles Roussin — connecteur `roussin` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 36/36 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:07 — 36 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:56 — 36 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 36 au total, **36 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/royal_laval.md
+80 −0
@@ -0,0 +1,80 @@ | ||
| 1 | +# Gestion Immobilière Royal — connecteur `royal_laval` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laval · Backend : direct · Annonces actives : 16/16 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Gestion Immobilière Royal (gestionroyal.com) — gestionnaire de Laval-des-Rapides et Montréal (~16 annonces actives). WordPress + thème immobilier Houzez rendu serveur : la page /a-louer/ (+ /a-louer/page/N/) affiche des cartes .item-listing-wrap complètes (post ID data-hz-id, prix, adresse, type n½ en étiquette, galerie data-images). La page détail /property/… fournit description et ville (bloc « Ville | … ») via le cache detail(). Granularité UNITÉ (une annonce par logement). | |
| 10 | + | |
| 11 | +- **Site** : https://gestionroyal.com | |
| 12 | +- **Page des annonces** : https://gestionroyal.com/a-louer/ | |
| 13 | +- **Secteurs couverts** : Laval (Laval-des-Rapides) et Montréal | |
| 14 | +- **Module** : `louka/connectors/royal_laval.py` — classe `RoyalLavalConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://gestionroyal.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://gestionroyal.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 16 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Très charmant 3 ½ semi-meublé à Côte-des-Neiges – Disponible le 1er juillet ! | | |
| 33 | +| `address` | Adresse civique | 88 % | 5833, Chemin de la Côte-des-Neiges | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 88 % | 1 475 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 25 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 6 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Description : Cet appartement propre et lumineux offre : Une grande cuisine ouverte idéal… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 15 photo(s) — https://gestionroyal.com/wp-content/uploads/2023/12/014-592x444.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 94 % | {"appliances": {"fridge": true, "stove": true, "dishwasher": true, "washer_dryer": true},… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://gestionroyal.com/property/3-1-2-a-louer-semi-meuble-cote-des-neiges-3/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:53 — 16 trouvées, +16 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | +- **Caps / budgets du module** : `MAX_PAGES` = 10 | |
| 56 | + | |
| 57 | +## Volumétrie & complétude | |
| 58 | + | |
| 59 | +- **Annonces en BD** : 16 au total, **16 actives** | |
| 60 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 61 | +- **Complétude clé (actives)** : GPS 0 % · prix 88 % · photos 100 % · description 100 % | |
| 62 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 63 | + | |
| 64 | +## Erreurs connues & dépannage | |
| 65 | + | |
| 66 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 67 | + | |
| 68 | +Rejouer la source seule : `python3 run.py sync royal_laval` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='royal_laval' ORDER BY ts DESC LIMIT 5;`). | |
| 69 | + | |
| 70 | +## Licence, attribution & conditions | |
| 71 | + | |
| 72 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 73 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 74 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 75 | +- Retrait sur demande : contact@spboucher.ai. | |
| 76 | + | |
| 77 | +## Historique | |
| 78 | + | |
| 79 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 80 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/royal_lepage.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Royal LePage (location) — connecteur `royal_lepage` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 949/1138 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 952/1161 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ Royal LePage (royallepage.ca) — LOCATIONS Québec Le portail rend ses résulta | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 949 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 952 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 946 trouvées, +0 / ~2 / -5 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 944 trouvées, +3 / ~0 / -10 | |
| 53 | 53 | - **Throttling** : 0.4 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `MAX_PAGES` = 30 |
| 56 | 56 | |
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | −- **Annonces en BD** : 1138 au total, **949 actives** | |
| 60 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Annonces en BD** : 1161 au total, **952 actives** | |
| 60 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-24 | |
| 61 | 61 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 95 % |
| 62 | 62 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 63 | 63 | |
added
docs/connecteurs/saint_michel.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Le Saint-Michel — connecteur `saint_michel` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 9/9 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le Saint-Michel (lesaintmichel.ca) 3250, boul. Henri-Bourassa Est, Montréal-Nord — studios à 5½ (unités A/B/C). Contrairement au repérage initial (« shell JS »), la page /appartements/ est rendue SERVEUR : une carte <a class="unit js-unit"> par unité avec data-status="1" quand elle est disponible (étage, superficie « +/- 829 p.ca », « à partir de *1749 », type dans l'alt du plan). La fiche /units/unite-<x>/ (cache BD) ajoute description, date de disponibilité et plan haute résolution. Repli Scrapfly si le GET direct est bloqué. | |
| 10 | + | |
| 11 | +- **Site** : https://lesaintmichel.ca | |
| 12 | +- **Page des annonces** : https://lesaintmichel.ca/appartements/ | |
| 13 | +- **Secteurs couverts** : Montréal-Nord (3250, boul. Henri-Bourassa Est) | |
| 14 | +- **Module** : `louka/connectors/saint_michel.py` — classe `SaintMichelConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://lesaintmichel.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://lesaintmichel.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Le Saint-Michel — Unité B1 (4½) | | |
| 33 | +| `address` | Adresse civique | 100 % | 3250, boul. Henri-Bourassa Est, Montréal-Nord, Montréal, QC H1H 1H4 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Montréal-Nord | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 89 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 89 % | 1 749 $ | | |
| 38 | +| `bedrooms` | Chambres | 89 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 829 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Cuisine munie de tiroirs et cabinets à fermeture douce, de comptoirs en quartz, d’îlots d… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 3 photo(s) — https://lesaintmichel.ca/wp-content/uploads/2025/04/le-saint-michel-appartem… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"appliances": {"fridge": true, "stove": true, "dishwasher": true}, "price_from": true, "… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://lesaintmichel.ca/units/unite-b1/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:53 — 9 trouvées, +9 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 9 au total, **9 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 89 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync saint_michel` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='saint_michel' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/samcon.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Samcon (condos locatifs) — connecteur `samcon` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 5/5 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Samcon (samcon.ca) — condos LOCATIFS seulement (section « Projects for rent » ; les projets en vente sont exclus). Le site WordPress liste les immeubles locatifs sur /projects-for-rent/ ; chaque fiche projet embarque le widget Planpoint (app.planpoint.io/samcon/<hostName>). On rejoue l'API officielle du widget POST https://app.planpoint.io/api/projects/find {namespace, hostName} (HTTP 201) qui retourne le projet complet : adresse, GPS, étages et unités {name, bedrooms « 1 bedroom », price, squareFeet, availability, images…}. Seules les unités « Available » sont retenues (« Sold » = louée). Une annonce par unité disponible ; external_id = <hostName>-<no d'unité>. | |
| 10 | + | |
| 11 | +- **Site** : https://www.samcon.ca | |
| 12 | +- **Page des annonces** : https://www.samcon.ca/projects-for-rent/ | |
| 13 | +- **Secteurs couverts** : Montréal (Terrasse Boyer, Place Lajeunesse, Promenade des Ormeaux, Place du Quesne) | |
| 14 | +- **Module** : `louka/connectors/samcon.py` — classe `SamconConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API JSON interne du site | |
| 19 | +- **Endpoint de base** : https://www.samcon.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://app.planpoint.io/api/projects/find · https://www.samcon.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 5 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Lajeunesse — 1 bedroom · unité 9661-4 | | |
| 33 | +| `address` | Adresse civique | 100 % | 9653 Rue Lajeunesse, Montreal, QC H3L 2C8 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 599 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 680 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.5513433 | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 4 photo(s) — https://storage.googleapis.com/planpoint-bucket/8-1-1536x1024-1649901609033.… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Étage : Étage 1"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"floor": 1, "furnished": false} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.samcon.ca/place-lajeunesse/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:53 — 5 trouvées, +5 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 5 au total, **5 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync samcon` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='samcon' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/san_leon.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# San Leon (phases 4-5) — connecteur `san_leon` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 82/82 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur San Leon (sanleon.ca) Appartements locatifs neufs au Faubourg Boisbriand — 3230, avenue des Grandes Tourelles, Boisbriand (phases 4 et 5, ~118 unités/phase). Le site embarque Planpoint : l'API Next.js répond en JSON à POST https://app.planpoint.io/api/groups/find body {"namespace":"san-leon","hostName":"san-leon"} → projects[] → floors[] → units[] (name, bedrooms, bathrooms, squareFeet, price — None en phase 5, availability Available/Sold/Leased/Reserved, inclusions, images, delivery). On ne garde que les unités « Available ». Granularité : unité. | |
| 10 | + | |
| 11 | +- **Site** : https://sanleon.ca | |
| 12 | +- **Page des annonces** : https://app.planpoint.io/api/groups/find | |
| 13 | +- **Secteurs couverts** : Boisbriand (Faubourg Boisbriand — 3230, avenue des Grandes Tourelles) | |
| 14 | +- **Module** : `louka/connectors/san_leon.py` — classe `SanLeonConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API JSON interne du site | |
| 19 | +- **Endpoint de base** : https://app.planpoint.io/api/groups/find | |
| 20 | +- **URLs de départ (constantes du module)** : https://app.planpoint.io/api/groups/find · https://sanleon.ca/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 82 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | San Leon - Phase 4 — Unité 201 | | |
| 33 | +| `address` | Adresse civique | 100 % | 3230, avenue des Grandes Tourelles, Boisbriand | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Boisbriand | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 11 % | 2 650 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 2 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1028 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité 201, étage 2 — San Leon - Phase 4 — Orientation lac | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 9 photo(s) — https://storage.googleapis.com/planpoint-bucket/32e695be935c0dd9bf4edf33ad77… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["eau chaude", "Thermopompe climatisatin/chauffage haute efficacite", "Internet Haut Debi… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "hot_water": true, "internet": true}, "appliances": {"fr… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://sanleon.ca/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:53 — 82 trouvées, +82 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 82 au total, **82 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 11 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync san_leon` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='san_leon' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/saro.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Les Constructions Saro — connecteur `saro` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 4/4 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Les Constructions Saro (constructionsaro.com) Immeubles locatifs haut de gamme à Saint-Hubert (Longueuil, Rive-Sud), clientèle 50 ans et plus, secteur du parc de la Cité. Site ASP.NET (ProducNet) une seule page rendue serveur : sections par modèle (« 3 ½ Haut de gamme — 850 pi² », 4 ½, 5 ½, 7 ½ bi-génération) avec diaporamas d'images par typologie. Aucun prix ni disponibilité publiés. Granularité : une annonce par typologie/modèle. | |
| 10 | + | |
| 11 | +- **Site** : https://constructionsaro.com | |
| 12 | +- **Page des annonces** : https://constructionsaro.com/Default.aspx | |
| 13 | +- **Secteurs couverts** : Saint-Hubert (Longueuil, parc de la Cité) — 3½ à 7½ haut de gamme, 50 ans et plus | |
| 14 | +- **Module** : `louka/connectors/saro.py` — classe `SaroConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://constructionsaro.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://constructionsaro.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3 ½ Haut de gamme — Constructions Saro | | |
| 33 | +| `address` | Adresse civique | 0 % | — | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Longueuil | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Saint-Hubert | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 850 | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Immeuble locatif neuf haut de gamme des Constructions Saro à Saint-Hubert (Longueuil), se… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 14 photo(s) — https://constructionsaro.com/Images/Diaporama3etDemi/01.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Condos à aire ouverte, très grande salle de bain", "Garde-robe walk-in", "Insonorisatio… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "elevator": true, "balcony": true, "laundry": true, "storage": true, "contac… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://constructionsaro.com/Default.aspx | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:53 — 4 trouvées, +4 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 4 au total, **4 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync saro` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='saro' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/savouet.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Groupe Savouet — connecteur `savouet` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 15/17 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 15 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 15 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 17 au total, **15 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 93 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/sdg.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # SDG Immobilier — connecteur `sdg` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 9/11 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 9 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 9 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 11 au total, **9 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 89 % · prix 0 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/sentinelle.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # La Sentinelle (Groupe Immobilier Brochu) — connecteur `sentinelle` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 9/11 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 8/11 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur La Sentinelle (lasentinellelevis.com) Immeuble de 144 condos locatifs | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 9 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 8 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 9 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 8 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 11 au total, **9 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 11 au total, **8 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/sept_elements.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Les 7 Éléments (Propriétés Mach) — connecteur `sept_elements` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 16/16 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Les 7 Éléments (condoles7elements.com — 1998, rue Marie-Anne-Gaudreau, Lebourgneuf, Québec ; condos locatifs Propriétés Mach). Plateforme Vortex Solution rendue serveur : la page d'accueil liste les unités disponibles en blocs <div class="uniteItem"> (type 3½/4½, numéro d'unité, date de disponibilité, plan PDF DATA/UNITE/<n>.pdf). Pas de prix affiché sur le site — le plan PDF de chaque unité fournit par contre les superficies (nette/brute/balcon), extraites par position avec pdfplumber via le cache BD des pages détail. Sert aussi de classe de base au connecteur `consolata` (La Consolata, même plateforme Vortex). | |
| 10 | + | |
| 11 | +- **Site** : https://www.condoles7elements.com | |
| 12 | +- **Page des annonces** : https://www.condoles7elements.com/ | |
| 13 | +- **Secteurs couverts** : Québec (Lebourgneuf) — 1998, rue Marie-Anne-Gaudreau ; plateforme Vortex, superficies extraites des plans PDF, pas de prix affiché | |
| 14 | +- **Module** : `louka/connectors/sept_elements.py` — classe `SeptElementsConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.condoles7elements.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.condoles7elements.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 16 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — unité 108-1, Les 7 Éléments | | |
| 33 | +| `address` | Adresse civique | 100 % | 1998, rue Marie-Anne-Gaudreau, Québec, G2K 0M3 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Québec | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Lebourgneuf | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 88 % | 816 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://www.condoles7elements.com/DATA/PHOTO/18_photo.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Salon de cartes et lecture", "Salon de billard", "Climatisation indépendante", "Le Gran… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "balcony": true, "smoking": false, "contact": {"phone": "418-614-4481"}, "pl… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.condoles7elements.com/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:53 — 16 trouvées, +16 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 16 au total, **16 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync sept_elements` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='sept_elements' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/serra.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# SERRA Montréal (1124 De Bleury) — connecteur `serra` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 14/14 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur SERRA Montréal (serramtl.com) Tour locative « tout inclus » au 1124, rue De Bleury (Ville-Marie, centre-ville de Montréal) — studios, 3½ et 4½, bail minimal de 12 mois. Site Rentsync (assets.rentsync.com/bleury1124) RENDU SERVEUR : la page /availabilities publie le tableau des unités disponibles dans des div.suite structurées (data-beds, data-sqft, data-building, data-availability-date MMAAAA, numéro d'unité, plan d'étage PDF) et un identifiant RentSync stable par unité (data-suite-id du bouton modal) -> une annonce Lou-Ka par unité. Aucun prix public (ni sur le site ni dans le JS — pas de flux LiftSystem pour ce client) : price_label vide, la fiche reste utile (dispo, superficie, plan, tout inclus). La description vient de /apartments et la galerie de /gallery (variante /256/, la seule servie publiquement par le CDN pour ce client). | |
| 10 | + | |
| 11 | +- **Site** : https://www.serramtl.com | |
| 12 | +- **Page des annonces** : https://www.serramtl.com/availabilities | |
| 13 | +- **Secteurs couverts** : Montréal (Ville-Marie — centre-ville, 1124 rue De Bleury) | |
| 14 | +- **Module** : `louka/connectors/serra.py` — classe `SerraConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.serramtl.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.serramtl.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 14 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | SERRA Montréal — unité B-303 | | |
| 33 | +| `address` | Adresse civique | 100 % | 1124, rue De Bleury, Montréal | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Ville-Marie (centre-ville) | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 500 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | The rental condos have been designed to inspire well-being with clean lines and a straigh… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 5 photo(s) — https://assets.rentsync.com/bleury1124/images/gallery/256/1689289923191_2.png | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Tout inclus (chauffage, eau chaude, climatisation)", "500 pi²"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "hot_water": true}, "ac": true, "storage": true, "parkin… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.serramtl.com/availabilities | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:53 — 14 trouvées, +14 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 14 au total, **14 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync serra` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='serra' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/sgiq.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # SGIQ (Société de gestion immobilière du Québec) — connecteur `sgiq` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 147/147 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 147 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 147 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 147 au total, **147 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 99 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/shdm.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # SHDM — connecteur `shdm` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 1/23 | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 2/25 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur SHDM — Société d'habitation et de développement de Montréal (sh | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, API GraphQL interne) alimente les colonnes de la table `l | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 1 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 2 trouvées, +0 / ~0 / -1 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 23 au total, **1 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 25 au total, **2 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/sherplex.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Sherplex immobilier — connecteur `sherplex` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Estrie · Backend : direct · Annonces actives : 15/15 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Sherplex immobilier (appartementssherbrooke.com) — appartements neufs à louer en Estrie : Weedon, Coaticook, Magog, Saint-François-Xavier-de-Brompton et Saint-Denis-de-Brompton. Squarespace rendu serveur : pages de secteur → pages de projet avec sections texte « Prix » (« 4 ½ : 1370$ à 1400$ », « Meublé à partir de : 1450$ ») et « Disponibilité ». Granularité : typologie par projet (pas d'unités individuelles). | |
| 10 | + | |
| 11 | +- **Site** : https://www.appartementssherbrooke.com | |
| 12 | +- **Page des annonces** : https://www.appartementssherbrooke.com/appartements-a-louer-en-estrie | |
| 13 | +- **Secteurs couverts** : Weedon, Coaticook, Magog, Saint-François-Xavier-de-Brompton, Saint-Denis-de-Brompton | |
| 14 | +- **Module** : `louka/connectors/sherplex.py` — classe `SherplexConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.appartementssherbrooke.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.appartementssherbrooke.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 15 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — Appartements à louer à Weedon (Sherplex) | | |
| 33 | +| `address` | Adresse civique | 0 % | — | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Weedon | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 40 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Appartements neufs Sherplex à Weedon. Appartements à louer à Weedon. | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 15 photo(s) — https://images.squarespace-cdn.com/content/v1/644a9a701dfd0b0ca675f775/e81f… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"project": "Appartements à louer à Weedon"} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.appartementssherbrooke.com/appartements-a-louer-weedon/project-one-f5w4d-z9ne… | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:53 — 15 trouvées, +15 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 15 au total, **15 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 40 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync sherplex` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='sherplex' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/siagi.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # SIA Gestion Immobilière — connecteur `siagi` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 6/6 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 6 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 6 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 6 au total, **6 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 0 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/sibelanger.md
+17 −17
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Société immobilière Bélanger — connecteur `sibelanger` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 12/22 |
| 6 | 6 | |
@@ -29,34 +29,34 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | 100 % | Chamonix - Unité 197 | | |
| 33 | −| `address` | Adresse civique | 100 % | 1175, rue de Chamonix, Québec (QC) G1H 6M3 | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Samuel de Champlain - 1806 | | |
| 33 | +| `address` | Adresse civique | 100 % | 350, Ch. Sainte-Foy, Québec (QC) G1S 2J4 | | |
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Québec | |
| 35 | −| `sector` | Secteur / quartier | 100 % | Charlesbourg | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Maison | | |
| 37 | −| `price` | Loyer mensuel ($) | 100 % | 1 595 $ | | |
| 38 | −| `bedrooms` | Chambres | 83 % | — | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Montcalm / Saint-Sacrement | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 945 $ | | |
| 38 | +| `bedrooms` | Chambres | 92 % | 2 | | |
| 39 | 39 | | `bathrooms` | Salles de bain | 17 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 42 % | — | |
| 41 | −| `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | | |
| 42 | −| `lat` | GPS (lat/lng) | 100 % | 46.8673632 | | |
| 43 | −| `description` | Description | 100 % | Grand projet locatif de maisons de ville dans Charlesbourg. Complexe de maisons en rangée… | | |
| 44 | −| `images` | Photos (JSON) | 100 % | 21 photo(s) — https://sibelanger.com/app/uploads/2026/05/copie-de-1175-197-chamonix-photo… | | |
| 45 | −| `amenities` | Commodités (JSON) | 100 % | ["Non meublé", "Entrée laveuse-sécheuse", "Entrée lave-vaisselle", "Balcon", "Chauffé", "… | | |
| 46 | −| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true}, "appliances": {"washer_dryer_hookup": true, "dishwasher… | | |
| 47 | −| `url` | URL de l'annonce source | 100 % | https://sibelanger.com/appartements-a-louer/1175-197-chamonix-selection-197/ | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.8039072 | | |
| 43 | +| `description` | Description | 100 % | Appartement 4 et demi idéalement situé dans le quartier Montcalm, à deux pas de la rue Ca… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 25 photo(s) — https://sibelanger.com/app/uploads/2026/05/copie-de-350-1806-sainte-foy-pho… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Balcon", "Chauffé", "Eau chaude", "Éclairé", "Entrée lave-vaisselle", "Entrée laveuse-s… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true}, "appliances": {… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://sibelanger.com/appartements-a-louer/350-1806-chemin-ste-foy/ | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 12 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 22 au total, **12 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/sig.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Société d'investissement Gilbert (résidences étudiantes) — connecteur `sig` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 4/4 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 4 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 4 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 4 au total, **4 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 75 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/signature_bois_franc.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Signature Bois-Franc — condos locatifs — connecteur `signature_bois_franc` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +Signature Bois-Franc — condos locatifs (location.signatureboisfranc.com) au 2020, rue Lucien-Thimens, quartier Bois-Franc, Saint-Laurent (Montréal). Techno : WordPress + FacetWP, mais la liste /unites-disponibles/ est RENDUE CÔTÉ SERVEUR (toutes les cartes .unit-row dans le HTML initial, pas de pagination) — simple parse regex des champs par carte. Granularité : UNITÉ (numéro, pièces, étage, pi², « à partir de » $, statut). On écarte « Unité louée » et « Réservée ». | |
| 10 | + | |
| 11 | +- **Site** : https://location.signatureboisfranc.com | |
| 12 | +- **Page des annonces** : https://location.signatureboisfranc.com/unites-disponibles/ | |
| 13 | +- **Secteurs couverts** : Montréal (Saint-Laurent — Bois-Franc) | |
| 14 | +- **Module** : `louka/connectors/signature_bois_franc.py` — classe `SignatureBoisFrancConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://location.signatureboisfranc.com/unites-disponibles/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://location.signatureboisfranc.com/unites-disponibles/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Signature Bois-Franc — Unité 106 | | |
| 33 | +| `address` | Adresse civique | 100 % | 2020, rue Lucien-Thimens | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Saint-Laurent | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 2 310 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 999 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2026-09-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 0 % | — | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true, "floor": "1e étage", "floor_plan": "https://location.signatureboisfr… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://location.signatureboisfranc.com/unites-disponibles/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:53 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : désactivé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 0 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync signature_bois_franc` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='signature_bois_franc' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/signature_boisbriand.md
+80 −0
@@ -0,0 +1,80 @@ | ||
| 1 | +# Signature Boisbriand — connecteur `signature_boisbriand` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 13/13 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Signature Boisbriand (signatureboisbriand.com) — projet locatif au 1040-1050, rue des Francs-Bourgeois, Boisbriand (Faubourg Boisbriand, ~266 unités). WordPress + FacetWP rendu serveur : /unites-disponibles/ liste des lignes .unit-row (numéro #1040-101, pièces, étage, superficie, prix « à partir de », disponibilité, plan PDF) paginées via le paramètre ?_paged=N (15 lignes/page). On ne garde que les unités NON « Unité louée ». Granularité : unité. | |
| 10 | + | |
| 11 | +- **Site** : https://signatureboisbriand.com | |
| 12 | +- **Page des annonces** : https://signatureboisbriand.com/unites-disponibles/ | |
| 13 | +- **Secteurs couverts** : Boisbriand (Faubourg Boisbriand — 1040-1050, rue des Francs-Bourgeois) | |
| 14 | +- **Module** : `louka/connectors/signature_boisbriand.py` — classe `SignatureBoisbriandConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://signatureboisbriand.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://signatureboisbriand.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : pagination par numéro de page | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 13 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Signature Boisbriand — Unité #1040-414 | | |
| 33 | +| `address` | Adresse civique | 100 % | 1040, rue des Francs-Bourgeois, Boisbriand | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Boisbriand | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 547 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 681 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité #1040-414, 4e étage | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://signatureboisbriand.com/wp-content/uploads/2022/09/BOISBRIAND_Camer… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true, "floor_plan": "https://signatureboisbriand.com/wp-content/uploads/20… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://signatureboisbriand.com/unites-disponibles/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:54 — 13 trouvées, +13 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | +- **Caps / budgets du module** : `MAX_PAGES` = 30 | |
| 56 | + | |
| 57 | +## Volumétrie & complétude | |
| 58 | + | |
| 59 | +- **Annonces en BD** : 13 au total, **13 actives** | |
| 60 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 61 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 62 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 63 | + | |
| 64 | +## Erreurs connues & dépannage | |
| 65 | + | |
| 66 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 67 | + | |
| 68 | +Rejouer la source seule : `python3 run.py sync signature_boisbriand` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='signature_boisbriand' ORDER BY ts DESC LIMIT 5;`). | |
| 69 | + | |
| 70 | +## Licence, attribution & conditions | |
| 71 | + | |
| 72 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 73 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 74 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 75 | +- Retrait sur demande : contact@spboucher.ai. | |
| 76 | + | |
| 77 | +## Historique | |
| 78 | + | |
| 79 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 80 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/simard.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Immeubles Simard — connecteur `simard` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 5/5 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 5 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 5 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 5 au total, **5 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 20 % · prix 40 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/simplex.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Simplex Immobilier — connecteur `simplex` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 3/3 |
| 6 | 6 | |
@@ -49,16 +49,16 @@ Le connecteur (direct, API JSON interne du site) alimente les colonnes de la tab | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 3 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 3 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 3 au total, **3 actives** |
| 59 | −- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-18 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 37, dont 0 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 55, dont 0 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
added
docs/connecteurs/sofia.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Le Sofia — Groupe Lacombe (Varennes) — connecteur `sofia` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 2/2 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le Sofia — Groupe Lacombe (sofiavarennes.com — 48 condos locatifs au 1845, rue du Souvenir, Varennes, structure béton, face au fleuve). Site PHP/Perch CMS rendu serveur : la page plans.php contient le tableau COMPLET des unités (numéro, pi², chambres, modèle 3½/4½, plan JPG, loyer, disponibilité). Seules les lignes « Date -> OUI » (badge Disponible) sont retenues — les autres n'affichent ni loyer ni date. Granularité = UNITÉ. external_id = numéro d'unité (stable, adresse unique). | |
| 10 | + | |
| 11 | +- **Site** : https://sofiavarennes.com | |
| 12 | +- **Page des annonces** : https://sofiavarennes.com/plans.php | |
| 13 | +- **Secteurs couverts** : Varennes (1845, rue du Souvenir — 48 condos locatifs face au fleuve) | |
| 14 | +- **Module** : `louka/connectors/sofia.py` — classe `SofiaConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://sofiavarennes.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://sofiavarennes.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Le Sofia — unité 213 | | |
| 33 | +| `address` | Adresse civique | 100 % | 1845, rue du Souvenir, Varennes | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Varennes | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 950 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 844 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité 213 au Sofia (1845, rue du Souvenir, Varennes) — immeuble locatif du Groupe Lacombe… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://sofiavarennes.com/perch/resources/plan13.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "elevator": true, "parking": {"available": true, "type": "intérieur"}} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://sofiavarennes.com/plans.php | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:54 — 2 trouvées, +2 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 2 au total, **2 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync sofia` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='sofia' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/solaris.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Solaris Boisbriand — connecteur `solaris` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Solaris Boisbriand (solarisboisbriand.com) Condos locatifs neufs au 1030, rue des Francs-Bourgeois, Boisbriand (Faubourg Boisbriand). Site Wix mais rendu SERVEUR : la page /plans contient dans son HTML statique les cartes « n ½ (x chambres) … à partir de NNNN$/mois » (texte riche wixui, entités ½ / à). Aucune liste d'unités — granularité : TYPOLOGIE (3 fiches : 3½ / 4½ / 5½, prix « à partir de »). | |
| 10 | + | |
| 11 | +- **Site** : https://www.solarisboisbriand.com | |
| 12 | +- **Page des annonces** : https://www.solarisboisbriand.com/plans | |
| 13 | +- **Secteurs couverts** : Boisbriand (Faubourg Boisbriand — 1030, rue des Francs-Bourgeois) | |
| 14 | +- **Module** : `louka/connectors/solaris.py` — classe `SolarisConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.solarisboisbriand.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.solarisboisbriand.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Solaris Boisbriand — 3½ (1 chambre) | | |
| 33 | +| `address` | Adresse civique | 100 % | 1030, rue des Francs-Bourgeois, Boisbriand | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Boisbriand | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 800 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Condo locatif neuf 3½ (1 chambre(s)) au Faubourg Boisbriand — prix « à partir de », selon… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://static.wixstatic.com/media/237b5c_733ff6ef294f444dbd74af902456e72e%… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.solarisboisbriand.com/plans | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:54 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync solaris` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='solaris' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/solis_levis.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Solis Lévis — connecteur `solis_levis` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 22/22 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +Solis Lévis (solislevis.com) — RPA 55+ autonomes Immeuble unique de 7 étages sur la rue Weyman à Lévis (Studio, 3½, 4½, dès ~1 231 $/mois, plusieurs inclusions : eau chaude, électricité, chauffage, climatisation). WordPress rendu serveur : la page /appartements-retraites-autonomes/ embarque le sélecteur d'unités complet dans un <script> « units = [[…]] » — un tableau par étage, chaque unité avec numéro, état (Available/Reserved/Sold), typologie (0=Studio, 1=3½, 2=4½), type de plan, prix mensuel, superficies (logement + balcon) et image du plan. Une annonce Lou-Ka par unité DISPONIBLE, prix exact. | |
| 10 | + | |
| 11 | +- **Site** : https://solislevis.com | |
| 12 | +- **Page des annonces** : https://solislevis.com/appartements-retraites-autonomes/ | |
| 13 | +- **Secteurs couverts** : Lévis (RPA 55+ autonomes — studios, 3½, 4½, rue Weyman) | |
| 14 | +- **Module** : `louka/connectors/solis_levis.py` — classe `SolisLevisConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://solislevis.com/appartements-retraites-autonomes/ | |
| 20 | +- **URLs de départ (constantes du module)** : https://solislevis.com/appartements-retraites-autonomes/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 22 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — Solis Lévis, unité 701 | | |
| 33 | +| `address` | Adresse civique | 100 % | Rue Weyman, Lévis | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Lévis | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 325 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 693 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 46.79695839549979 | | |
| 43 | +| `description` | Description | 100 % | Des condos locatifs bien conçus avec des choix de matériaux actuels et de qualité. Découv… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 12 photo(s) — https://solislevis.com/app/uploads/2022/07/701.png | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Un balcon privé", "Une cuisine pratique et fonctionnelle", "Une aire de vie ouverte", "… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true, "electricity": true, "hot_water": true}, "appliances": {… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://solislevis.com/appartements-retraites-autonomes/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:54 — 22 trouvées, +22 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 22 au total, **22 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync solis_levis` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='solis_levis' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/somex_saintnicolas.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Somex Saint-Nicolas — connecteur `somex_saintnicolas` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Québec · Backend : direct · Annonces actives : 145/145 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 145 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 145 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 145 au total, **145 actives** |
| 59 | −- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-08 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 2 en erreur |
| 62 | 62 | |
added
docs/connecteurs/sotramont.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Sotramont (Liveo / Curtiss) — connecteur `sotramont` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal / Lanaudière · Backend : direct · Annonces actives : 8/8 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Sotramont (sotramont.com) Promoteur montréalais : condos locatifs Liveo (Pointe-Claire/Greenwich 1-2-3, Mascouche 1-2, Repentigny 1-2, Bois-Franc) et Curtiss Charlie (Saint-Laurent). WordPress rendu serveur : le portfolio ?category=locatifs liste les cartes article.c--article-project (badge occupation, nom, « quartier – ville », « N condos locatifs », li typologies « 1-2 chambres sur 10 étages » + « à partir de N $ par mois avec inclusions »). AUCUN inventaire par unité publié → une annonce par PHASE/immeuble ; les cartes « Vendu » ou « En construction » sont exclues. Détail (description, photos) tiré de la page phase quand elle est hébergée sur sotramont.com (Repentigny pointe vers liveo.ca). | |
| 10 | + | |
| 11 | +- **Site** : https://sotramont.com | |
| 12 | +- **Page des annonces** : https://sotramont.com/projets-maison-ville-condo-vendre-louer/?category=locatifs | |
| 13 | +- **Secteurs couverts** : Pointe-Claire (Liveo Greenwich 1-2-3), Mascouche (Liveo 1-2), Repentigny (Liveo 1-2), Saint-Laurent (Curtiss Charlie, Bois-Franc) | |
| 14 | +- **Module** : `louka/connectors/sotramont.py` — classe `SotramontConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://sotramont.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://sotramont.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 8 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Liveo Pointe-Claire 3 — condos locatifs (Pointe-Claire) | | |
| 33 | +| `address` | Adresse civique | 0 % | — | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Pointe-Claire | | |
| 35 | +| `sector` | Secteur / quartier | 50 % | Greenwich | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 75 % | 1 620 $ | | |
| 38 | +| `bedrooms` | Chambres | 0 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 12 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 75 % | Nous avons demandé aux résidents potentiels ce qui leur importait le plus et avons combin… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 8 photo(s) — https://sotramont.com/wp-content/uploads/2022/12/My-project-1.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true, "internet": true, "cable": true}, "ac": true, "laundry… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://sotramont.com/liveo-pointe-claire-3/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:54 — 8 trouvées, +8 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 8 au total, **8 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 75 % · photos 100 % · description 75 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync sotramont` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='sotramont' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/souleymane.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion Souleymane — connecteur `souleymane` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 13/14 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 13 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 13 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 14 au total, **13 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/sovima.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Sovima Habitation — AlterEGO, Le Nest, Quartier Vauquelin, Le Neuf Cent — connecteur `sovima` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 11/11 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Groupe Sovima (groupesovima.com) Appartements/condos locatifs neufs de la Rive-Sud (+ Repentigny) : AlterEGO (Brossard), Le Nest (Saint-Bruno-de-Montarville), Quartier Vauquelin 2 (Longueuil) et Le Neuf Cent Notre-Dame (Repentigny). Nest Ottawa (Ontario) exclu. Site Webflow rendu serveur : chaque projet a une page /nos-plans avec les typologies et le prix plancher — motif texte « <n> ½ … À PARTIR DE <prix> $ / mois » (ou « Non disponible pour le moment », ignoré). Granularité = TYPOLOGIE par projet. external_id = <projet>-<n>-demi — stable. ⚠️ Webflow sans charset dans les en-têtes -> forcer UTF-8 (même piège que aera3r). | |
| 10 | + | |
| 11 | +- **Site** : https://www.sovimahabitation.com | |
| 12 | +- **Page des annonces** : https://www.sovimahabitation.com | |
| 13 | +- **Secteurs couverts** : Brossard (AlterEGO sur le fleuve), Saint-Bruno-de-Montarville (Le Nest), Longueuil (Quartier Vauquelin 2), Repentigny (Le Neuf Cent Notre-Dame) | |
| 14 | +- **Module** : `louka/connectors/sovima.py` — classe `SovimaConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.groupesovima.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.groupesovima.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 11 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — AlterEGO sur le fleuve | | |
| 33 | +| `address` | Adresse civique | 100 % | Tour 2, 8355, boulevard du St-Laurent, Brossard | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Brossard | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 770 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | 3½ au AlterEGO sur le fleuve (Tour 2, 8355, boulevard du St-Laurent, Brossard) — projet l… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 8 photo(s) — https://cdn.prod.website-files.com/69a63f1fdd344c2787e3993e/69cbee9e8d579d1b… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.groupesovima.com/alterego/nos-plans | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:54 — 11 trouvées, +11 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 11 au total, **11 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync sovima` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='sovima' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/square_philippe.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Square Philippe — connecteur `square_philippe` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Outaouais · Backend : direct · Annonces actives : 16/16 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Square Philippe (squarephilippe.com) Complexe locatif neuf de Gatineau (secteur est, J8P) — 4 immeubles (25 rue du Galion, 75/91/115 rue Campagnard), 119 unités au total. WordPress rendu serveur : /a-louer/unites/ liste les unités DISPONIBLES en cartes `.theUnits` (data-rel = « 1 chambre »/« 2 chambres ») avec bandeau adresse (`.coin span`), prix (`.prix` « 1 700$ »), numéro d'unité + pi² (`.infoAll`), étage + chambres + « Disponible » (`.info2`) et photo du plan. external_id = <immeuble en slug>-<numéro d'unité> — stable par unité. | |
| 10 | + | |
| 11 | +- **Site** : https://squarephilippe.com | |
| 12 | +- **Page des annonces** : https://squarephilippe.com/a-louer/unites/ | |
| 13 | +- **Secteurs couverts** : Gatineau | |
| 14 | +- **Module** : `louka/connectors/square_philippe.py` — classe `SquarePhilippeConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://squarephilippe.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://squarephilippe.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 16 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Unité 103 — 115 rue Campagnard | | |
| 33 | +| `address` | Adresse civique | 100 % | 115 rue Campagnard, Gatineau | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Gatineau | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 700 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 745 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Rez-de-chaussée \| 745 pi² | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://squarephilippe.com/wp-content/uploads/2025/06/115-unite103.jpg | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"floor": "Rez-de-chaussée"} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://squarephilippe.com/a-louer/unites/#115-rue-campagnard-103 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:54 — 16 trouvées, +16 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 16 au total, **16 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync square_philippe` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='square_philippe' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/st_charles_granby.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Le St-Charles — connecteur `st_charles_granby` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie (Granby) · Backend : direct · Annonces actives : 4/4 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Le St-Charles (stcharlesgranby.com) Condos locatifs modernes au 41, rue Saint-Charles Nord à Granby (studios, 3½, 4½, 5½). WordPress/Elementor rendu serveur : la page d'accueil affiche une carte par typologie (« 3 1/2 / À partir de 900$ / mois* »). Granularité : typologie (pas d'unités individuelles publiées). | |
| 10 | + | |
| 11 | +- **Site** : https://www.stcharlesgranby.com | |
| 12 | +- **Page des annonces** : https://www.stcharlesgranby.com/ | |
| 13 | +- **Secteurs couverts** : Granby (41 rue Saint-Charles Nord) | |
| 14 | +- **Module** : `louka/connectors/st_charles_granby.py` — classe `StCharlesGranbyConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.stcharlesgranby.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.stcharlesgranby.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Studio — Le St-Charles | | |
| 33 | +| `address` | Adresse civique | 100 % | 41, rue Saint-Charles Nord, Granby | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Granby | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 900 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Condos locatifs modernes, lumineux et bien pensés au cœur de Granby (studios, 3½, 4½ et 5… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 11 photo(s) — https://www.stcharlesgranby.com/wp-content/uploads/2025/08/mb-ext.webp | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.stcharlesgranby.com/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:54 — 4 trouvées, +4 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 4 au total, **4 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync st_charles_granby` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='st_charles_granby' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/station_horizon.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Station Horizon — connecteur `station_horizon` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 6/6 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Station Horizon (stationhorizon.com) — condos locatifs neufs au 550-650-700, boulevard de la Gare, Mont-Saint-Hilaire (Village de la Gare), 2 phases. WordPress rendu serveur : les pages « Plans des unités » (phase 1 et 2) exposent les plans par typologie dans les noms de fichiers webp (« …Phase-1-3.1-2_TypeC.webp » = 3½ type C). Les prix ne sont pas dans les pages de plans : ils viennent de l'accueil (« À partir de : 3 ½ 1 775$ / mois | 4 ½ 2 600$ | 5 ½ 2 625$ », tout inclus). Une annonce par phase × typologie (pas d'inventaire unité par unité public), avec les plans de la typologie en images. | |
| 10 | + | |
| 11 | +- **Site** : https://stationhorizon.com | |
| 12 | +- **Page des annonces** : https://stationhorizon.com/plans-des-unites-phase-1/ | |
| 13 | +- **Secteurs couverts** : Mont-Saint-Hilaire (Village de la Gare) | |
| 14 | +- **Module** : `louka/connectors/station_horizon.py` — classe `StationHorizonConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://stationhorizon.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://stationhorizon.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 6 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 3½ — Station Horizon, phase 1 | | |
| 33 | +| `address` | Adresse civique | 100 % | 550-650-700, boulevard de la Gare, Mont-Saint-Hilaire | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Mont-Saint-Hilaire | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 775 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 2 photo(s) — https://stationhorizon.com/wp-content/uploads/2024/12/24-022-Mont-Saint-Hila… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Internet", "5 électroménagers", "Stationnement intérieur et extérieur (Optionnel)", "Ea… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true, "internet": true}, "appliances": {"fridge": true}, "ac… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://stationhorizon.com/plans-des-unites-phase-1/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:54 — 6 trouvées, +6 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 6 au total, **6 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync station_horizon` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='station_horizon' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/stb_immobilier.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # STB Immobilier — connecteur `stb_immobilier` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Bas-Saint-Laurent · Backend : direct · Annonces actives : 11/11 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 11 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 11 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 11 au total, **11 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 91 % · prix 73 % · photos 100 % · description 73 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/summit.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Summit Property Management — connecteur `summit` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 30/30 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Summit Property Management (summitmanagement.ca — 3 000+ unités à Montréal : Vue/Triangle, LIV, Allegra, IVY, Le V, Le Duke, Skyla, Le 400 Sherbrooke Ouest, RIVA…). Plateforme Rentsync/LiftSystem : la page /apartments expose client_id et city_ids (div.search-data) et son /scripts/main.js embarque le jeton public du flux officiel https://api.theliftsystem.com/v2/search — aucun rendu JavaScript nécessaire. Comme hazelview.py, on interroge le flux par nombre de chambres (min_bed/max_bed + only_available_suites) pour obtenir, par immeuble ET par type d'unité, les loyers réels (stats min/max), la superficie et le nombre d'unités disponibles -> une annonce par immeuble et par type d'unité (uid stables « <id>-<n>bed »). ⚠️ Gestionnaire pancanadien (Ottawa aussi servie par le même flux) : garde-fou province_code == QC — seules les propriétés montréalaises passent. La fiche immeuble du site (rendu serveur) fournit la galerie assets.rentsync.com, via le cache BD self.detail() (revisitée seulement quand la ligne du flux change). | |
| 10 | + | |
| 11 | +- **Site** : https://www.summitmanagement.ca | |
| 12 | +- **Page des annonces** : https://www.summitmanagement.ca/apartments | |
| 13 | +- **Secteurs couverts** : Montréal (Le Triangle/CDN — Vue 5-6-7, centre-ville — LIV, IVY, Le V, Le Duke, Skyla, Le 400 Sherbrooke O., RIVA, Allegra) | |
| 14 | +- **Module** : `louka/connectors/summit.py` — classe `SummitConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : API JSON interne du site | |
| 19 | +- **Endpoint de base** : https://www.summitmanagement.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://api.theliftsystem.com/v2/search · https://www.summitmanagement.ca · https://api.theliftsystem.com/v2/search?locale= | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 30 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | RIVA 1 — Studio | | |
| 33 | +| `address` | Adresse civique | 100 % | 1160 chemin du Golf, Montréal, H3E 1H4 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 90 % | Verdun | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 550 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 434 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 45.463286 | | |
| 43 | +| `description` | Description | 100 % | Riva Uno is a luxury apartment complex located on Nuns' Island. This complex is surrounde… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 19 photo(s) — https://assets.rentsync.com/summit/images/gallery/full/1707422730121_80195-… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"building": "RIVA 1", "contact": {"phone": "514-813-0699", "email": "info@rivauno.com"},… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.summitmanagement.ca/apartments/riva-uno | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:55 — 30 trouvées, +30 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 30 au total, **30 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync summit` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='summit' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/summum.md
+4 −7
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Gestion immobilière Summum — connecteur `summum` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 89/97 |
| 6 | 6 | |
@@ -49,16 +49,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | 51 | - **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:09 — 89 trouvées, +0 / ~0 / -0 | |
| 52 | +- **Dernier passage OK** : 2026-08-24 23:59 — 89 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 97 au total, **89 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-24 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | −- **Runs journalisés (60 derniers)** : 60, dont 5 en erreur | |
| 61 | +- **Runs journalisés (60 derniers)** : 60, dont 2 en erreur | |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
| 64 | 64 | |
@@ -66,9 +66,6 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 66 | 66 | |---|---| |
| 67 | 67 | | 2026-08-19 21:15 | HTTPSConnectionPool(host='location.summumpm.com', port=443): Read timed out. (read timeout=30) | |
| 68 | 68 | | 2026-08-19 15:40 | HTTPSConnectionPool(host='location.summumpm.com', port=443): Read timed out. (read timeout=30) | |
| 69 | −| 2026-08-17 09:04 | HTTPSConnectionPool(host='location.summumpm.com', port=443): Read timed out. (read timeout=30) | | |
| 70 | −| 2026-08-17 03:03 | HTTPSConnectionPool(host='location.summumpm.com', port=443): Read timed out. (read timeout=30) | | |
| 71 | −| 2026-08-16 01:50 | HTTPSConnectionPool(host='location.summumpm.com', port=443): Read timed out. (read timeout=30) | | |
| 72 | 69 | |
| 73 | 70 | Rejouer la source seule : `python3 run.py sync summum` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='summum' ORDER BY ts DESC LIMIT 5;`). |
| 74 | 71 | |
modified
docs/connecteurs/sutton.md
+10 −10
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Groupe Sutton Québec (location) — connecteur `sutton` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 1205/1493 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 1214/1528 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ Groupe Sutton Québec (suttonquebec.com) — LOCATIONS Couverture exhaustive via | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1205 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 1214 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -35,9 +35,9 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 35 | 35 | | `sector` | Secteur / quartier | 73 % | Le Plateau-Mont-Royal | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | 37 | | `price` | Loyer mensuel ($) | 100 % | 1 950 $ | |
| 38 | −| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | −| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | −| `area_sqft` | Superficie (pi²) | 50 % | 828 | | |
| 38 | +| `bedrooms` | Chambres | 99 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 99 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 51 % | 828 | | |
| 41 | 41 | | `availability_date` | Date de disponibilité | 0 % | — | |
| 42 | 42 | | `lat` | GPS (lat/lng) | 99 % | 45.515478342 | |
| 43 | 43 | | `description` | Description | 98 % | Charmant et lumineux condo de 2 chambres idéalement situé au coeur du vibrant Plateau. Av… | |
@@ -48,16 +48,16 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:10 — 1199 trouvées, +3 / ~17 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 00:01 — 1208 trouvées, +3 / ~60 / -12 | |
| 53 | 53 | - **Throttling** : 0.5 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | - **Caps / budgets du module** : `SITEMAP_MAX_PAGES` = 40 |
| 56 | 56 | |
| 57 | 57 | ## Volumétrie & complétude |
| 58 | 58 | |
| 59 | −- **Annonces en BD** : 1493 au total, **1205 actives** | |
| 60 | −- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Annonces en BD** : 1528 au total, **1214 actives** | |
| 60 | +- **Première ingestion** : 2026-08-12 · **Dernière observation** : 2026-08-25 | |
| 61 | 61 | - **Complétude clé (actives)** : GPS 99 % · prix 100 % · photos 100 % · description 98 % |
| 62 | 62 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 63 | 63 | |
added
docs/connecteurs/symbio.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Symbio (Développement FTG / Claridge) — connecteur `symbio` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Lanaudière · Backend : direct · Annonces actives : 37/37 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Symbio (symbiohabitat.ca) — immeuble locatif de 219 unités (Développement FTG / Claridge) au 1475, rue Yves-Blais, Terrebonne (Lachenaie). La page /appartements/ embarque une application React « plans » (iframe wp-content/themes/hello-elementor/iframe) qui lit son inventaire dans une feuille Google Sheets PUBLIÉE EN CSV : colonnes Unit, Area (pi²), Type (n -> n½), Chambers, Bathrooms, Balcony (pi²), Price, Status (Available/Rented), PDF (plan). On découvre l'URL du CSV en suivant iframe -> main.<hash>.js (repli : URL relevée 2026-08-25). Granularité UNITÉ : prix, pi², chambres/sdb, plan PDF par unité. | |
| 10 | + | |
| 11 | +- **Site** : https://symbiohabitat.ca | |
| 12 | +- **Page des annonces** : https://symbiohabitat.ca/appartements/ | |
| 13 | +- **Secteurs couverts** : Terrebonne — Lachenaie (1475 rue Yves-Blais, 219 unités) | |
| 14 | +- **Module** : `louka/connectors/symbio.py` — classe `SymbioConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://symbiohabitat.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://symbiohabitat.ca · https://docs.google.com/spreadsheets/d/e/2PACX-1vSv4yfAI-E4opE | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 37 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Symbio — unité 106 | | |
| 33 | +| `address` | Adresse civique | 100 % | 1475, rue Yves-Blais, Terrebonne | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Terrebonne | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Lachenaie | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 2½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 293 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 429 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Unité 106 au Symbio, Terrebonne (Lachenaie). 429 pi², 1 chambre(s), 1 salle(s) de bain. | | |
| 44 | +| `images` | Photos (JSON) | 0 % | — | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Gym", "Chalet urbain avec terrasse", "Bornes de recharge électrique", "Ascenseurs"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"elevator": true, "balcony": true, "gym": true, "plan_pdf": "https://symbiohabitat.ca/wp… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://symbiohabitat.ca/appartements/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:55 — 37 trouvées, +37 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 37 au total, **37 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 0 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync symbio` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='symbio' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/terater.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Les Constructions Tèratèr — connecteur `terater` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Estrie · Backend : direct · Annonces actives : 12/14 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:10 — 12 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 00:01 — 12 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 14 au total, **12 actives** |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 67 % · prix 100 % · photos 100 % · description 0 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 1 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/terra.md
+9 −9
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Terra Condos locatifs — connecteur `terra` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Québec · Backend : direct · Annonces actives : 28/51 | |
| 5 | +**État : actif** · Région : Québec · Backend : direct · Annonces actives : 26/51 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur TERRA Condos locatifs (terracondolocatif.ca) Projet de 4 phases sur l | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 28 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 26 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -34,7 +34,7 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 34 | 34 | | `city` | Ville (normalisée) | 100 % | Lévis | |
| 35 | 35 | | `sector` | Secteur / quartier | 100 % | Desjardins (Lévis) | |
| 36 | 36 | | `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | |
| 37 | −| `price` | Loyer mensuel ($) | 89 % | 1 295 $ | | |
| 37 | +| `price` | Loyer mensuel ($) | 88 % | 1 295 $ | | |
| 38 | 38 | | `bedrooms` | Chambres | 100 % | 2 | |
| 39 | 39 | | `bathrooms` | Salles de bain | 0 % | — | |
| 40 | 40 | | `area_sqft` | Superficie (pi²) | 100 % | 1381 | |
@@ -48,16 +48,16 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:10 — 28 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 00:01 — 26 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 51 au total, **28 actives** | |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 60 | −- **Complétude clé (actives)** : GPS 100 % · prix 89 % · photos 100 % · description 100 % | |
| 58 | +- **Annonces en BD** : 51 au total, **26 actives** | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 88 % · photos 100 % · description 100 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
added
docs/connecteurs/terrasse_pionniers.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Terrasse des Pionniers (appartements neufs) — connecteur `terrasse_pionniers` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laurentides · Backend : direct · Annonces actives : 2/2 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Terrasse des Pionniers (terrassedespionniers.ca — appartements locatifs neufs long terme au 973, rue Saint-Faustin à Mont-Blanc (Laurentides), près de la station de ski ; 16 unités 4½ + 4 unités 5½). WordPress/Elementor + JetEngine rendu SERVEUR : l'accueil expose une carte par TYPOLOGIE (badge de disponibilité dynamique « Disponible »/« Non-Disponible », nb d'unités, prix « à partir de », superficie) ; la fiche liste les inclusions (« Le loyer comprend : ») et la galerie. Granularité TYPOLOGIE (external_id = slug WordPress de la fiche, stable). Le badge de disponibilité est repris tel quel dans `availability` (peut être « Non-Disponible » quand tout est loué — bail au 1er juillet). | |
| 10 | + | |
| 11 | +- **Site** : https://terrassedespionniers.ca | |
| 12 | +- **Page des annonces** : https://terrassedespionniers.ca/#nos-logements | |
| 13 | +- **Secteurs couverts** : Mont-Blanc | |
| 14 | +- **Module** : `louka/connectors/terrasse_pionniers.py` — classe `TerrassePionniersConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://terrassedespionniers.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://terrassedespionniers.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.8 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 2 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Appartement 4½ — Terrasse des Pionniers | | |
| 33 | +| `address` | Adresse civique | 100 % | 973, rue Saint-Faustin | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Mont-Blanc | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 549 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1063 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Chaque 4 ½ offre une belle luminosité naturelle, deux chambres fermées de bonnes dimensio… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 11 photo(s) — https://terrassedespionniers.ca/wp-content/uploads/2025/11/24ZN006-haute-re… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Un espace de stationnement extérieur privé", "Un seul animal accepté, certaines conditi… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"heating": true}, "appliances": {"fridge": true}, "ac": true, "balcony": … | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://terrassedespionniers.ca/appartements/4-et-demi-condo-locatif-neuf/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:55 — 2 trouvées, +2 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 2 au total, **2 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync terrasse_pionniers` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='terrasse_pionniers' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.8 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/thrace.md
+7 −7
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Gestions Thrace — connecteur `thrace` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 162/182 | |
| 5 | +**État : actif** · Région : Mauricie · Backend : direct · Annonces actives : 161/182 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ connecteur Gestions Thrace (gestionsthrace.com) Plus gros gestionnaire de la Mau | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 162 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 161 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
@@ -48,15 +48,15 @@ Le connecteur (direct, sitemap XML + pages HTML) alimente les colonnes de la tab | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:10 — 162 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 00:01 — 161 trouvées, +0 / ~0 / -1 | |
| 53 | 53 | - **Throttling** : 0.8 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 182 au total, **162 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-22 | |
| 58 | +- **Annonces en BD** : 182 au total, **161 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 65 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
added
docs/connecteurs/tour_fides.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# La Tour Fides — connecteur `tour_fides` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 10/10 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur La Tour Fides (latourfides.com) 290 unités locatives au 235, boulevard René-Lévesque Est (Ville-Marie, Montréal). Le site WordPress ne publie aucun prix (le « budget » de la page d'accueil est un menu de formulaire) : les vraies données vivent sur le portail Yardi RentCafe/SecureCafe latourfides.securecafe.com/onlineleasing/la-tour-fides/floorplans.aspx, protégé par Cloudflare (403 direct) -> Scrapfly (ASP + rendu JS). La page floorplans expose un accordéon par plan (data-selenium-id FloorPlanName_n / Bed_Bath_n / Rent_n / Availability_n / floorplandesc_n) avec fourchette de loyer réelle, superficie, salles de bain et carrousel de plans par unité (id fp-myCarousel<FloorPlanID>, identifiant RentCafe STABLE -> external_id). Une annonce par plan (granularité la plus fine publiée, comme elite.py). Les photos du projet viennent du site vitrine latourfides.com (accès direct, wp-content). | |
| 10 | + | |
| 11 | +- **Site** : https://latourfides.com | |
| 12 | +- **Page des annonces** : https://latourfides.securecafe.com/onlineleasing/la-tour-fides/floorplans.aspx?nocache=-1 | |
| 13 | +- **Secteurs couverts** : Montréal (Ville-Marie — 235 boul. René-Lévesque Est, 290 unités) | |
| 14 | +- **Module** : `louka/connectors/tour_fides.py` — classe `TourFidesConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://latourfides.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://latourfides.com · https://latourfides.securecafe.com/onlineleasing/ | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 1.0 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 10 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | La Tour Fides — Studio | | |
| 33 | +| `address` | Adresse civique | 100 % | 235, boulevard René-Lévesque Est, Montréal, QC H2X 1N8 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Montréal | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Ville-Marie | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | Studio | | |
| 37 | +| `price` | Loyer mensuel ($) | 90 % | 1 500 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 0 | | |
| 39 | +| `bathrooms` | Salles de bain | 100 % | 1 | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 323 | | |
| 41 | +| `availability_date` | Date de disponibilité | 90 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Découvrez les condos neufs à louer de la Tour Fides à Ville-Marie, Montréal! Offrez-vous … | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 18 photo(s) — https://latourfides.com/wp-content/uploads/2025/07/Designstor-20106_ReneLev… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Superficie : 323 à 534 pi²"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"price_from": true, "contact": {"phone": "514-700-2589"}} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://latourfides.securecafe.com/onlineleasing/la-tour-fides/floorplans.aspx?nocache=-1 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:55 — 10 trouvées, +10 / ~0 / -0 | |
| 53 | +- **Throttling** : 1.0 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 10 au total, **10 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 90 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync tour_fides` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='tour_fides' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 1.0 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/tours_st_martin.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Les Tours Saint-Martin — connecteur `tours_st_martin` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Laval · Backend : direct · Annonces actives : 41/41 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Les Tours Saint-Martin (lestourssaintmartin.ca) — deux tours locatives de 12 étages au 2976, boulevard Saint-Martin Ouest, Laval (Chomedey). Même thème WordPress maison que Le L Laval (l_laval.py) : pages /plans/ (phase 1) et /plans-phase-2/ avec une ligne <tr id="rowUnitNNN"> par unité — classe « not-available » = louée ; onclick=loadPage(unité, prix, pi², étage, état, modèle, typologie). Les prix par unité ne sont pas publiés : on récupère les « à partir de » affichés sur la page d'accueil (ex. « Grands 4½ à partir de 1972$/mois ») comme price_label par typologie. Granularité : unité. | |
| 10 | + | |
| 11 | +- **Site** : https://lestourssaintmartin.ca | |
| 12 | +- **Page des annonces** : https://lestourssaintmartin.ca/plans/ | |
| 13 | +- **Secteurs couverts** : Laval (Chomedey — 2976, boulevard Saint-Martin Ouest, phases 1 et 2) | |
| 14 | +- **Module** : `louka/connectors/tours_st_martin.py` — classe `ToursStMartinConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://lestourssaintmartin.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://lestourssaintmartin.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 41 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Les Tours Saint-Martin (phase 1) — Unité 202 | | |
| 33 | +| `address` | Adresse civique | 100 % | 2976, boulevard Saint-Martin Ouest, Laval | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Laval | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Chomedey | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 3½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 39 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 1 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 790 | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Phase 1 — Unité 202, 2e étage — Modèle A3 | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 10 photo(s) — https://lestourssaintmartin.ca/wp-content/uploads/2022/07/TSM-Auto-Reply-01… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 39 % | {} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://lestourssaintmartin.ca/plans/#unite-202 | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:55 — 41 trouvées, +41 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 41 au total, **41 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 39 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync tours_st_martin` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='tours_st_martin' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/trams.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# T.R.A.M.S Property Management — connecteur `trams` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montréal · Backend : direct · Annonces actives : 3/3 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur T.R.A.M.S Property Management (tramsmgmt.com) Gestionnaire montréalais : 3 immeubles locatifs résidentiels au Québec — Chateau Ste-Marie (Kirkland), L'Ambiance Ouest (Dollard-des-Ormeaux), Palacio D'Anjou (Anjou). WordPress rendu serveur : la page /residential-properties-for-rent/ liste les cartes (les propriétés de Floride sont EXCLUES) ; chaque page /property/<slug>/ donne l'adresse, la description, les caractéristiques (ul) et le contact. AUCUN prix ni inventaire par unité publié (le lien securecafe/Yardi n'est que le portail des résidents) → une annonce par immeuble, comme brochu.py. | |
| 10 | + | |
| 11 | +- **Site** : https://tramsmgmt.com | |
| 12 | +- **Page des annonces** : https://tramsmgmt.com/residential-properties-for-rent/ | |
| 13 | +- **Secteurs couverts** : Kirkland (Chateau Ste-Marie), Dollard-des-Ormeaux (L'Ambiance Ouest), Anjou (Palacio D'Anjou) | |
| 14 | +- **Module** : `louka/connectors/trams.py` — classe `TramsConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://tramsmgmt.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://tramsmgmt.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.7 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 3 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | Chateau Ste-Marie — appartements à louer (Kirkland) | | |
| 33 | +| `address` | Adresse civique | 100 % | 17000 Chemin Ste-Marie, Kirkland, QC, H9J 4B9 | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Kirkland | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 0 % | — | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 0 % | — | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 33 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 6 photo(s) — https://tramsmgmt.com/wp-content/uploads/2020/01/Chateaux-StMarie_DSC_3629_W… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["One and two bedroom luxury apartments", "Hardwood floors with ceramics in the kitchen a… | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "balcony": true, "laundry": true, "parking": {"available": true}, "contact":… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://tramsmgmt.com/property/chateau-ste-marie/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:55 — 3 trouvées, +3 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.7 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 3 au total, **3 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 33 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync trams` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='trams' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.7 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
added
docs/connecteurs/treana.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# TREANA — connecteur `treana` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Montérégie · Backend : direct · Annonces actives : 45/45 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur TREANA (treana.ca) — condos locatifs en Montérégie : Saint-Jean-sur-Richelieu (374-378, rue Jacques-Cartier Sud), Sainte-Catherine phases I et II (1155, rue Centrale) et Venise-en-Québec (4 immeubles TREANA III à VI). WordPress + Elementor rendu serveur : chaque page projet porte une ou plusieurs tables d'unités (colonnes « Unité | Type | Étage | Grandeur | Superficie | Prix/mois »). Seules les tables avec la colonne « Type » sont lues (les tables 5 colonnes en aval sont des fiches par typologie qui répètent les mêmes unités). Le site n'affiche pas de prix : « - » = sur demande (ingéré sans prix), « LOUÉ » = exclu — la page Sainte-Catherine II peut donc donner 0 annonce. À Venise, l'immeuble (TREANA III…VI) vient du titre précédant la table. | |
| 10 | + | |
| 11 | +- **Site** : https://treana.ca | |
| 12 | +- **Page des annonces** : https://treana.ca/saint-jean-sur-richelieu/ | |
| 13 | +- **Secteurs couverts** : Saint-Jean-sur-Richelieu, Sainte-Catherine, Venise-en-Québec | |
| 14 | +- **Module** : `louka/connectors/treana.py` — classe `TreanaConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://treana.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://treana.ca | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 45 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 4½ — Unité 101, TREANA (Saint-Jean-sur-Richelieu) | | |
| 33 | +| `address` | Adresse civique | 47 % | 374-378, rue Jacques-Cartier Sud, Saint-Jean-sur-Richelieu | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Jean-sur-Richelieu | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 4½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 0 % | — | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 2 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 100 % | 1272 | | |
| 41 | +| `availability_date` | Date de disponibilité | 0 % | — | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 8 photo(s) — https://www.treana.ca/wp-content/uploads/2024/12/TREANA-ST-JEAN_2024-11-09-7… | | |
| 45 | +| `amenities` | Commodités (JSON) | 27 % | ["Tout inclus"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"floor_label": "Rez-de-chaussée", "type_plan": "Type B"} | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://treana.ca/saint-jean-sur-richelieu/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:56 — 45 trouvées, +45 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 45 au total, **45 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 0 % · photos 100 % · description 0 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync treana` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='treana' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/tri_logis.md
+27 −27
@@ -1,12 +1,12 @@ | ||
| 1 | 1 | # Société immobilière Tri-Logis — connecteur `tri_logis` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 0/1 | |
| 5 | +**État : actif** · Région : Abitibi-Témiscamingue · Backend : direct · Annonces actives : 46/52 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
| 9 | −connecteur Société immobilière Tri-Logis inc. (tri-logis.ca — Rouyn-Noranda, 600+ logements, référence n°1 en Abitibi-Témiscamingue). Site custom statique, tout rendu serveur. Liste /espaces-a-louer/logements : un bloc par immeuble (adresse, secteur, proximité) ; seules les unités disponibles y ont une rangée (type, texte de disponibilité, prix). Fiche unité /espaces-a-louer/immeuble/<imm>/<unité> (via cache BD) : adresse complète avec code postal, description (bloc « Apartment Features » : étage, inclusions, animaux…), galerie pleine taille, inclusions. Périmètre : logements résidentiels seulement — les pages /studios (meublés loués à la nuitée : « les prix des locations de moins de 31 nuitées… ») et /chalets (court terme) sont exclues. Pas de robots.txt (= tout permis). | |
| 9 | +connecteur Société immobilière Tri-Logis inc. (trilogis.ca — Rouyn-Noranda, 600+ logements, référence n°1 en Abitibi-Témiscamingue). Réécrit 2026-08-23 : l'ancien site statique tri-logis.ca (/espaces-a-louer/logements) a migré vers trilogis.ca (301) — Next.js App Router (Vercel) + Supabase (projet tcrymlwdnwmfmpnkrfeu.supabase.co, bucket privé property-media). Méthode : la liste /a-louer est rendue serveur ; le payload RSC embarqué dans le HTML (segments self.__next_f.push) contient le tableau JSON `"units":[…]` complet des unités actuellement à louer — unit_id (UUID), unit_name (slug de la fiche = minuscules), unit_type (residential / commercial), building_address, status (vacant / departure_planned), available_date, monthly_rent, rooms_notation (« 4 ½ »), bedrooms (cohérent : n½ -> n-2), square_feet, sector, latitude/longitude, cover_photo_url et le dict inclusions (heating/electricity/… = landlord|tenant|na ; parking/laundry/furnished/balcony/pets = bool). Fiche /a-louer/<slug> (RSC aussi) : galerie complète `"photos":[…]`. ⚠ Les URLs d'images sont SIGNÉES (bucket privé, token ~7 jours, l'accès public renvoie 400) : elles sont re-signées à chaque rendu, donc on rafraîchit la galerie à chaque sync (clé de cache = iat du token de la couverture) plutôt que de servir des liens expirés. La clé anon Supabase n'est PAS exposée dans les chunks JS (tout est rendu serveur) : l'API REST /rest/v1 n'est donc pas utilisable — le RSC est la voie robuste. Périmètre : logements résidentiels longue durée seulement (unit_type == "residential") ; les locaux commerciaux du même payload sont exclus, comme l'étaient /studios et /chalets sur l'ancien site. | |
| 10 | 10 | |
| 11 | 11 | - **Site** : https://tri-logis.ca |
| 12 | 12 | - **Page des annonces** : https://tri-logis.ca/espaces-a-louer/logements |
@@ -16,8 +16,8 @@ connecteur Société immobilière Tri-Logis inc. (tri-logis.ca — Rouyn-Noranda | ||
| 16 | 16 | ## Accès |
| 17 | 17 | |
| 18 | 18 | - **Type d'accès** : pages HTML (rendu serveur) |
| 19 | −- **Endpoint de base** : https://tri-logis.ca | |
| 20 | −- **URLs de départ (constantes du module)** : https://tri-logis.ca | |
| 19 | +- **Endpoint de base** : https://trilogis.ca | |
| 20 | +- **URLs de départ (constantes du module)** : https://trilogis.ca | |
| 21 | 21 | - **Authentification** : aucune — contenu public |
| 22 | 22 | - **Pagination** : page de liste unique (pas de pagination) |
| 23 | 23 | - **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) |
@@ -25,39 +25,39 @@ connecteur Société immobilière Tri-Logis inc. (tri-logis.ca — Rouyn-Noranda | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 0 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 46 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
| 31 | 31 | |---|---|---|---| |
| 32 | −| `title` | Titre de l'annonce | — | 992 avenue Larivière — 4 1/2 | | |
| 33 | −| `address` | Adresse civique | — | 992 Av. Larivière, Rouyn-Noranda, QC J9X 4K5 | | |
| 34 | −| `city` | Ville (normalisée) | — | Rouyn-Noranda | | |
| 35 | −| `sector` | Secteur / quartier | — | Principale | | |
| 36 | −| `unit_type` | Type d'unité (3½, 4½…) | — | 4½ | | |
| 37 | −| `price` | Loyer mensuel ($) | — | 1 160 $ | | |
| 38 | −| `bedrooms` | Chambres | — | 2 | | |
| 39 | −| `bathrooms` | Salles de bain | — | — | | |
| 40 | −| `area_sqft` | Superficie (pi²) | — | — | | |
| 41 | −| `availability_date` | Date de disponibilité | — | now | | |
| 42 | −| `lat` | GPS (lat/lng) | — | 48.2249359 | | |
| 43 | −| `description` | Description | — | Address: 992-B_Lariviere Availability: NOW Price: $1160 per month Apartment Features Size… | | |
| 44 | −| `images` | Photos (JSON) | — | 8 photo(s) — https://www.tri-logis.ca/resources/images/logis/992-B_Lariviere_salon_b.jpeg | | |
| 45 | −| `amenities` | Commodités (JSON) | — | [] | | |
| 46 | −| `details` | Détails additionnels (JSON) | — | {"contact": {"phone": "819-762-3435", "email": "info@tri-logis.ca"}, "building": "992 ave… | | |
| 47 | −| `url` | URL de l'annonce source | — | https://www.tri-logis.ca/espaces-a-louer/immeuble/992-avenue-lariviere/992-b-lariviere | | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 5 ½ — 74-78 Mgr-Tessier-O | | |
| 33 | +| `address` | Adresse civique | 100 % | 74-78 Mgr-Tessier-O, Rouyn-Noranda | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Rouyn-Noranda | | |
| 35 | +| `sector` | Secteur / quartier | 100 % | Centre-ville | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 400 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 3 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 0 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | 2027-02-01 | | |
| 42 | +| `lat` | GPS (lat/lng) | 100 % | 48.2393127 | | |
| 43 | +| `description` | Description | 0 % | — | | |
| 44 | +| `images` | Photos (JSON) | 91 % | 7 photo(s) — https://tcrymlwdnwmfmpnkrfeu.supabase.co/storage/v1/object/sign/property-med… | | |
| 45 | +| `amenities` | Commodités (JSON) | 100 % | ["Eau incluse", "Eau chaude incluse", "Internet inclus", "Buanderie"] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"inclusions": {"hot_water": true, "internet": true}, "laundry": true, "building": "74-78… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://trilogis.ca/a-louer/76-12_mgr-tessier-o | | |
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:10 — 0 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 00:01 — 46 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | −- **Annonces en BD** : 1 au total, **0 actives** | |
| 59 | −- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-09 | |
| 60 | −- **Complétude clé (actives)** : GPS — · prix — · photos — · description — | |
| 58 | +- **Annonces en BD** : 52 au total, **46 actives** | |
| 59 | +- **Première ingestion** : 2026-08-09 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 91 % · description 0 % | |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
| 63 | 63 | ## Erreurs connues & dépannage |
added
docs/connecteurs/trouve_ton_appart.md
+79 −0
@@ -0,0 +1,79 @@ | ||
| 1 | +# Trouve Ton Appart (Construction Léandre Demers) — connecteur `trouve_ton_appart` | |
| 2 | + | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | + | |
| 5 | +**État : actif** · Région : Chaudière-Appalaches · Backend : direct · Annonces actives : 4/4 | |
| 6 | + | |
| 7 | +## Description de la source | |
| 8 | + | |
| 9 | +connecteur Trouve-Ton-Appart (trouve-ton-appart.com — regroupe 3 propriétaires familiaux : Construction Léandre Demers, Immeubles Des Rochers, Immeubles Morency). ~229 fiches dans Lotbinière (Laurier-Station, St-Flavien, St-Agapit, St-Apollinaire), Lévis (St-Nicolas, St-Rédempteur, St-Romuald), Québec, Ste-Marie et Trois-Rivières. Page /logements/ rendue serveur (PHP maison « Dix-Onze ») : sections <h2>Ville</h2> puis cartes div.loge — pastille img.dispo green.png = Disponible / red.png = Non disponible. On n'ingère QUE les unités disponibles (pastille verte). Fiche /logements/logement/<id>/<slug>/ (via cache BD) : description, grandeur + prix, propriétaire gestionnaire (nom + téléphone + courriel) et photo principale. | |
| 10 | + | |
| 11 | +- **Site** : https://www.trouve-ton-appart.com | |
| 12 | +- **Page des annonces** : https://www.trouve-ton-appart.com/logements/ | |
| 13 | +- **Secteurs couverts** : Beauce et Lotbinière : Sainte-Marie, Saint-Agapit, Saint-Apollinaire, Saint-Flavien — seules les unités disponibles (pastille verte) sont ingérées | |
| 14 | +- **Module** : `louka/connectors/trouve_ton_appart.py` — classe `TrouveTonAppartConnector` | |
| 15 | + | |
| 16 | +## Accès | |
| 17 | + | |
| 18 | +- **Type d'accès** : pages HTML (rendu serveur) | |
| 19 | +- **Endpoint de base** : https://www.trouve-ton-appart.com | |
| 20 | +- **URLs de départ (constantes du module)** : https://www.trouve-ton-appart.com | |
| 21 | +- **Authentification** : aucune — contenu public | |
| 22 | +- **Pagination** : page de liste unique (pas de pagination) | |
| 23 | +- **Backend anti-bot / rendu** : requests direct (session UA LouKaBot, throttling poli) | |
| 24 | +- **Politesse** : 0.6 s entre requêtes, timeout 30 s, User-Agent identifiable `LouKaBot/1.0 (+https://www.lou-ka.com/bot)` | |
| 25 | + | |
| 26 | +## Champs récupérés → schéma cible | |
| 27 | + | |
| 28 | +Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 4 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | + | |
| 30 | +| Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | | |
| 31 | +|---|---|---|---| | |
| 32 | +| `title` | Titre de l'annonce | 100 % | 1257-3 rue Centenaire, St-Agapit | | |
| 33 | +| `address` | Adresse civique | 100 % | 1257-3 rue Centenaire, St-Agapit | | |
| 34 | +| `city` | Ville (normalisée) | 100 % | Saint-Agapit | | |
| 35 | +| `sector` | Secteur / quartier | 0 % | — | | |
| 36 | +| `unit_type` | Type d'unité (3½, 4½…) | 100 % | 5½ | | |
| 37 | +| `price` | Loyer mensuel ($) | 100 % | 1 190 $ | | |
| 38 | +| `bedrooms` | Chambres | 100 % | 3 | | |
| 39 | +| `bathrooms` | Salles de bain | 0 % | — | | |
| 40 | +| `area_sqft` | Superficie (pi²) | 75 % | — | | |
| 41 | +| `availability_date` | Date de disponibilité | 100 % | now | | |
| 42 | +| `lat` | GPS (lat/lng) | 0 % | — | | |
| 43 | +| `description` | Description | 100 % | Construction neuve aire climatisé Rangement extérieur 2 stationnements 1 JUILLET disponib… | | |
| 44 | +| `images` | Photos (JSON) | 100 % | 1 photo(s) — https://www.trouve-ton-appart.com/app_photos/255/pp_8b4df0ae465d7ff31c91e458… | | |
| 45 | +| `amenities` | Commodités (JSON) | 0 % | [] | | |
| 46 | +| `details` | Détails additionnels (JSON) | 100 % | {"ac": true, "storage": true, "pets": "conditions", "parking": {"available": true, "inclu… | | |
| 47 | +| `url` | URL de l'annonce source | 100 % | https://www.trouve-ton-appart.com/logements/logement/255/1257-3-rue-centenaire-st-agapit/ | | |
| 48 | + | |
| 49 | +## Fréquence & budget | |
| 50 | + | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : — | |
| 52 | +- **Dernier passage OK** : 2026-08-25 01:56 — 4 trouvées, +4 / ~0 / -0 | |
| 53 | +- **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) | |
| 54 | +- **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées | |
| 55 | + | |
| 56 | +## Volumétrie & complétude | |
| 57 | + | |
| 58 | +- **Annonces en BD** : 4 au total, **4 actives** | |
| 59 | +- **Première ingestion** : 2026-08-25 · **Dernière observation** : 2026-08-25 | |
| 60 | +- **Complétude clé (actives)** : GPS 0 % · prix 100 % · photos 100 % · description 100 % | |
| 61 | +- **Runs journalisés (60 derniers)** : 1, dont 0 en erreur | |
| 62 | + | |
| 63 | +## Erreurs connues & dépannage | |
| 64 | + | |
| 65 | +Aucune erreur dans les 60 derniers runs journalisés. | |
| 66 | + | |
| 67 | +Rejouer la source seule : `python3 run.py sync trouve_ton_appart` · vérifier ensuite `sync_log` (`SELECT * FROM sync_log WHERE source='trouve_ton_appart' ORDER BY ts DESC LIMIT 5;`). | |
| 68 | + | |
| 69 | +## Licence, attribution & conditions | |
| 70 | + | |
| 71 | +- Scraping poli d'annonces **publiques** (données factuelles : prix, adresse, disponibilité) publiées par le gestionnaire sur son propre site. | |
| 72 | +- User-Agent **identifiable** avec page d'information et contact : `LouKaBot/1.0 (+https://www.lou-ka.com/bot; contact@spboucher.ai)` ; throttling 0.6 s ; cache détail pour minimiser les requêtes. | |
| 73 | +- Chaque annonce affichée sur Lou-Ka **pointe vers l'annonce d'origine** (colonne `url`) — la source garde le trafic de conversion. | |
| 74 | +- Retrait sur demande : contact@spboucher.ai. | |
| 75 | + | |
| 76 | +## Historique | |
| 77 | + | |
| 78 | +- 2026-08-25 — premières annonces de la source ingérées dans la BD. | |
| 79 | +- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`). | |
modified
docs/connecteurs/trudel.md
+1 −1
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Trudel (Fleur de Lys, LGC) — connecteur `trudel` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : désactivé (disabled=True)** · Région : Québec · Backend : direct · Annonces actives : 0/30 |
| 6 | 6 | |
modified
docs/connecteurs/trylon.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Trylon Apartments — connecteur `trylon` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | 5 | **État : actif** · Région : Montréal · Backend : direct · Annonces actives : 7/7 |
| 6 | 6 | |
@@ -48,15 +48,15 @@ Le connecteur (direct, pages HTML (rendu serveur)) alimente les colonnes de la t | ||
| 48 | 48 | |
| 49 | 49 | ## Fréquence & budget |
| 50 | 50 | |
| 51 | −- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.8 h | |
| 52 | −- **Dernier passage OK** : 2026-08-22 19:10 — 7 trouvées, +0 / ~0 / -0 | |
| 51 | +- **Cadence observée** (médiane des passages OK, sync_log) : ≈ 2.9 h | |
| 52 | +- **Dernier passage OK** : 2026-08-25 00:01 — 7 trouvées, +0 / ~0 / -0 | |
| 53 | 53 | - **Throttling** : 0.6 s entre requêtes (constante de classe `request_delay`) |
| 54 | 54 | - **Cache des pages détail (BD `detail_cache`)** : activé — évite de re-visiter les fiches inchangées |
| 55 | 55 | |
| 56 | 56 | ## Volumétrie & complétude |
| 57 | 57 | |
| 58 | 58 | - **Annonces en BD** : 7 au total, **7 actives** |
| 59 | −- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-22 | |
| 59 | +- **Première ingestion** : 2026-08-06 · **Dernière observation** : 2026-08-25 | |
| 60 | 60 | - **Complétude clé (actives)** : GPS 100 % · prix 100 % · photos 100 % · description 100 % |
| 61 | 61 | - **Runs journalisés (60 derniers)** : 60, dont 0 en erreur |
| 62 | 62 | |
modified
docs/connecteurs/ubee.md
+3 −3
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Ubee (location) — connecteur `ubee` |
| 2 | 2 | |
| 3 | −_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-22 19:27 — ne pas éditer à la main, régénérer._ | |
| 3 | +_Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-25 01:59 — ne pas éditer à la main, régénérer._ | |
| 4 | 4 | |
| 5 | −**État : actif** · Région : Province · Backend : direct · Annonces actives : 243/249 | |
| 5 | +**État : actif** · Région : Province · Backend : direct · Annonces actives : 241/249 | |
| 6 | 6 | |
| 7 | 7 | ## Description de la source |
| 8 | 8 | |
@@ -25,7 +25,7 @@ Ubee (ubee.com) — plateforme immobilière québécoise API publique anonyme : | ||
| 25 | 25 | |
| 26 | 26 | ## Champs récupérés → schéma cible |
| 27 | 27 | |
| 28 | −Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 243 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 28 | +Le connecteur (direct, API JSON interne du site) alimente les colonnes de la table `listings`. Complétude mesurée en SQL sur les 241 annonces actives ; exemple tiré d'une ligne réelle de la BD. | |
| 29 | 29 | |
| 30 | 30 | | Colonne `listings` | Contenu | Renseignée (actives) | Exemple réel | |
Diff truncated — file too large.