[ka6] fix connecteur shell: employeur Shell Canada — 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 Workday 404 (deux formes d'URL), recherche interne R208883/Montreal = 0, facette locationCountry sans Canada sur les 45 postings du site ShellCareers. Volume 0 légitime (médiane historique 0.5 — employeur à 0-1 offre QC). Purge par le mécanisme normal du pipeline: sync isolé rejoué le 2026-08-27 → miss_count=2 + retrait → active=0 (found=0, removed=1, statut ok). Durcissement (même esprit que sofinafoods 26a1e02): Shell publie ses postes opérationnels/horaires sur un second site Workday du même tenant, « Fasttrack » (vérifié: R209807 Scotford - Refinery y figure, absent de ShellCareers) — ShellConnector.fetch balaie maintenant ShellCareers + Fasttrack avec dédup par external_id, pour ne pas rater un futur poste québécois publié uniquement sur Fasttrack; filtre Québec de la classe de base inchangé. Testé: fetch réel voit 45 offres brutes ShellCareers + 12 Fasttrack, 0 après filtre QC = comportement correct, SITE restauré après balayage.
1 changed file +29 −2
modified
jobka/connectors/shell.py
+29 −2
@@ -3,11 +3,22 @@ | ||
| 3 | 3 | # Auteur : Simon-Pierre Boucher |
| 4 | 4 | # Contact : contact@spboucher.ai |
| 5 | 5 | # Fichier : jobka/connectors/shell.py |
| 6 | −# Rôle : Connecteur Shell Canada — workday (tenant shell.wd3, site ShellCareers) | |
| 6 | +# Rôle : Connecteur Shell Canada — workday (tenant shell.wd3, sites | |
| 7 | +# ShellCareers + Fasttrack) | |
| 7 | 8 | # [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-22] |
| 8 | −# Créé : 2026-08-22 Modifié : 2026-08-22 | |
| 9 | +# Créé : 2026-08-22 Modifié : 2026-08-27 | |
| 9 | 10 | # ============================================================================= |
| 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 source | |
| 13 | +# en moins de 24 h (détail 404, recherche interne 0, facette locationCountry | |
| 14 | +# sans Canada) → volume 0 légitime, médiane historique 0.5. Shell publie par | |
| 15 | +# ailleurs ses postes opérationnels/horaires sur un second site Workday du | |
| 16 | +# 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 balaie | |
| 18 | +# aussi ce site, avec dédup par external_id (certaines offres paraissent sur | |
| 19 | +# les deux). Le filtre Québec de la classe de base s'applique inchangé. | |
| 10 | 20 | from .workday import WorkdayConnector |
| 21 | +from ..schema import JobPosting | |
| 11 | 22 | |
| 12 | 23 | |
| 13 | 24 | class ShellConnector(WorkdayConnector): |
@@ -16,3 +27,19 @@ class ShellConnector(WorkdayConnector): | ||
| 16 | 27 | TENANT = 'shell' |
| 17 | 28 | HOST = 'wd3' |
| 18 | 29 | SITE = 'ShellCareers' |
| 30 | + EXTRA_SITES = ('Fasttrack',) | |
| 31 | + | |
| 32 | + def fetch(self) -> list[JobPosting]: | |
| 33 | + jobs = super().fetch() | |
| 34 | + seen = {j.external_id for j in jobs} | |
| 35 | + site = self.SITE | |
| 36 | + try: | |
| 37 | + for extra in self.EXTRA_SITES: | |
| 38 | + self.SITE = extra | |
| 39 | + 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 = site | |
| 45 | + return jobs | |
| 19 | 46 | |