[ka6] connecteur derumarketcatering: compte JazzHR fermé — l'employeur (faux positif US, Kirkland WA, verdict site_source_mort du 2026-08-26) a désactivé son compte JazzHR, la page /apply/ renvoie 200 'Inactive Career Page' sans marqueur resumator; la garde anti-faux-zéro de la plateforme jazzhr (1c116d8) partait alors en 3 essais + 30 s de backoff par sync avec un message trompeur — détection explicite de la page 'Inactive Career Page' au niveau plateforme: échec immédiat, message 'compte JazzHR désactivé / source fermée chez l'ATS' dans sync_log; non-régression vérifiée sur tenant vivant (motosillimitees 2 offres, médiane 2.0); 0 offre active en base pour cette source
1 changed file +11 −1
modified
jobka/connectors/jazzhr.py
+11 −1
@@ -5,7 +5,7 @@ | ||
| 5 | 5 | # Fichier : jobka/connectors/jazzhr.py |
| 6 | 6 | # Rôle : Classe de plateforme JazzHR (applytojob.com) — liste HTML publique |
| 7 | 7 | # /apply/ + JSON-LD JobPosting des pages détail (lieu, salaire…) |
| 8 | −# Créé : 2026-08-25 Modifié : 2026-09-04 | |
| 8 | +# Créé : 2026-08-25 Modifié : 2026-09-04 (détection compte fermé) | |
| 9 | 9 | # ============================================================================= |
| 10 | 10 | """Plateforme JazzHR (<org>.applytojob.com), répandue chez les PME. |
| 11 | 11 | |
@@ -68,6 +68,16 @@ class JazzHRConnector(BaseConnector): | ||
| 68 | 68 | html = resp.text |
| 69 | 69 | if "resumator" in html: |
| 70 | 70 | return html |
| 71 | + # Compte JazzHR fermé (constaté le 2026-09-04 sur | |
| 72 | + # derumarketcatering) : JazzHR sert une vraie page 200 | |
| 73 | + # « Inactive Career Page » sans le marqueur resumator. | |
| 74 | + # Condition permanente, pas un challenge — échec immédiat | |
| 75 | + # avec un message explicite, sans retry/backoff inutile. | |
| 76 | + if "Inactive Career Page" in html: | |
| 77 | + raise RuntimeError( | |
| 78 | + f"jazzhr {self.ORG}: compte JazzHR désactivé " | |
| 79 | + "(« Inactive Career Page » — this account is no " | |
| 80 | + "longer active) — source fermée chez l'ATS") | |
| 71 | 81 | last = (f"HTTP {resp.status_code}, {len(html)} octets, " |
| 72 | 82 | f"content-type {resp.headers.get('content-type')}") |
| 73 | 83 | if attempt < 2: |
| 74 | 84 | |