SPB Git forge

spb/job-ka

Public
229commits 1branches 0releases
38.1 MBsize
maindefault branch
5 h agolast push
HTML 82.1% Python 14.6% TypeScript 1.9% CSS 1% JavaScript 0.5%
2.7 KB · 55 lines python
Raw Blame History
1# =============================================================================2# Job·Ka — Groupe KA3# Auteur  : Simon-Pierre Boucher4# Contact : contact@spboucher.ai5# Fichier : jobka/connectors/quadreal.py6# Rôle    : Connecteur QuadReal — workday (tenant quadreal.wd10), balayage des7#           deux sites carrières du tenant : Parkbridge + QuadReal8#           [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-23]9# Créé    : 2026-08-23   Modifié : 2026-09-1810# =============================================================================11"""QuadReal Property Group expose DEUX sites carrières sur le même tenant12Workday `quadreal.wd10` : `Parkbridge` (filiale Parkbridge Lifestyle13Communities) et `QuadReal` (site principal corporate).1415Contexte 2026-09-10 : le connecteur ne balayait que `Parkbridge`, dont16l'unique offre QC historique (R0006877, Préposé à l'entretien ménager, Magog)17a été dépubliée par l'employeur (détail 403 « permission denied », recherche18par mot-clé et ID → 0, facette province réduite à AB/ON/BC sur 7 postes).19Pendant ce temps le site principal `QuadReal` publiait 68 postes dont 1 au20Québec (R0006871, Property Administrator/Administrateur immobilier,21Montréal) — invisible pour le connecteur. fetch() balaie désormais22`Parkbridge` PUIS `QuadReal` et déduplique par external_id (jobReqId,23unique au tenant) ; le SITE est permuté en attribut d'instance, la classe24plateforme et les autres tenants workday restent intacts.2526Re-vérifié le 2026-09-18 : l'offre R0006871 (Montréal) a été dépubliée à la27source (détail 404, recherche par ID → 0) — les deux sites n'ont AUCUNE offre28QC (facettes provinces = AB/ON/BC/NY/CA sur 8 + 69 postes, offres multi-lieux29toutes Vancouver/Calgary/Toronto). 0 est le volume légitime tant que QuadReal30ne republie pas au Québec."""31from ..schema import JobPosting32from .workday import WorkdayConnector333435class QuadrealConnector(WorkdayConnector):36    source_id = 'quadreal'37    EMPLOYER = 'QuadReal'38    TENANT = 'quadreal'39    HOST = 'wd10'40    SITE = 'Parkbridge'41    EXTRA_SITES = ('QuadReal',)4243    def fetch(self) -> list[JobPosting]:44        jobs = super().fetch()                    # site Parkbridge (défaut)45        seen = {j.external_id for j in jobs}46        for site in self.EXTRA_SITES:47            self.SITE = site                      # attribut d'instance : la48            try:                                  # classe (autres tenants)49                extra = super().fetch()           # n'est pas modifiée50            finally:51                self.SITE = type(self).SITE52            jobs.extend(j for j in extra if j.external_id not in seen)53            seen.update(j.external_id for j in extra)54        return jobs55