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 jj: filtre serveur de repli par lieux ville dans la plateforme workday — le tenant jj (Johnson & Johnson, jj.wd5) n'expose AUCUNE facette province « Quebec », seulement une facette locations plate au niveau ville (« Montréal, Quebec, Canada ») ; sans filtre serveur, le scan client plafonné à max_pages=60 (1200 postes) ratait l'unique offre QC dès que le tenant a dépassé le plafond (1692 postes le 2026-09-10) → found=0, statut stale. _find_qc_facet agrège désormais, en repli seulement, toutes les valeurs de lieu québécoises (mêmes règles que is_quebec_location) en un filtre serveur unique. Sync rejoué : found=1 en 2,8 s (vs 0 en 72,5 s), offre R-089236 Montréal réactivée (miss_count=0) ; les 2 retraits (R-093383, R-081608) vérifiés réellement dépubliés sur l'API. Non-régression : desjardins garde sa facette province Region et rapporte 270 offres. 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 10, 2026) parent d31190d

1 changed file +22 −1

modified jobka/connectors/workday.py +22 −1
@@ -5,7 +5,7 @@
5 5 # Fichier : jobka/connectors/workday.py
6 6 # Rôle : Classe de plateforme Workday (API JSON publique wday/cxs) — un
7 7 # employeur = une sous-classe de ~10 lignes (TENANT, HOST, SITE)
8 −# Créé : 2026-08-17 Modifié : 2026-09-07
8 +# Créé : 2026-08-17 Modifié : 2026-09-10
9 9 # =============================================================================
10 10 """Plateforme Workday.
11 11
@@ -122,6 +122,27 @@ class WorkdayConnector(BaseConnector):
122 122 found = walk(f.get("facetParameter"), f.get("values"))
123 123 if found:
124 124 return found
125 + # Repli (tenant jj, constaté 2026-09-10) : certains tenants n'exposent
126 + # AUCUN niveau province — seulement une facette de lieux plate au
127 + # niveau ville (« Montréal, Quebec, Canada »). Sans filtre serveur, le
128 + # scan client plafonné par max_pages rate les offres QC dès que le
129 + # tenant dépasse le plafond (jj : 1692 postes > 60 × 20). On agrège
130 + # alors toutes les valeurs de lieu québécoises (mêmes règles que le
131 + # filtre client is_quebec_location) en un seul filtre serveur.
132 + by_param: dict[str, list] = {}
133 +
134 + def collect(param: str | None, values: list) -> None:
135 + for v in values or []:
136 + p = v.get("facetParameter") or param
137 + desc = (v.get("descriptor") or "").strip()
138 + if p and v.get("id") and is_quebec_location(desc):
139 + by_param.setdefault(p, []).append(v["id"])
140 + collect(p, v.get("values"))
141 + for f in facets or []:
142 + collect(f.get("facetParameter"), f.get("values"))
143 + if by_param:
144 + param = max(by_param, key=lambda k: len(by_param[k]))
145 + return {param: by_param[param]}
125 146 return None
126 147
127 148 # facette « Remote Type » (présente sur beaucoup de tenants) : libellé
128 149