SPB Git

spb/job-ka

Public

[ka6] fix connecteur harrisrebar: balayage en-CA complémentaire dans la plateforme dayforce (tenant seul) — la recherche Dayforce est PARTITIONNÉE par culture de publication, sans repli serveur (vérifié : lavieenrose fr-CA 172 / en-CA 281, soprema fr 23 / en 20). Le tenant harrisrebar (Harris Rebar, rebrandé Nucor Rebar Fabrication — harrisrebar.com redirige vers nucor.com) publie ses 12 postes actuels (ON/AB/NS/NB/BC) en en-CA seulement : la recherche fr-CA du connecteur renvoie 0 poste TOTAL. L'unique offre QC historique (16804 « AIDE À L'EXPÉDITION/À LA RÉCEPTION », Montréal, publiée en français) a été dépubliée par l'employeur le 2026-09-10 entre 10h04 et 14h35 EDT — absente des listings des 2 boards (CANDIDATEPORTAL + HarrisCanada) × 2 cultures, mot-clé compris ; le détail API 200 est un rendu résiduel (createdTimestampUTC = heure de la requête ; id bidon → 404). Volume 0 légitime AUJOURD'HUI, mais fr-CA seul rendrait le connecteur aveugle à toute future offre QC publiée en anglais : fetch() balaie désormais fr-CA PUIS en-CA (dédup par jobPostingId, version française gagnante, CULTURE restaurée en attribut d'instance — la classe plateforme et les ~124 autres tenants dayforce sont intacts). Correction au passage de EMPLOYER, artefact de génération (titre de poste) → « Nucor Rebar Fabrication (Harris Rebar) ». Test réel : fr-CA 0 + en-CA 12 postes scannés → 0 offre QC (exact). Sync isolé rejoué : found=0, removed=1 (16804 retirée par le mécanisme normal miss_count=2), statut ok. 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 09c7254 Browse files

1 changed file +28 −3

Unified Split
modified jobka/connectors/harrisrebar.py +28 −3
@@ -3,15 +3,40 @@
3 # Auteur : Simon-Pierre Boucher 3 # Auteur : Simon-Pierre Boucher
4 # Contact : contact@spboucher.ai 4 # Contact : contact@spboucher.ai
5 # Fichier : jobka/connectors/harrisrebar.py 5 # Fichier : jobka/connectors/harrisrebar.py
6−# Rôle : Connecteur AIDE À L'EXPÉDITION/À LA RÉCEPTION — dayforce (ns='harrisrebar', board='CANDIDATEPORTAL') 6+# Rôle : Connecteur Nucor Rebar Fabrication / Harris Rebar — dayforce
7+# (ns='harrisrebar', board='CANDIDATEPORTAL'), balayage fr-CA + en-CA
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+"""Harris Rebar (rebrandé Nucor Rebar Fabrication — harrisrebar.com redirige
12+vers nucor.com depuis 2026) garde son tenant Dayforce `harrisrebar` actif.
13+
14+Contexte 2026-09-10 : la recherche Dayforce est PARTITIONNÉE par culture de
15+publication — un poste publié en anglais n'apparaît PAS dans la recherche
16+fr-CA (aucun repli serveur ; vérifié sur lavieenrose fr 172 / en 281 et
17+soprema fr 23 / en 20). Ce tenant anglophone publie aujourd'hui 12 postes
18+(ON/AB/NS/NB/BC) tous en en-CA : la recherche fr-CA seule renvoie 0. L'unique
19+offre QC historique (16804, Montréal, publiée en français) a été dépubliée par
20+l'employeur le 2026-09-10 — volume 0 légitime ce jour-là. Pour ne pas rater
21+une future offre QC publiée en anglais seulement, fetch() balaie fr-CA PUIS
22+en-CA et déduplique par jobPostingId (la version française gagne)."""
23+from ..schema import JobPosting
10 from .dayforce import DayforceConnector 24 from .dayforce import DayforceConnector
11 25
12 26
13 class HarrisrebarConnector(DayforceConnector): 27 class HarrisrebarConnector(DayforceConnector):
14 source_id = 'harrisrebar' 28 source_id = 'harrisrebar'
15− EMPLOYER = "AIDE À L'EXPÉDITION/À LA RÉCEPTION" 29+ EMPLOYER = 'Nucor Rebar Fabrication (Harris Rebar)'
16 NS = 'harrisrebar' 30 NS = 'harrisrebar'
17 BOARD = 'CANDIDATEPORTAL' 31 BOARD = 'CANDIDATEPORTAL'
32+
33+ def fetch(self) -> list[JobPosting]:
34+ jobs = super().fetch() # culture fr-CA (défaut)
35+ seen = {j.external_id for j in jobs}
36+ self.CULTURE = 'en-CA' # attribut d'instance : la
37+ try: # classe (autres tenants)
38+ extra = super().fetch() # n'est pas modifiée
39+ finally:
40+ self.CULTURE = type(self).CULTURE
41+ jobs.extend(j for j in extra if j.external_id not in seen)
42+ return jobs
18 43
Menu

Theme