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.2 KB · 43 lines python
Raw Blame History
1# =============================================================================2# Job·Ka — Groupe KA3# Auteur  : Simon-Pierre Boucher4# Contact : contact@spboucher.ai5# Fichier : jobka/connectors/harrisrebar.py6# Rôle    : Connecteur Nucor Rebar Fabrication / Harris Rebar — dayforce7#           (ns='harrisrebar', board='CANDIDATEPORTAL'), balayage fr-CA + en-CA8#           [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-23]9# Créé    : 2026-08-23   Modifié : 2026-09-1010# =============================================================================11"""Harris Rebar (rebrandé Nucor Rebar Fabrication — harrisrebar.com redirige12vers nucor.com depuis 2026) garde son tenant Dayforce `harrisrebar` actif.1314Contexte 2026-09-10 : la recherche Dayforce est PARTITIONNÉE par culture de15publication — un poste publié en anglais n'apparaît PAS dans la recherche16fr-CA (aucun repli serveur ; vérifié sur lavieenrose fr 172 / en 281 et17soprema fr 23 / en 20). Ce tenant anglophone publie aujourd'hui 12 postes18(ON/AB/NS/NB/BC) tous en en-CA : la recherche fr-CA seule renvoie 0. L'unique19offre QC historique (16804, Montréal, publiée en français) a été dépubliée par20l'employeur le 2026-09-10 — volume 0 légitime ce jour-là. Pour ne pas rater21une future offre QC publiée en anglais seulement, fetch() balaie fr-CA PUIS22en-CA et déduplique par jobPostingId (la version française gagne)."""23from ..schema import JobPosting24from .dayforce import DayforceConnector252627class HarrisrebarConnector(DayforceConnector):28    source_id = 'harrisrebar'29    EMPLOYER = 'Nucor Rebar Fabrication (Harris Rebar)'30    NS = 'harrisrebar'31    BOARD = 'CANDIDATEPORTAL'3233    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 : la37        try:                                      # classe (autres tenants)38            extra = super().fetch()               # n'est pas modifiée39        finally:40            self.CULTURE = type(self).CULTURE41        jobs.extend(j for j in extra if j.external_id not in seen)42        return jobs43