SPB Git

spb/job-ka

Public

[ka6] fix connecteur quadreal: balayage des deux sites carrières du tenant workday quadreal.wd10 (Parkbridge + QuadReal) — le connecteur ne scannait que le site filiale Parkbridge, dont l'unique offre QC historique (R0006877 « Préposé à l'entretien ménager », Magog) a été dépubliée par l'employeur le 2026-09-10 (détail API 403 permission denied, recherche mot-clé/ID → 0, facette province réduite à AB/ON/BC sur 7 postes) → found=0, statut stale. Le site principal QuadReal du même tenant publie pourtant 68 postes dont 1 au Québec (R0006871 « Property Administrator/Administrateur immobilier », Montréal), invisible pour le connecteur. fetch() balaie désormais Parkbridge PUIS QuadReal (pattern harrisrebar : SITE permuté en attribut d'instance, dédup par external_id/jobReqId — la classe plateforme workday et les autres tenants sont intacts). Correction au passage de EMPLOYER : Quadreal → QuadReal (graphie officielle). Sync rejoué : found=1 en 2,7 s (+1 Montréal, -1 Magog retirée par le mécanisme normal miss_count=2), volume conforme à la médiane 0.5–1. 101 tests pytest verts. pm2 restart job-ka-sync OK, site 200.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Sep 11, 2026) parent 788bfb4 Browse files

1 changed file +33 −3

Unified Split
modified jobka/connectors/quadreal.py +33 −3
@@ -3,16 +3,46 @@
3 # Auteur : Simon-Pierre Boucher 3 # Auteur : Simon-Pierre Boucher
4 # Contact : contact@spboucher.ai 4 # Contact : contact@spboucher.ai
5 # Fichier : jobka/connectors/quadreal.py 5 # Fichier : jobka/connectors/quadreal.py
6−# Rôle : Connecteur Quadreal — workday (tenant quadreal.wd10, site Parkbridge) 6+# Rôle : Connecteur QuadReal — workday (tenant quadreal.wd10), balayage des
7+# deux sites carrières du tenant : Parkbridge + QuadReal
7 # [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-23] 8 # [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-23]
8−# Créé : 2026-08-23 Modifié : 2026-08-23 9+# Créé : 2026-08-23 Modifié : 2026-09-10
9 # ============================================================================= 10 # =============================================================================
11+"""QuadReal Property Group expose DEUX sites carrières sur le même tenant
12+Workday `quadreal.wd10` : `Parkbridge` (filiale Parkbridge Lifestyle
13+Communities) et `QuadReal` (site principal corporate).
14+
15+Contexte 2026-09-10 : le connecteur ne balayait que `Parkbridge`, dont
16+l'unique offre QC historique (R0006877, Préposé à l'entretien ménager, Magog)
17+a été dépubliée par l'employeur (détail 403 « permission denied », recherche
18+par mot-clé et ID → 0, facette province réduite à AB/ON/BC sur 7 postes).
19+Pendant ce temps le site principal `QuadReal` publiait 68 postes dont 1 au
20+Québec (R0006871, Property Administrator/Administrateur immobilier,
21+Montréal) — invisible pour le connecteur. fetch() balaie désormais
22+`Parkbridge` PUIS `QuadReal` et déduplique par external_id (jobReqId,
23+unique au tenant) ; le SITE est permuté en attribut d'instance, la classe
24+plateforme et les autres tenants workday restent intacts."""
25+from ..schema import JobPosting
10 from .workday import WorkdayConnector 26 from .workday import WorkdayConnector
11 27
12 28
13 class QuadrealConnector(WorkdayConnector): 29 class QuadrealConnector(WorkdayConnector):
14 source_id = 'quadreal' 30 source_id = 'quadreal'
15− EMPLOYER = 'Quadreal' 31+ EMPLOYER = 'QuadReal'
16 TENANT = 'quadreal' 32 TENANT = 'quadreal'
17 HOST = 'wd10' 33 HOST = 'wd10'
18 SITE = 'Parkbridge' 34 SITE = 'Parkbridge'
35+ EXTRA_SITES = ('QuadReal',)
36+
37+ def fetch(self) -> list[JobPosting]:
38+ jobs = super().fetch() # site Parkbridge (défaut)
39+ seen = {j.external_id for j in jobs}
40+ for site in self.EXTRA_SITES:
41+ self.SITE = site # attribut d'instance : la
42+ try: # classe (autres tenants)
43+ extra = super().fetch() # n'est pas modifiée
44+ finally:
45+ self.SITE = type(self).SITE
46+ jobs.extend(j for j in extra if j.external_id not in seen)
47+ seen.update(j.external_id for j in extra)
48+ return jobs
19 49
Menu

Theme