# ============================================================================= # Job·Ka — Groupe KA # Auteur : Simon-Pierre Boucher # Contact : contact@spboucher.ai # Fichier : jobka/connectors/shell.py # Rôle : Connecteur Shell Canada — workday (tenant shell.wd3, sites # ShellCareers + Fasttrack) # [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-22] # Créé : 2026-08-22 Modifié : 2026-08-27 # ============================================================================= # Note ka6 (2026-08-27) : l'unique offre QC (Terminal Operator – Fixed Term, # Montreal - Terminal, R208883, publiée 2026-08-26) a été dépubliée à la source # en moins de 24 h (détail 404, recherche interne 0, facette locationCountry # sans Canada) → volume 0 légitime, médiane historique 0.5. Shell publie par # ailleurs ses postes opérationnels/horaires sur un second site Workday du # même tenant, « Fasttrack » (vérifié : R209807 Scotford - Refinery y figure) ; # pour ne pas rater un futur poste québécois publié uniquement là, on balaie # aussi ce site, avec dédup par external_id (certaines offres paraissent sur # les deux). Le filtre Québec de la classe de base s'applique inchangé. from .workday import WorkdayConnector from ..schema import JobPosting class ShellConnector(WorkdayConnector): source_id = 'shell' EMPLOYER = 'Shell Canada' TENANT = 'shell' HOST = 'wd3' SITE = 'ShellCareers' EXTRA_SITES = ('Fasttrack',) def fetch(self) -> list[JobPosting]: jobs = super().fetch() seen = {j.external_id for j in jobs} site = self.SITE try: for extra in self.EXTRA_SITES: self.SITE = extra fresh = [j for j in super().fetch() if j.external_id not in seen] jobs.extend(fresh) seen.update(j.external_id for j in fresh) finally: self.SITE = site return jobs