SPB Git

spb/job-ka

Public

[ka6] connecteur dentons: broken = faux positif « volume QC nul », rien à réparer — les 2 offres QC du portail SuccessFactors ont été dépubliées le 2026-10-26. Profil connu « ok=1 found=0 médiane ≤1 » (70+ cas) : la supervision compte un sync à 0 offre comme non-succès. Chronologie : vert found=2 en continu jusqu'à 14:37 EDT, puis ok=1 found=0 dès 17:14 — la paire FR/EN « Responsable, Comptes fournisseurs / Accounts Payable Lead » Montréal (ids 1362980357/1362877757, parue 2026-10-04) dépubliée entre les deux, probablement poste comblé. Vérification live : sitemap urlset careers.dentons.com 200 avec 131 offres mondiales mais zéro slug QC, pages détail des 2 ids retombées sur le gabarit CSB vide (titre présent mais AUCUNE microdonnée itemprop — contrôle décisif : l'offre vivante Rome-Associate-Litigation du sitemap a itemprop description/datePosted/title) — tenant VIVANT, zéro migration, le volume 0 est CORRECT. Les offres avaient déjà été retirées proprement à la règle des 2 absences (removed=2 à 18:09). Sync isolé rejoué : vert ok=1 found=0 en 0,4 s, 0 offre active en base = reflet exact de la source. Aucun code de fetch modifié, docstring chronologie seulement ; le connecteur reverdira seul à la prochaine publication QC (le bureau de Montréal publie bien ici, cf. docstring). Fiches dentons.md/ats-successfactors.md/INDEX.md régénérées (1131 autres restaurées, hors périmètre). 108 tests pytest verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Oct 26, 2026) parent 5cf12f3 Browse files

4 changed files +43 −57

modified docs/connecteurs/INDEX.md +6 −6
@@ -5,16 +5,16 @@ Auteur : Simon-Pierre Boucher
5 Contact : contact@spboucher.ai 5 Contact : contact@spboucher.ai
6 Fichier : docs/connecteurs/INDEX.md 6 Fichier : docs/connecteurs/INDEX.md
7 Rôle : Index généré de la documentation des connecteurs (ATS, employeurs, portails, dépôt) 7 Rôle : Index généré de la documentation des connecteurs (ATS, employeurs, portails, dépôt)
8−Généré : 2026-10-26 19:16 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, 8+Généré : 2026-10-26 19:32 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 relancer le script pour régénérer. 9 relancer le script pour régénérer.
10 ============================================================================= 10 =============================================================================
11 --> 11 -->
12 12
13 # Job·Ka — Connecteurs (index) 13 # Job·Ka — Connecteurs (index)
14 14
15−> Index généré le 2026-10-26 19:16 EDT par `scripts/gen_connector_docs.py` (rejouable). Croise `data/sources.json`, l'introspection de `jobka/connectors/*.py` et la base live `data/jobka.db`. 15+> Index généré le 2026-10-26 19:32 EDT par `scripts/gen_connector_docs.py` (rejouable). Croise `data/sources.json`, l'introspection de `jobka/connectors/*.py` et la base live `data/jobka.db`.
16 16
17−**1104 employeurs directs** connectés via **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **25414 offres actives** (23104 directes, 2310 portails ; 93 masquées comme doublons inter-sources, soit 25321 visibles). 1134 fiches. 17+**1104 employeurs directs** connectés via **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **25411 offres actives** (23101 directes, 2310 portails ; 93 masquées comme doublons inter-sources, soit 25318 visibles). 1134 fiches.
18 18
19 Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conserve son URL originale ; la candidature se fait chez l'employeur (badge « Offre directe » sur les sources directes). 19 Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conserve son URL originale ; la candidature se fait chez l'employeur (badge « Offre directe » sur les sources directes).
20 20
@@ -23,7 +23,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
23 | Plateforme | Employeurs | Actives | Salaire | GPS | 23 | Plateforme | Employeurs | Actives | Salaire | GPS |
24 |---|---|---|---|---| 24 |---|---|---|---|---|
25 | [`workday`](ats-workday.md) | 232 | 7479 | 48 % | 87 % | 25 | [`workday`](ats-workday.md) | 232 | 7479 | 48 % | 87 % |
26−| [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 2910 | 16 % | 99 % | 26+| [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 2907 | 16 % | 99 % |
27 | [`workable`](ats-workable.md) | 71 | 2007 | 18 % | 100 % | 27 | [`workable`](ats-workable.md) | 71 | 2007 | 18 % | 100 % |
28 | [`dayforce`](ats-dayforce.md) | 129 | 1981 | 9 % | 100 % | 28 | [`dayforce`](ats-dayforce.md) | 129 | 1981 | 9 % | 100 % |
29 | [`successfactors`](ats-successfactors.md) | 12 | 1692 | 18 % | 99 % | 29 | [`successfactors`](ats-successfactors.md) | 12 | 1692 | 18 % | 99 % |
@@ -79,7 +79,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
79 | [Globalhr](globalhr.md) | [`workday`](ats-workday.md) | 232 | 0 % | 83 % | ✅ | 79 | [Globalhr](globalhr.md) | [`workday`](ats-workday.md) | 232 | 0 % | 83 % | ✅ |
80 | [Reitmans](reitmanscanadalteltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 213 | 17 % | 100 % | ✅ | 80 | [Reitmans](reitmanscanadalteltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 213 | 17 % | 100 % | ✅ |
81 | [Airbus Canada](airbus.md) | [`workday`](ats-workday.md) | 205 | 4 % | 99 % | ✅ | 81 | [Airbus Canada](airbus.md) | [`workday`](ats-workday.md) | 205 | 4 % | 99 % | ✅ |
82−| [American Iron and Metal](americanironandmetal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 203 | 22 % | 100 % | ✅ | 82+| [American Iron and Metal](americanironandmetal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 201 | 21 % | 100 % | ✅ |
83 | [Groupe Banque TD](td.md) | [`workday`](ats-workday.md) | 193 | 94 % | 97 % | ✅ | 83 | [Groupe Banque TD](td.md) | [`workday`](ats-workday.md) | 193 | 94 % | 97 % | ✅ |
84 | [CISSS de Laval](cisss_laval.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 179 | 3 % | 100 % | ✅ | 84 | [CISSS de Laval](cisss_laval.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 179 | 3 % | 100 % | ✅ |
85 | [La Vie en Rose](lavieenrose.md) | [`dayforce`](ats-dayforce.md) | 164 | 4 % | 100 % | ✅ | 85 | [La Vie en Rose](lavieenrose.md) | [`dayforce`](ats-dayforce.md) | 164 | 4 % | 100 % | ✅ |
@@ -199,9 +199,9 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
199 | [Best Buy Canada](bestbuycanada.md) | [`workday`](ats-workday.md) | 29 | 0 % | 34 % | ✅ | 199 | [Best Buy Canada](bestbuycanada.md) | [`workday`](ats-workday.md) | 29 | 0 % | 34 % | ✅ |
200 | [Groupe Bellemare](groupe_bellemare.md) | [`njoyn`](ats-njoyn.md) | 29 | 0 % | 0 % | ✅ | 200 | [Groupe Bellemare](groupe_bellemare.md) | [`njoyn`](ats-njoyn.md) | 29 | 0 % | 0 % | ✅ |
201 | [Lgs](lgs.md) | [`dayforce`](ats-dayforce.md) | 29 | 0 % | 100 % | ✅ | 201 | [Lgs](lgs.md) | [`dayforce`](ats-dayforce.md) | 29 | 0 % | 100 % | ✅ |
202−| [AccorHotel](accorhotel.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 28 | 61 % | 100 % | ✅ |
203 | [Coveo](coveofr.md) | [`greenhouse`](ats-greenhouse.md) | 28 | 0 % | 100 % | ✅ | 202 | [Coveo](coveofr.md) | [`greenhouse`](ats-greenhouse.md) | 28 | 0 % | 100 % | ✅ |
204 | [Service alimentaire Gordon](gfs.md) | [`workday`](ats-workday.md) | 28 | 64 % | 100 % | ✅ | 203 | [Service alimentaire Gordon](gfs.md) | [`workday`](ats-workday.md) | 28 | 64 % | 100 % | ✅ |
204+| [AccorHotel](accorhotel.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 27 | 59 % | 100 % | ✅ |
205 | [Behaviour Interactif](bhvr.md) | [`lever`](ats-lever.md) | 27 | 0 % | 96 % | ✅ | 205 | [Behaviour Interactif](bhvr.md) | [`lever`](ats-lever.md) | 27 | 0 % | 96 % | ✅ |
206 | [LGI Healthcare Solutions Santé Inc.](lgihealthcaresolutionssanteinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 27 | 0 % | 100 % | ✅ | 206 | [LGI Healthcare Solutions Santé Inc.](lgihealthcaresolutionssanteinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 27 | 0 % | 100 % | ✅ |
207 | [Ms](ms.md) | [`workday`](ats-workday.md) | 27 | 0 % | 100 % | ✅ | 207 | [Ms](ms.md) | [`workday`](ats-workday.md) | 27 | 0 % | 100 % | ✅ |
modified docs/connecteurs/ats-successfactors.md +14 −14
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 Contact : contact@spboucher.ai 5 Contact : contact@spboucher.ai
6 Fichier : docs/connecteurs/ats-successfactors.md 6 Fichier : docs/connecteurs/ats-successfactors.md
7 Rôle : Fiche plateforme ATS successfactors — mécanique partagée + tableau des 12 tenants 7 Rôle : Fiche plateforme ATS successfactors — mécanique partagée + tableau des 12 tenants
8−Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, 8+Généré : 2026-10-26 19:32 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 relancer le script pour régénérer. 9 relancer le script pour régénérer.
10 ============================================================================= 10 =============================================================================
11 --> 11 -->
12 12
13 # Plateforme ATS `successfactors` 13 # Plateforme ATS `successfactors`
14 14
15−**12 employeurs connectés** via cette plateforme — **1788 offres actives**. Module partagé : `jobka/connectors/successfactors.py` ; un employeur = une sous-classe d'environ 10 lignes. 15+**12 employeurs connectés** via cette plateforme — **1692 offres actives**. Module partagé : `jobka/connectors/successfactors.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 ## Description & mécanique 17 ## Description & mécanique
18 18
@@ -38,18 +38,18 @@ Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | 39 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
40 |---|---|---|---|---|---|---| 40 |---|---|---|---|---|---|---|
41−| [Bombardier](bombardier.md) | 969 | 1 % | 100 % | 64 % | 2026-10-14 18:15 | ✅ | 41+| [Bombardier](bombardier.md) | 947 | 1 % | 100 % | 61 % | 2026-10-26 19:24 | ✅ |
42−| [Alstom](alstom.md) | 252 | 8 % | 100 % | 3 % | 2026-10-14 18:09 | ✅ | 42+| [Alstom](alstom.md) | 248 | 8 % | 100 % | 3 % | 2026-10-26 19:20 | ✅ |
43−| [Hydro-Québec](hydroquebec.md) | 130 | 72 % | 87 % | 0 % | 2026-10-14 15:21 | ✅ | 43+| [Deloitte Canada](deloitte.md) | 126 | 98 % | 98 % | 99 % | 2026-10-26 18:40 | ✅ |
44−| [Deloitte Canada](deloitte.md) | 116 | 98 % | 100 % | 100 % | 2026-10-14 18:28 | ✅ | 44+| [Cascades](cascades.md) | 111 | 83 % | 100 % | 11 % | 2026-10-26 19:30 | ✅ |
45−| [Cascades](cascades.md) | 104 | 83 % | 100 % | 12 % | 2026-10-14 18:21 | ✅ | 45+| [Kiewit (Ganotec)](kiewit_ganotec.md) | 61 | 0 % | 100 % | 2 % | 2026-10-26 19:13 | ✅ |
46−| [Kiewit (Ganotec)](kiewit_ganotec.md) | 57 | 0 % | 100 % | 0 % | 2026-10-14 15:35 | ✅ | 46+| [TELUS](telus.md) | 50 | 10 % | 100 % | 22 % | 2026-10-26 15:42 | ✅ |
47−| [TELUS](telus.md) | 54 | 9 % | 100 % | 26 % | 2026-10-14 16:08 | ✅ | 47+| [Hydro-Québec](hydroquebec.md) | 49 | 22 % | 69 % | 0 % | 2026-10-26 19:03 | ✅ |
48−| [Domtar](domtar.md) | 35 | 11 % | 100 % | 0 % | 2026-10-14 18:30 | ✅ | 48+| [Domtar](domtar.md) | 34 | 12 % | 100 % | 0 % | 2026-10-26 18:41 | ✅ |
49−| [Énergir](energir.md) | 33 | 45 % | 100 % | 27 % | 2026-10-14 18:33 | ✅ | 49+| [Énergir](energir.md) | 26 | 50 % | 100 % | 31 % | 2026-10-26 18:44 | ✅ |
50−| [VIA Rail Canada](via_rail.md) | 24 | 8 % | 100 % | 0 % | 2026-10-14 16:14 | ✅ | 50+| [Canada Vie](canada_vie.md) | 24 | 96 % | 88 % | 4 % | 2026-10-26 19:26 | ✅ |
51−| [Canada Vie](canada_vie.md) | 12 | 100 % | 92 % | 8 % | 2026-10-14 18:17 | ✅ | 51+| [VIA Rail Canada](via_rail.md) | 16 | 12 % | 100 % | 0 % | 2026-10-26 15:45 | ✅ |
52−| [Dentons](dentons.md) | 2 | 100 % | 100 % | 0 % | 2026-10-14 18:29 | ✅ | 52+| [Dentons](dentons.md) | 0 | — | — | — | 2026-10-26 19:31 | ✅ |
53 53
54 ## Licence / conformité 54 ## Licence / conformité
55 55
modified docs/connecteurs/dentons.md +10 −36
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 Contact : contact@spboucher.ai 5 Contact : contact@spboucher.ai
6 Fichier : docs/connecteurs/dentons.md 6 Fichier : docs/connecteurs/dentons.md
7 Rôle : Fiche connecteur — Dentons (employeur direct, ATS successfactors) 7 Rôle : Fiche connecteur — Dentons (employeur direct, ATS successfactors)
8−Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, 8+Généré : 2026-10-26 19:32 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 relancer le script pour régénérer. 9 relancer le script pour régénérer.
10 ============================================================================= 10 =============================================================================
11 --> 11 -->
@@ -36,33 +36,7 @@ Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 ## Champs → schéma 37 ## Champs → schéma
38 38
39−Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-10-14 18:40 EDT). 39+*Aucune offre active en base pour cette source.*
40−
41−| Champ (`jobs.*`) | Rôle | Complétude |
42−|---|---|---|
43−| `title` — Titre | titre du poste | 100 % |
44−| `employer` — Employeur | nom de l'entreprise | 100 % |
45−| `url` — URL | lien direct vers l'offre originale | 100 % |
46−| `description` — Description | texte complet (HTML nettoyé) | 100 % |
47−| `city` — Ville | municipalité normalisée | 100 % |
48−| `region` — Région | région administrative | 100 % |
49−| `address` — Adresse | adresse du lieu de travail | 0 % |
50−| `postal_code` — Code postal | code postal si publié | 0 % |
51−| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52−| `employment_type` — Type | temps_plein / temps_partiel / … | 0 % |
53−| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54−| `salary_label` — Libellé salaire | texte salarial original | 100 % |
55−| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56−| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
57−| `date_posted` — Date de parution | ISO 8601 | 100 % |
58−| `date_deadline` — Date limite | date limite pour postuler | 0 % |
59−| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % |
60−| `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61−| `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62−| `apply_url` — Candidature | lien de candidature directe | 0 % |
63−| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
64−
65−Exemple réel : *Responsable, Comptes fournisseurs* — Montréal · La fourchette salariale pour ce poste est de 75,000 $ à 85,000 $, selon les compétences, l… · parue le 2026-10-04.
66 40
67 ## Fréquence & budgets 41 ## Fréquence & budgets
68 42
@@ -77,15 +51,15 @@ Exemple réel : *Responsable, Comptes fournisseurs* — Montréal · La fourchet
77 51
78 ## Volumétrie & complétude live 52 ## Volumétrie & complétude live
79 53
80−*(mesuré le 2026-10-14 18:40 EDT dans `data/jobka.db`)* 54+*(mesuré le 2026-10-26 19:32 EDT dans `data/jobka.db`)*
81 55
82−- **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`) 56+- **Offres en base** : 2 (dont **0 actives**, 0 masquées comme doublons `dup_of`)
83−- **Salaire** : 2/2 actives (100 %) 57+- **Salaire** : 0/0 actives (—)
84−- **GPS** : 2/2 actives (100 %) 58+- **GPS** : 0/0 actives (—)
85−- **Mode** : 0/2 actives (0 %) 59+- **Mode** : 0/0 actives (—)
86−- **Parution** : 2/2 actives (100 %) 60+- **Parution** : 0/0 actives (—)
87−- **Dernier sync** : 2026-10-14 18:29 — trouvées 2, +0, ~0, -0 61+- **Dernier sync** : 2026-10-26 19:31 — trouvées 0, +0, ~0, -0
88−- **Syncs enregistrés** (`sync_log`) : 91 62+- **Syncs enregistrés** (`sync_log`) : 217
89 63
90 ## Erreurs & dépannage 64 ## Erreurs & dépannage
91 65
modified jobka/connectors/dentons.py +13 −1
@@ -5,7 +5,7 @@
5 # Fichier : jobka/connectors/dentons.py 5 # Fichier : jobka/connectors/dentons.py
6 # Rôle : Connecteur Dentons (portail carrières mondial/Canada) — 6 # Rôle : Connecteur Dentons (portail carrières mondial/Canada) —
7 # SuccessFactors CSB careers.dentons.com, filtre QC 7 # SuccessFactors CSB careers.dentons.com, filtre QC
8−# Créé : 2026-10-06 Modifié : 2026-10-06 8+# Créé : 2026-10-06 Modifié : 2026-10-26
9 # ============================================================================= 9 # =============================================================================
10 """Dentons — portail carrières mondial (SuccessFactors Career Site Builder). 10 """Dentons — portail carrières mondial (SuccessFactors Career Site Builder).
11 11
@@ -19,6 +19,18 @@ réguliers du bureau de Montréal sont publiés ICI, sur careers.dentons.com
19 Comptes fournisseurs / Accounts Payable Lead », Montréal). Même variante que 19 Comptes fournisseurs / Accounts Payable Lead », Montréal). Même variante que
20 pwc 8d150eb : le volume QC de l'employeur vit sur un portail frère — ici un 20 pwc 8d150eb : le volume QC de l'employeur vit sur un portail frère — ici un
21 autre ATS, d'où un connecteur distinct plutôt qu'un EXTRA_SITES. 21 autre ATS, d'où un connecteur distinct plutôt qu'un EXTRA_SITES.
22+
23+Chronologie volume QC :
24+- 2026-10-26 : signalé « broken » (3 syncs verts à found=0) — faux positif
25+ « volume QC nul » : la paire FR/EN « Responsable, Comptes fournisseurs /
26+ Accounts Payable Lead » (ids 1362980357/1362877757, Montréal) a été
27+ dépubliée entre 14:37 et 17:14 EDT. Vérification live : sitemap urlset 200
28+ avec 131 offres mondiales mais zéro slug QC, pages détail des deux ids
29+ retombées sur le gabarit CSB vide (titre présent mais AUCUNE microdonnée
30+ itemprop, contrôle décisif : une offre vivante du sitemap en a) — tenant
31+ VIVANT, zéro migration, le 0 est correct. Offres retirées proprement à la
32+ règle des 2 absences (removed=2 à 18:09). Le connecteur reverdira seul à
33+ la prochaine publication QC.
22 """ 34 """
23 from .successfactors import SuccessFactorsConnector 35 from .successfactors import SuccessFactorsConnector
24 36
25 37
Menu

Theme