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 · 45 lines python
Raw Blame History
1# =============================================================================2# Job·Ka — Groupe KA3# Auteur  : Simon-Pierre Boucher4# Contact : contact@spboucher.ai5# Fichier : jobka/connectors/canderel.py6# Rôle    : Connecteur Canderel — dayforce (ns='canderel', board='CANDIDATEPORTAL'),7#           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-2110# =============================================================================11"""Canderel (canderel.com) — promoteur immobilier montréalais (siège à la12Place Ville Marie), tenant Dayforce `canderel`.1314Contexte 2026-09-21 : la recherche Dayforce est PARTITIONNÉE par culture de15publication — un poste publié en anglais n'apparaît PAS dans la recherche16fr-CA (constat harrisrebar 2026-09-10, aucun repli serveur). Les 2 offres QC17historiques (Coordonnateur RH 3674/3628, Montréal, publiées en français) ont18été dépubliées par l'employeur le 2026-09-21 — volume 0 légitime ce jour-là —19et les 3 offres restantes du board (Calgary 3709, Edmonton 3698, Toronto 3676)20sont publiées en anglais seulement : la recherche fr-CA renvoie maxCount=021alors que en-CA voit tout le board. Pour ne pas rater une future offre QC22publiée en anglais seulement, fetch() balaie fr-CA PUIS en-CA et déduplique23par jobPostingId (la version française gagne) ; le filtre Québec de la classe24de base s'applique inchangé."""25from ..schema import JobPosting26from .dayforce import DayforceConnector272829class CanderelConnector(DayforceConnector):30    source_id = 'canderel'31    EMPLOYER = 'Canderel'32    NS = 'canderel'33    BOARD = 'CANDIDATEPORTAL'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        self.CULTURE = 'en-CA'                    # attribut d'instance : la39        try:                                      # classe (autres tenants)40            extra = super().fetch()               # n'est pas modifiée41        finally:42            self.CULTURE = type(self).CULTURE43        jobs.extend(j for j in extra if j.external_id not in seen)44        return jobs45