SPB Git

spb/job-ka

Public

[ka6] connecteur scalia: stale = PANNE MONDIALE BambooHR (incident de sécurité PHP2SHELL), rien à réparer côté connecteur — même panne que robotiq 11935dc7 et rethinkcanada 7b553af8 le même jour. Le tenant était vert avec found=5 (= médiane 5.0) au sync de 05:35:50 le 2026-10-21, premier échec à 08:40:05, pile dans la fenêtre de mise hors ligne des portails BambooHR (08:34-08:37 EDT) : /careers/list = 404 text/plain sur scalia ET le frère mitacs (vérifiés live pendant la mission), status.bamboohr.com = « UPDATE: We have temporarily taking BambooHR offline as a precaution » (PHP2SHELL). Pas une migration d'ATS. Le sync échoue proprement (ok=0, raise_for_status 404, re-vérifié par sync isolé : removed=0) donc AUCUN retrait — les 5 offres QC (Montréal/Québec, projets Westwalk) restent actives en base ; dès le retour de BambooHR (sonder /careers/list, 200 = fenêtre finie, pattern fenêtre de maintenance Workday) le sync horaire repart seul. Artefact vague C : url vide dans sources.json → https://scalia.ca (200 vérifié live, promoteur immobilier des projets Westwalk Anjou/Pointe-Claire/DDO cités dans les offres). Docstring chronologie 1re intervention, fiches scalia.md/ats-bamboohr.md/INDEX.md régénérées. 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.

Simon-Pierre Boucher committed (Oct 21, 2026) parent 11935dc Browse files

5 changed files +53 −26

modified data/sources.json +1 −1
@@ -2407,7 +2407,7 @@
2407 2407 {
2408 2408 "id": "scalia",
2409 2409 "name": "Propriétés Scalia",
2410 − "url": "",
2410 + "url": "https://scalia.ca",
2411 2411 "careers_url": "https://scalia.bamboohr.com/careers",
2412 2412 "sectors": [
2413 2413 "Immobilier"
modified docs/connecteurs/INDEX.md +12 −12
@@ -5,16 +5,16 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/INDEX.md
7 7 Rôle : Index généré de la documentation des connecteurs (ATS, employeurs, portails, dépôt)
8 −Généré : 2026-10-21 11:27 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-10-21 11:43 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Job·Ka — Connecteurs (index)
14 14
15 −> Index généré le 2026-10-21 11:27 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-21 11:43 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** — **26124 offres actives** (23123 directes, 3001 portails ; 131 masquées comme doublons inter-sources, soit 25993 visibles). 1134 fiches.
17 +**1104 employeurs directs** connectés via **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **26119 offres actives** (23118 directes, 3001 portails ; 131 masquées comme doublons inter-sources, soit 25988 visibles). 1134 fiches.
18 18
19 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,12 +23,12 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
23 23 | Plateforme | Employeurs | Actives | Salaire | GPS |
24 24 |---|---|---|---|---|
25 25 | [`workday`](ats-workday.md) | 232 | 7514 | 48 % | 87 % |
26 −| [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 2946 | 16 % | 99 % |
26 +| [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 2943 | 16 % | 99 % |
27 27 | [`workable`](ats-workable.md) | 71 | 1999 | 18 % | 100 % |
28 28 | [`dayforce`](ats-dayforce.md) | 129 | 1905 | 9 % | 100 % |
29 −| [`successfactors`](ats-successfactors.md) | 12 | 1689 | 17 % | 99 % |
29 +| [`successfactors`](ats-successfactors.md) | 12 | 1687 | 17 % | 99 % |
30 30 | [`njoyn`](ats-njoyn.md) | 11 | 1253 | 69 % | 87 % |
31 −| [`workland`](ats-workland.md) | 1 | 1175 | 36 % | 100 % |
31 +| [`workland`](ats-workland.md) | 1 | 1175 | 35 % | 100 % |
32 32 | [`greenhouse`](ats-greenhouse.md) | 132 | 824 | 18 % | 100 % |
33 33 | [`wpjobmanager`](ats-wpjobmanager.md) | 8 | 788 | 6 % | 100 % |
34 34 | [`lever`](ats-lever.md) | 58 | 604 | 20 % | 96 % |
@@ -61,7 +61,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
61 61
62 62 | Employeur | ATS | Actives | Salaire | GPS | Dernier sync OK |
63 63 |---|---|---|---|---|---|
64 −| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1175 | 36 % | 100 % | ✅ |
64 +| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1175 | 35 % | 100 % | ✅ |
65 65 | [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 1003 | 69 % | 68 % | ✅ |
66 66 | [Bombardier](bombardier.md) | [`successfactors`](ats-successfactors.md) | 959 | 1 % | 100 % | ✅ |
67 67 | [Walmart Canada](walmart.md) | [`workday`](ats-workday.md) | 953 | 98 % | 90 % | ✅ |
@@ -74,11 +74,11 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
74 74 | [Slihrms](slihrms.md) | [`workday`](ats-workday.md) | 256 | 11 % | 93 % | ✅ |
75 75 | [Go RH](gorh.md) | [`lever`](ats-lever.md) | 255 | 17 % | 98 % | ✅ |
76 76 | [CIMA+](cima2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 250 | 1 % | 100 % | ✅ |
77 −| [Alstom](alstom.md) | [`successfactors`](ats-successfactors.md) | 248 | 8 % | 99 % | ✅ |
77 +| [Alstom](alstom.md) | [`successfactors`](ats-successfactors.md) | 246 | 8 % | 99 % | ✅ |
78 78 | [Rechercher des](gianttiger.md) | [`workday`](ats-workday.md) | 241 | 0 % | 99 % | ✅ |
79 79 | [Globalhr](globalhr.md) | [`workday`](ats-workday.md) | 238 | 0 % | 83 % | ✅ |
80 −| [Airbus Canada](airbus.md) | [`workday`](ats-workday.md) | 211 | 4 % | 99 % | ❌ |
81 −| [American Iron and Metal](americanironandmetal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 210 | 22 % | 100 % | ✅ |
80 +| [Airbus Canada](airbus.md) | [`workday`](ats-workday.md) | 211 | 4 % | 99 % | ✅ |
81 +| [American Iron and Metal](americanironandmetal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 206 | 22 % | 100 % | ✅ |
82 82 | [Reitmans](reitmanscanadalteltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 204 | 19 % | 100 % | ✅ |
83 83 | [Groupe Banque TD](td.md) | [`workday`](ats-workday.md) | 186 | 94 % | 95 % | ✅ |
84 84 | [CISSS de Laval](cisss_laval.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 179 | 2 % | 100 % | ✅ |
@@ -92,8 +92,8 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
92 92 | [TJX Canada (Winners, HomeSense, Marshalls)](tjx.md) | [`workday`](ats-workday.md) | 127 | 98 % | 100 % | ✅ |
93 93 | [La Vie en Rose](lavieenrose.md) | [`dayforce`](ats-dayforce.md) | 122 | 4 % | 100 % | ✅ |
94 94 | [Deloitte Canada](deloitte.md) | [`successfactors`](ats-successfactors.md) | 116 | 98 % | 98 % | ✅ |
95 −| [Artelia Canada](artelia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 115 | 0 % | 98 % | ✅ |
96 95 | [BMO Groupe financier](bmo.md) | [`workday`](ats-workday.md) | 114 | 87 % | 79 % | ✅ |
96 +| [Artelia Canada](artelia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 113 | 0 % | 98 % | ✅ |
97 97 | [Cascades](cascades.md) | [`successfactors`](ats-successfactors.md) | 108 | 83 % | 100 % | ✅ |
98 98 | [Groupe Helios](groupehelios.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 102 | 2 % | 100 % | ✅ |
99 99 | [Dentalcorp](dentalcorp.md) | [`workday`](ats-workday.md) | 100 | 17 % | 100 % | ✅ |
@@ -220,6 +220,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
220 220 | [RM Staffing B.V.](rebootmonkey.md) | [`recruitee`](ats-recruitee.md) | 26 | 85 % | 100 % | ✅ |
221 221 | [Unitytech](unitytech.md) | [`workday`](ats-workday.md) | 26 | 88 % | 85 % | ✅ |
222 222 | [Wabtec](wabtec.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 26 | 19 % | 100 % | ✅ |
223 +| [AbbVie](abbvie.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 25 | 0 % | 100 % | ✅ |
223 224 | [AVP](aviva.md) | [`workday`](ats-workday.md) | 25 | 16 % | 92 % | ✅ |
224 225 | [Canada Vie](canada_vie.md) | [`successfactors`](ats-successfactors.md) | 25 | 100 % | 92 % | ✅ |
225 226 | [Huawei Canada](huaweicanada.md) | [`recruitee`](ats-recruitee.md) | 25 | 4 % | 100 % | ✅ |
@@ -240,7 +241,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
240 241 | [Spectrum Health Care](spectrumhealthcare.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 23 | 87 % | 100 % | ✅ |
241 242 | [Teknion Roy & Breton](teknionroybreton.md) | [`recruitee`](ats-recruitee.md) | 23 | 52 % | 83 % | ✅ |
242 243 | [Tmx](tmx.md) | [`workday`](ats-workday.md) | 23 | 0 % | 83 % | ✅ |
243 −| [AbbVie](abbvie.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 22 | 0 % | 100 % | ✅ |
244 244 | [Baro RH](barorh.md) | [`workable`](ats-workable.md) | 22 | 0 % | 100 % | ✅ |
245 245 | [dcbel](dcbel.md) | [`bamboohr`](ats-bamboohr.md) | 22 | 0 % | 100 % | ❌ |
246 246 | [Groupe Mach](groupemach.md) | [`dayforce`](ats-dayforce.md) | 22 | 9 % | 100 % | ✅ |
modified docs/connecteurs/ats-bamboohr.md +5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-bamboohr.md
7 7 Rôle : Fiche plateforme ATS bamboohr — mécanique partagée + tableau des 37 tenants
8 −Généré : 2026-10-21 11:27 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-10-21 11:43 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -43,7 +43,7 @@ Généré : 2026-10-21 11:27 EDT par scripts/gen_connector_docs.py — NE PAS
43 43
44 44 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
45 45 |---|---|---|---|---|---|---|
46 −| [Broccolini](broccolini.md) | 23 | 0 % | 100 % | 100 % | 2026-10-21 11:26 | ❌ |
46 +| [Broccolini](broccolini.md) | 23 | 0 % | 100 % | 100 % | 2026-10-21 11:39 | ❌ |
47 47 | [dcbel](dcbel.md) | 22 | 0 % | 100 % | 100 % | 2026-10-21 10:38 | ❌ |
48 48 | [Produits Labelink](labelink.md) | 19 | 0 % | 100 % | 100 % | 2026-10-21 11:14 | ❌ |
49 49 | [OPAL-RT Technologies](opalrt.md) | 18 | 0 % | 100 % | 100 % | 2026-10-21 08:28 | ✅ |
@@ -56,9 +56,9 @@ Généré : 2026-10-21 11:27 EDT par scripts/gen_connector_docs.py — NE PAS
56 56 | [Ludia / Jam City](ludia.md) | 11 | 0 % | 100 % | 100 % | 2026-10-21 11:16 | ❌ |
57 57 | [Devimco Appartements](devimco.md) | 9 | 11 % | 100 % | 100 % | 2026-10-21 10:39 | ❌ |
58 58 | [Robotiq](robotiq.md) | 8 | 0 % | 100 % | 100 % | 2026-10-21 08:38 | ❌ |
59 −| [EMD-Batimo](batimoinc.md) | 8 | 0 % | 100 % | 100 % | 2026-10-21 11:23 | ❌ |
59 +| [EMD-Batimo](batimoinc.md) | 8 | 0 % | 100 % | 100 % | 2026-10-21 11:35 | ❌ |
60 60 | [eStruxture](estruxture.md) | 8 | 12 % | 100 % | 100 % | 2026-10-21 10:45 | ❌ |
61 −| [Big Bang](bigbang.md) | 7 | 29 % | 100 % | 100 % | 2026-10-21 11:25 | ❌ |
61 +| [Big Bang](bigbang.md) | 7 | 29 % | 100 % | 100 % | 2026-10-21 11:37 | ❌ |
62 62 | [Flare (cybersécurité)](flare.md) | 7 | 14 % | 100 % | 100 % | 2026-10-21 10:46 | ❌ |
63 63 | [North West Rubber](northwestrubber.md) | 7 | 0 % | 100 % | 100 % | 2026-10-21 08:27 | ✅ |
64 64 | [Rethink](rethinkcanada.md) | 7 | 0 % | 100 % | 100 % | 2026-10-21 11:14 | ❌ |
@@ -74,7 +74,7 @@ Généré : 2026-10-21 11:27 EDT par scripts/gen_connector_docs.py — NE PAS
74 74 | [OTT Financial](ott.md) | 2 | 0 % | 100 % | 100 % | 2026-10-21 08:29 | ✅ |
75 75 | [Toon Boom Animation](toonboom.md) | 2 | 0 % | 100 % | 100 % | 2026-10-21 08:47 | ❌ |
76 76 | [Ziptrek Tremblant](ziptrekeco.md) | 2 | 100 % | 100 % | 100 % | 2026-10-21 09:07 | ❌ |
77 −| [Groupe BC2](bc2.md) | 1 | 0 % | 100 % | 100 % | 2026-10-21 11:24 | ❌ |
77 +| [Groupe BC2](bc2.md) | 1 | 0 % | 100 % | 100 % | 2026-10-21 11:35 | ❌ |
78 78 | [Aliments Ouimet-Cordon Bleu inc.](cordonbleu.md) | 1 | 100 % | 100 % | 100 % | 2026-10-21 10:36 | ❌ |
79 79 | [Poulet Rouge](pouletrouge.md) | 1 | 0 % | 100 % | 100 % | 2026-10-21 08:29 | ✅ |
80 80 | [Openmind Technologies](openmindt.md) | 1 | 0 % | 100 % | 100 % | 2026-10-21 08:28 | ✅ |
modified docs/connecteurs/scalia.md +11 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/scalia.md
7 7 Rôle : Fiche connecteur — Propriétés Scalia (employeur direct, ATS bamboohr)
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-21 11:43 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -16,7 +16,7 @@ Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS
16 16
17 17 ## Description
18 18
19 −- **Site** : [Propriétés Scalia]()
19 +- **Site** : [Propriétés Scalia](https://scalia.ca)
20 20 - **Page carrières** : https://scalia.bamboohr.com/careers
21 21 - **Secteurs** : Immobilier
22 22 - **Région** : Montréal, Anjou
@@ -36,7 +36,7 @@ Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-10-14 18:40 EDT).
39 +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-10-21 11:43 EDT).
40 40
41 41 | Champ (`jobs.*`) | Rôle | Complétude |
42 42 |---|---|---|
@@ -77,19 +77,23 @@ Exemple réel : *Technicien comptable - Accounting technician* — Montréal ·
77 77
78 78 ## Volumétrie & complétude live
79 79
80 −*(mesuré le 2026-10-14 18:40 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-10-21 11:43 EDT dans `data/jobka.db`)*
81 81
82 82 - **Offres en base** : 10 (dont **5 actives**, 0 masquées comme doublons `dup_of`)
83 83 - **Salaire** : 1/5 actives (20 %)
84 84 - **GPS** : 5/5 actives (100 %)
85 85 - **Mode** : 5/5 actives (100 %)
86 86 - **Parution** : 5/5 actives (100 %)
87 −- **Dernier sync** : 2026-10-14 15:58 — trouvées 5, +0, ~0, -0
88 −- **Syncs enregistrés** (`sync_log`) : 561
87 +- **Dernier sync** : 2026-10-21 08:40 — trouvées 0, +0, ~0, -0, **ÉCHEC : 404 Client Error: Not Found for url: https://scalia.bamboohr.com/careers/list**
88 +- **Syncs enregistrés** (`sync_log`) : 618
89 89
90 90 ## Erreurs & dépannage
91 91
92 −Aucune erreur dans `sync_log` pour cette source.
92 +Erreurs relevées dans `sync_log` :
93 +
94 +| Erreur | Occurrences | Dernière fois |
95 +|---|---|---|
96 +| 404 Client Error: Not Found for url: https://scalia.bamboohr.com/careers/list | 1 | 2026-10-21 08:40 |
93 97
94 98 - Rejouer un sync isolé : `.venv/bin/python run.py sync scalia` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='scalia' ORDER BY ts DESC LIMIT 5;"`
95 99 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified jobka/connectors/scalia.py +24 −1
@@ -5,12 +5,35 @@
5 5 # Fichier : jobka/connectors/scalia.py
6 6 # Rôle : Connecteur Propriétés Scalia — bamboohr (org « scalia »)
7 7 # [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-17]
8 −# Créé : 2026-08-17 Modifié : 2026-08-17
8 +# Créé : 2026-08-17 Modifié : 2026-10-21
9 9 # =============================================================================
10 10 from .bamboohr import BambooHRConnector
11 11
12 12
13 13 class ScaliaConnector(BambooHRConnector):
14 + """Les Propriétés Scalia — promoteur immobilier montréalais (scalia.ca,
15 + projets Westwalk Anjou/Pointe-Claire/DDO) qui publie ses postes sur ce
16 + board BambooHR. Volume QC stable autour de 5 (médiane 5.0).
17 +
18 + 2026-10-21 (1re intervention) : stale = PANNE MONDIALE DE LA PLATEFORME
19 + BambooHR (incident de sécurité PHP2SHELL), rien à réparer côté
20 + connecteur — même constat que robotiq 11935dc7 et rethinkcanada
21 + 7b553af8 le même jour. BambooHR a mis ses portails carrières hors
22 + ligne par précaution entre 08:34 et 08:37 EDT : /careers/list = 404
23 + text/plain sur TOUS les tenants (scalia ET le frère mitacs vérifiés
24 + live pendant la mission), status.bamboohr.com = « UPDATE: We have
25 + temporarily taking BambooHR offline as a precaution » (PHP2SHELL).
26 + Pas une migration d'ATS : le tenant était vert avec found=5
27 + (= médiane) au sync de 05:35:50 le matin même, premier échec à
28 + 08:40:05 — pile dans la fenêtre de début de panne. Le sync échoue
29 + proprement (ok=0, raise_for_status 404) donc AUCUN retrait : les
30 + 5 offres QC (Montréal/Québec) restent actives en base ; dès que
31 + BambooHR revient (sonder /careers/list, 200 = fenêtre finie, cf.
32 + pattern fenêtre de maintenance Workday), le sync horaire repart seul.
33 + Artefact vague C corrigé au passage : url vide dans sources.json →
34 + https://scalia.ca (200 vérifié live).
35 + """
36 +
14 37 source_id = 'scalia'
15 38 EMPLOYER = 'Propriétés Scalia'
16 39 ORG = 'scalia'
17 40
Menu

Theme