SPB Git forge

spb/job-ka

Public
229commits 1branches 0releases
38.1 MBsize
maindefault branch
6 h agolast push
HTML 82.1% Python 14.6% TypeScript 1.9% CSS 1% JavaScript 0.5%
2.3 KB · 47 lines python
Raw Blame History
1# =============================================================================2# Job·Ka — Groupe KA3# Auteur  : Simon-Pierre Boucher4# Contact : contact@spboucher.ai5# Fichier : jobka/connectors/euromoneyplc.py6# Rôle    : Connecteur Delinian (ex-Euromoney plc) — dayforce (ns='euromoneyplc',7#           board='CANDIDATEPORTAL'), balayage fr-CA + en-CA + en-GB8#           [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-23]9# Créé    : 2026-08-23   Modifié : 2026-09-1110# =============================================================================11"""Delinian (groupe britannique, ex-Euromoney Institutional Investor plc) —12bureau de Montréal (1001 De Maisonneuve Ouest). delinian.com/careers pointe13toujours vers ce tenant Dayforce (portail en-GB).1415Contexte 2026-09-11 : la dernière offre QC (4827, Montréal, publiée en16français) a été dépubliée par l'employeur entre 09h19 et 11h40 EDT — le tenant17publie 0 poste TOTAL (boards CANDIDATEPORTAL et EUROMONEY × cultures fr-CA,18en-CA, en-GB, en-US vérifiés) : volume 0 légitime ce jour-là. Mais la19recherche Dayforce est PARTITIONNÉE par culture de publication (cf.20harrisrebar, 2026-09-10) et le portail officiel de Delinian est en-GB : une21future offre QC publiée en anglais serait invisible en fr-CA seul. fetch()22balaie donc fr-CA PUIS en-CA PUIS en-GB et déduplique par jobPostingId (la23version française gagne)."""24from ..schema import JobPosting25from .dayforce import DayforceConnector262728class EuromoneyplcConnector(DayforceConnector):29    source_id = 'euromoneyplc'30    EMPLOYER = 'Delinian (ex-Euromoney)'31    NS = 'euromoneyplc'32    BOARD = 'CANDIDATEPORTAL'33    EXTRA_CULTURES = ('en-CA', 'en-GB')3435    def fetch(self) -> list[JobPosting]:36        jobs = super().fetch()                    # culture fr-CA (défaut)37        seen = {j.external_id for j in jobs}38        for culture in self.EXTRA_CULTURES:39            self.CULTURE = culture                # attribut d'instance : la40            try:                                  # classe (autres tenants)41                extra = super().fetch()           # n'est pas modifiée42            finally:43                self.CULTURE = type(self).CULTURE44            jobs.extend(j for j in extra if j.external_id not in seen)45            seen.update(j.external_id for j in extra)46        return jobs47