| 3 | # Auteur : Simon-Pierre Boucher |
3 | # Auteur : Simon-Pierre Boucher |
| 4 | # Contact : contact@spboucher.ai |
4 | # Contact : contact@spboucher.ai |
| 5 | # Fichier : jobka/connectors/fnfmb.py |
5 | # Fichier : jobka/connectors/fnfmb.py |
| 6 | −# Rôle : Connecteur Avocate générale ou avocat général — dayforce (ns='fnfmb', board='CANDIDATEPORTAL') |
6 | +# Rôle : Connecteur Conseil de gestion financière des Premières Nations |
| |
7 | +# (FNFMB) — dayforce (ns='fnfmb', board='CANDIDATEPORTAL') |
| 7 | # [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-23] |
8 | # [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-23] |
| 8 | −# Créé : 2026-08-23 Modifié : 2026-08-23 |
9 | +# Créé : 2026-08-23 Modifié : 2026-08-31 |
| 9 | # ============================================================================= |
10 | # ============================================================================= |
| |
11 | +from ..schema import JobPosting |
| 10 | from .dayforce import DayforceConnector |
12 | from .dayforce import DayforceConnector |
| 11 | |
13 | |
| 12 | |
14 | |
| 13 | class FnfmbConnector(DayforceConnector): |
15 | class FnfmbConnector(DayforceConnector): |
| 14 | source_id = 'fnfmb' |
16 | source_id = 'fnfmb' |
| 15 | − EMPLOYER = 'Avocate générale ou avocat général' |
17 | + EMPLOYER = 'Conseil de gestion financière des Premières Nations (FNFMB)' |
| 16 | NS = 'fnfmb' |
18 | NS = 'fnfmb' |
| 17 | BOARD = 'CANDIDATEPORTAL' |
19 | BOARD = 'CANDIDATEPORTAL' |
| |
20 | + |
| |
21 | + # La recherche Dayforce filtre par culture : une offre sans version |
| |
22 | + # française est invisible en fr-CA. Ce tenant ne publie plus de fr-CA |
| |
23 | + # (constat 2026-08-31 : fr-CA -> 0, en-CA -> 10 offres), donc on |
| |
24 | + # interroge les deux cultures et on fusionne, version fr-CA prioritaire. |
| |
25 | + CULTURES = ('fr-CA', 'en-CA') |
| |
26 | + |
| |
27 | + def fetch(self) -> list[JobPosting]: |
| |
28 | + merged: dict[str, JobPosting] = {} |
| |
29 | + for culture in self.CULTURES: |
| |
30 | + self.CULTURE = culture |
| |
31 | + for job in super().fetch(): |
| |
32 | + merged.setdefault(job.external_id, job) |
| |
33 | + return list(merged.values()) |
| 18 | |
34 | |