| 5 |
5 |
# Fichier : jobka/connectors/workday.py |
| 6 |
6 |
# Rôle : Classe de plateforme Workday (API JSON publique wday/cxs) — un |
| 7 |
7 |
# employeur = une sous-classe de ~10 lignes (TENANT, HOST, SITE) |
| 8 |
|
−# Créé : 2026-08-17 Modifié : 2026-09-28 |
|
8 |
+# Créé : 2026-08-17 Modifié : 2026-10-10 |
| 9 |
9 |
# ============================================================================= |
| 10 |
10 |
"""Plateforme Workday. |
| 11 |
11 |
|
| 90 |
90 |
time.sleep(10 * (attempt + 1)) |
| 91 |
91 |
if resp is None: |
| 92 |
92 |
raise RuntimeError(f"Workday 5xx après 3 essais : {last}") |
|
93 |
+ # Maintenance PLANIFIÉE de la plateforme Workday (fenêtre hebdo du |
|
94 |
+ # samedi matin, constatée 2026-10-10 ~02h-? EDT sur TOUS les tenants) : |
|
95 |
+ # le POST cxs répond 303 -> community.workday.com/maintenance-page, |
|
96 |
+ # requests suit la redirection et reçoit la page HTML en 200. Nommer |
|
97 |
+ # la cause dans sync_log évite de diagnostiquer chaque tenant comme |
|
98 |
+ # une panne « non-JSON » distincte ; transitoire, repart seul. |
|
99 |
+ if "maintenance" in (resp.url or ""): |
|
100 |
+ raise RuntimeError( |
|
101 |
+ f"Workday en maintenance planifiée (redirigé vers {resp.url}) " |
|
102 |
+ "— transitoire, repart seul en fin de fenêtre") |
| 93 |
103 |
raise RuntimeError( |
| 94 |
104 |
f"Workday non-JSON après 3 essais (HTTP {resp.status_code}, " |
| 95 |
105 |
f"{resp.headers.get('content-type')}) : {last}") |
| 96 |
106 |
|