[ka6] fix connecteur sofinafoods: repli en-CA quand le flux fr-CA est vide — la recherche Dayforce en cultureCode fr-CA ne renvoie QUE les offres traduites en français (vérifié: fr-CA maxCount=0 vs en-CA maxCount=15; Sofina Foods est un employeur ontarien à base anglaise, même mécanique observée sur lavieenrose 146 fr vs 243 en). L'unique offre QC historique (Directeur Performance D'affaires, Lévis, 12233, date limite 2026-08-27) a expiré à la source: absente des 15 postings en-CA (tous ON/BC/AB), page publique fr-CA elle-même vide → volume 0 légitime. Purge par le mécanisme normal: sync isolé rejoué le 2026-08-27 04:10 → miss_count=2 + date limite dépassée → active=0 (found=0, removed=1, statut ok). Durcissement: SofinafoodsConnector.fetch rejoue la recherche en en-CA quand le passage fr-CA ne retient rien, pour ne pas rater un futur poste québécois publié sans traduction française (filtre Québec de la classe de base inchangé). Testé: repli en-CA voit les 15 offres brutes, 0 après filtre QC = comportement correct.
1 changed file +23 −1
modified
jobka/connectors/sofinafoods.py
+23 −1
@@ -5,9 +5,17 @@ | ||
| 5 | 5 | # Fichier : jobka/connectors/sofinafoods.py |
| 6 | 6 | # Rôle : Connecteur Sofinafoods — dayforce (ns='sofinafoods', board='CANDIDATEPORTAL') |
| 7 | 7 | # [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-23] |
| 8 | −# Créé : 2026-08-23 Modifié : 2026-08-23 | |
| 8 | +# Créé : 2026-08-23 Modifié : 2026-08-27 | |
| 9 | 9 | # ============================================================================= |
| 10 | +# Note ka6 (2026-08-27) : la recherche Dayforce en cultureCode fr-CA ne renvoie | |
| 11 | +# QUE les offres traduites en français (vérifié : fr-CA maxCount=0 alors que | |
| 12 | +# en-CA maxCount=15 — Sofina Foods est un employeur ontarien à base anglaise). | |
| 13 | +# L'unique offre QC historique (Directeur Performance D'affaires, Lévis, | |
| 14 | +# date limite 2026-08-27) a expiré à la source → volume 0 légitime. Pour ne pas | |
| 15 | +# rater un futur poste québécois publié sans traduction française, on rejoue la | |
| 16 | +# recherche en en-CA quand le passage fr-CA ne retient rien. | |
| 10 | 17 | from .dayforce import DayforceConnector |
| 18 | +from ..schema import JobPosting | |
| 11 | 19 | |
| 12 | 20 | |
| 13 | 21 | class SofinafoodsConnector(DayforceConnector): |
@@ -15,3 +23,17 @@ class SofinafoodsConnector(DayforceConnector): | ||
| 15 | 23 | EMPLOYER = 'Sofinafoods' |
| 16 | 24 | NS = 'sofinafoods' |
| 17 | 25 | BOARD = 'CANDIDATEPORTAL' |
| 26 | + | |
| 27 | + def fetch(self) -> list[JobPosting]: | |
| 28 | + jobs = super().fetch() | |
| 29 | + if jobs: | |
| 30 | + return jobs | |
| 31 | + # Repli : le flux fr-CA est vide (tenant sans traductions) — la même | |
| 32 | + # recherche en en-CA voit toutes les offres ; le filtre Québec de la | |
| 33 | + # classe de base s'applique inchangé. | |
| 34 | + culture = self.CULTURE | |
| 35 | + try: | |
| 36 | + self.CULTURE = 'en-CA' | |
| 37 | + return super().fetch() | |
| 38 | + finally: | |
| 39 | + self.CULTURE = culture | |
| 18 | 40 | |