SPB Git forge

spb/job-ka

Public
229commits 1branches 0releases
38.1 MBsize
maindefault branch
1 h agolast push
HTML 82.1% Python 14.6% TypeScript 1.9% CSS 1% JavaScript 0.5%

[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 14 days ago (Sep 11, 2026) parent 788bfb4

1 changed file +33 −3

modified jobka/connectors/quadreal.py +33 −3
@@ -3,16 +3,46 @@
3 3 # Auteur : Simon-Pierre Boucher
4 4 # Contact : contact@spboucher.ai
5 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 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 26 from .workday import WorkdayConnector
11 27
12 28
13 29 class QuadrealConnector(WorkdayConnector):
14 30 source_id = 'quadreal'
15 − EMPLOYER = 'Quadreal'
31 + EMPLOYER = 'QuadReal'
16 32 TENANT = 'quadreal'
17 33 HOST = 'wd10'
18 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