[ka6] connecteur bc2: broken = PANNE MONDIALE BambooHR (incident de sécurité PHP2SHELL), rien à réparer côté connecteur — même panne que rethinkcanada 7b553af8, robotiq 11935dc7, scalia 43e98cae, surmesur a697cc5a, toonboom e2674f6a, triotech 14ada0c8, vicpark 8bb2d6c6, ziptrekeco e6e7608c et batimoinc f3a1dbe1 le même jour. Le tenant était vert avec found=1 (= médiane 1.0) au sync de 07:20:40 le 2026-10-21, premier échec à 10:14:55, première rotation du scheduler après la fenêtre de mise hors ligne des portails BambooHR (08:34-08:37 EDT) : /careers/list = 404 text/plain {"error_msg":"404 Route Not Found"} sur bc2 ET le frère mitacs (vérifiés live pendant la mission), status.bamboohr.com toujours MONITORING (PHP2SHELL, « UPDATE: We have temporarily taking BambooHR offline as a precaution »). 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 — l'offre QC (ARCHITECTE PAYSAGISTE, Montréal, urbanisme Groupe BC2) reste active 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://groupebc2.ca (200 vérifié live, « Groupe BC2 — Activer la vitalité des milieux et des communautés » ; groupebc2.com redirige vers le .ca). Docstring chronologie 1re intervention, fiches bc2.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.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
5 changed files +48 −20
modified
data/sources.json
+1 −1
@@ -303,7 +303,7 @@ | ||
| 303 | 303 | { |
| 304 | 304 | "id": "bc2", |
| 305 | 305 | "name": "Groupe BC2", |
| 306 | − "url": "", | |
| 306 | + "url": "https://groupebc2.ca", | |
| 307 | 307 | "careers_url": "https://bc2.bamboohr.com/careers", |
| 308 | 308 | "sectors": [ |
| 309 | 309 | "Urbanisme", |
modified
docs/connecteurs/INDEX.md
+7 −7
@@ -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 13:13 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-10-21 13:28 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 13:13 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 13:28 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** — **26132 offres actives** (23131 directes, 3001 portails ; 131 masquées comme doublons inter-sources, soit 26001 visibles). 1134 fiches. | |
| 17 | +**1104 employeurs directs** connectés via **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **26134 offres actives** (23133 directes, 3001 portails ; 131 masquées comme doublons inter-sources, soit 26003 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 | |
@@ -22,13 +22,13 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 22 | 22 | |
| 23 | 23 | | Plateforme | Employeurs | Actives | Salaire | GPS | |
| 24 | 24 | |---|---|---|---|---| |
| 25 | −| [`workday`](ats-workday.md) | 232 | 7515 | 48 % | 87 % | | |
| 25 | +| [`workday`](ats-workday.md) | 232 | 7514 | 48 % | 87 % | | |
| 26 | 26 | | [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 2942 | 16 % | 99 % | |
| 27 | 27 | | [`workable`](ats-workable.md) | 71 | 2000 | 18 % | 100 % | |
| 28 | 28 | | [`dayforce`](ats-dayforce.md) | 129 | 1907 | 9 % | 100 % | |
| 29 | 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 | 1181 | 35 % | 100 % | | |
| 31 | +| [`workland`](ats-workland.md) | 1 | 1184 | 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 | 606 | 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) | 1181 | 35 % | 100 % | ✅ | | |
| 64 | +| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1184 | 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 % | ✅ | |
@@ -134,8 +134,8 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 134 | 134 | | [BPA (Experts-conseils)](bpa.md) | [`dayforce`](ats-dayforce.md) | 56 | 0 % | 100 % | ✅ | |
| 135 | 135 | | [Kruger](kruger.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 55 | 9 % | 100 % | ✅ | |
| 136 | 136 | | [McKesson Canada](mckesson.md) | [`workday`](ats-workday.md) | 55 | 87 % | 89 % | ✅ | |
| 137 | −| [Agropur](agropur.md) | [`workday`](ats-workday.md) | 54 | 94 % | 96 % | ✅ | | |
| 138 | 137 | | [Squarepoint Capital](squarepointcapital.md) | [`greenhouse`](ats-greenhouse.md) | 54 | 37 % | 100 % | ✅ | |
| 138 | +| [Agropur](agropur.md) | [`workday`](ats-workday.md) | 53 | 94 % | 96 % | ✅ | | |
| 139 | 139 | | [PwC Canada](pwc.md) | [`workday`](ats-workday.md) | 52 | 98 % | 73 % | ✅ | |
| 140 | 140 | | [TELUS](telus.md) | [`successfactors`](ats-successfactors.md) | 52 | 8 % | 100 % | ✅ | |
| 141 | 141 | | [Beneva](beneva.md) | [`workday`](ats-workday.md) | 51 | 2 % | 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 13:13 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-10-21 13:28 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 13:13 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 13:10 | ❌ | | |
| 46 | +| [Broccolini](broccolini.md) | 23 | 0 % | 100 % | 100 % | 2026-10-21 13:22 | ❌ | | |
| 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 13:13 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 13:12 | ❌ | | |
| 59 | +| [EMD-Batimo](batimoinc.md) | 8 | 0 % | 100 % | 100 % | 2026-10-21 13:19 | ❌ | | |
| 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 13:08 | ❌ | | |
| 61 | +| [Big Bang](bigbang.md) | 7 | 29 % | 100 % | 100 % | 2026-10-21 13:21 | ❌ | | |
| 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 13:13 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 12:12 | ❌ | |
| 76 | 76 | | [Ziptrek Tremblant](ziptrekeco.md) | 2 | 100 % | 100 % | 100 % | 2026-10-21 12:57 | ❌ | |
| 77 | −| [Groupe BC2](bc2.md) | 1 | 0 % | 100 % | 100 % | 2026-10-21 13:07 | ❌ | | |
| 77 | +| [Groupe BC2](bc2.md) | 1 | 0 % | 100 % | 100 % | 2026-10-21 13:27 | ❌ | | |
| 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/bc2.md
+7 −6
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/bc2.md |
| 7 | 7 | Rôle : Fiche connecteur — Groupe BC2 (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 13:28 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** : [Groupe BC2]() | |
| 19 | +- **Site** : [Groupe BC2](https://groupebc2.ca) | |
| 20 | 20 | - **Page carrières** : https://bc2.bamboohr.com/careers |
| 21 | 21 | - **Secteurs** : Urbanisme, Conseil |
| 22 | 22 | - **Région** : Montréal |
@@ -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 **1 offres actives** de la source (base live, 2026-10-14 18:40 EDT). | |
| 39 | +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-10-21 13:28 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -77,15 +77,15 @@ Exemple réel : *ARCHITECTE PAYSAGISTE* — Montréal · ∅ · parue le 2026-10 | ||
| 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 13:28 EDT dans `data/jobka.db`)* | |
| 81 | 81 | |
| 82 | 82 | - **Offres en base** : 4 (dont **1 actives**, 0 masquées comme doublons `dup_of`) |
| 83 | 83 | - **Salaire** : 0/1 actives (0 %) |
| 84 | 84 | - **GPS** : 1/1 actives (100 %) |
| 85 | 85 | - **Mode** : 1/1 actives (100 %) |
| 86 | 86 | - **Parution** : 1/1 actives (100 %) |
| 87 | −- **Dernier sync** : 2026-10-14 18:13 — trouvées 1, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 667 | |
| 87 | +- **Dernier sync** : 2026-10-21 13:27 — trouvées 0, +0, ~0, -0, **ÉCHEC : 404 Client Error: Not Found for url: https://bc2.bamboohr.com/careers/list** | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 764 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
@@ -93,6 +93,7 @@ Erreurs relevées dans `sync_log` : | ||
| 93 | 93 | |
| 94 | 94 | | Erreur | Occurrences | Dernière fois | |
| 95 | 95 | |---|---|---| |
| 96 | +| 404 Client Error: Not Found for url: https://bc2.bamboohr.com/careers/list | 11 | 2026-10-21 13:27 | | |
| 96 | 97 | | HTTPSConnectionPool(host='bc2.bamboohr.com', port=443): Max retries exceeded with url: /ca… | 1 | 2026-09-18 12:53 | |
| 97 | 98 | |
| 98 | 99 | - Rejouer un sync isolé : `.venv/bin/python run.py sync bc2` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bc2' ORDER BY ts DESC LIMIT 5;"` |
modified
jobka/connectors/bc2.py
+28 −1
@@ -5,12 +5,39 @@ | ||
| 5 | 5 | # Fichier : jobka/connectors/bc2.py |
| 6 | 6 | # Rôle : Connecteur Groupe BC2 — bamboohr (org « bc2 ») |
| 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 Bc2Connector(BambooHRConnector): |
| 14 | + """Groupe BC2 — firme-conseil québécoise en urbanisme, aménagement et | |
| 15 | + architecture de paysage (groupebc2.ca, Montréal) qui publie ses postes | |
| 16 | + sur ce board BambooHR. Volume QC faible et stable autour de 1 (médiane 1.0). | |
| 17 | + | |
| 18 | + 2026-10-21 : broken = PANNE MONDIALE DE LA PLATEFORME BambooHR (incident | |
| 19 | + de sécurité PHP2SHELL), rien à réparer côté connecteur — même panne que | |
| 20 | + les frères rethinkcanada, robotiq, scalia, surmesur, toonboom, triotech, | |
| 21 | + vicpark, ziptrekeco et batimoinc traités le même jour. BambooHR a mis ses | |
| 22 | + portails carrières hors ligne par précaution entre 08:34 et 08:37 EDT : | |
| 23 | + /careers/list = 404 text/plain {"error_msg":"404 Route Not Found"} | |
| 24 | + (Cloudflare) sur bc2 ET le frère mitacs (vérifiés live pendant la | |
| 25 | + mission), status.bamboohr.com = « MONITORING — PHP2SHELL… UPDATE: We | |
| 26 | + have temporarily taking BambooHR offline as a precaution ». Pas une | |
| 27 | + migration d'ATS : le tenant était vert avec found=1 (= médiane) au sync | |
| 28 | + de 07:20:40 le matin même, premier échec à 10:14:55 (première rotation | |
| 29 | + du scheduler après la fenêtre), et le site officiel https://groupebc2.ca | |
| 30 | + répond 200. Le sync échoue proprement (ok=0, raise_for_status 404, | |
| 31 | + re-vérifié par sync isolé pendant la mission : removed=0) donc AUCUN | |
| 32 | + retrait : l'offre QC (ARCHITECTE PAYSAGISTE, Montréal) reste active en | |
| 33 | + base ; dès que BambooHR revient (sonder /careers/list, 200 = fenêtre | |
| 34 | + finie, cf. pattern fenêtre de maintenance Workday), le sync horaire | |
| 35 | + repart seul. Artefact vague C corrigé : url vide dans sources.json → | |
| 36 | + https://groupebc2.ca (200 vérifié live, « Groupe BC2 — Activer la | |
| 37 | + vitalité des milieux et des communautés » ; groupebc2.com redirige | |
| 38 | + vers le .ca). | |
| 39 | + """ | |
| 40 | + | |
| 14 | 41 | source_id = 'bc2' |
| 15 | 42 | EMPLOYER = 'Groupe BC2' |
| 16 | 43 | ORG = 'bc2' |
| 17 | 44 | |