HTML 82.1%
Python 14.6%
TypeScript 1.9%
CSS 1%
JavaScript 0.5%
1# =============================================================================2# Job·Ka — Groupe KA3# Auteur : Simon-Pierre Boucher4# Contact : contact@spboucher.ai5# Fichier : jobka/connectors/shell.py6# Rôle : Connecteur Shell Canada — workday (tenant shell.wd3, sites7# ShellCareers + Fasttrack)8# [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-22]9# Créé : 2026-08-22 Modifié : 2026-08-2710# =============================================================================11# Note ka6 (2026-08-27) : l'unique offre QC (Terminal Operator – Fixed Term,12# Montreal - Terminal, R208883, publiée 2026-08-26) a été dépubliée à la source13# en moins de 24 h (détail 404, recherche interne 0, facette locationCountry14# sans Canada) → volume 0 légitime, médiane historique 0.5. Shell publie par15# ailleurs ses postes opérationnels/horaires sur un second site Workday du16# même tenant, « Fasttrack » (vérifié : R209807 Scotford - Refinery y figure) ;17# pour ne pas rater un futur poste québécois publié uniquement là, on balaie18# aussi ce site, avec dédup par external_id (certaines offres paraissent sur19# les deux). Le filtre Québec de la classe de base s'applique inchangé.20from .workday import WorkdayConnector21from ..schema import JobPosting222324class ShellConnector(WorkdayConnector):25 source_id = 'shell'26 EMPLOYER = 'Shell Canada'27 TENANT = 'shell'28 HOST = 'wd3'29 SITE = 'ShellCareers'30 EXTRA_SITES = ('Fasttrack',)3132 def fetch(self) -> list[JobPosting]:33 jobs = super().fetch()34 seen = {j.external_id for j in jobs}35 site = self.SITE36 try:37 for extra in self.EXTRA_SITES:38 self.SITE = extra39 fresh = [j for j in super().fetch()40 if j.external_id not in seen]41 jobs.extend(fresh)42 seen.update(j.external_id for j in fresh)43 finally:44 self.SITE = site45 return jobs46