# Altom Transport (`altom_transport`) **Employeur direct** · Plateforme ATS : [`workable`](ats-workable.md) · Statut registre : actif · Connecteur : `jobka/connectors/altom_transport.py` ## Description - **Site** : [Altom Transport](https://altomtransport.com) - **Page carrières** : https://apply.workable.com/altom-transport - **Secteurs** : Transport, Camionnage - **Région** : Montréal - Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. ## Accès - **Mécanique** : voir la fiche plateforme [`ats-workable.md`](ats-workable.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). - **Identifiants du tenant** (attributs du connecteur) : | Attribut | Valeur | |---|---| | `EMPLOYER` | `Altom Transport` | | `ORG` | `altom-transport` | - **Throttle** : 1.0 s entre requêtes. - **Filtre Québec** : seuls les postes localisés au Québec sont conservés (facette serveur quand l'ATS en offre une, sinon `is_quebec_location` côté client). ## Champs → schéma *Aucune offre active en base pour cette source.* ## Fréquence & budgets - **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. - **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). - Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. ## Volumétrie & complétude live *(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)* - **Offres en base** : 1 (dont **0 actives**, 0 masquées comme doublons `dup_of`) - **Salaire** : 0/0 actives (—) - **GPS** : 0/0 actives (—) - **Mode** : 0/0 actives (—) - **Parution** : 0/0 actives (—) - **Dernier sync** : 2026-09-21 16:37 — trouvées 0, +0, ~0, -0 - **Syncs enregistrés** (`sync_log`) : 292 ## Erreurs & dépannage Erreurs relevées dans `sync_log` : | Erreur | Occurrences | Dernière fois | |---|---|---| | HTTPSConnectionPool(host='apply.workable.com', port=443): Max retries exceeded with url: /… | 1 | 2026-09-18 12:51 | - Rejouer un sync isolé : `.venv/bin/python run.py sync altom_transport` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='altom_transport' ORDER BY ts DESC LIMIT 5;"` - 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`. ## Licence / conformité **Flux public du site carrières officiel de l'employeur** (API JSON de l'ATS ou HTML rendu serveur) — le même contenu que la page carrière affiche publiquement, prévu pour la diffusion des offres, sans authentification. Chaque offre conserve son URL originale et le bouton « Postuler chez Altom Transport » renvoie chez l'employeur. Aucune donnée personnelle de candidat n'est collectée. User-Agent identifié `JobKaBot/1.0 (+https://www.job-ka.com; contact@spboucher.ai)` sur les accès directs ; requêtes throttlées et plafonnées par budgets. ## Historique **Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : - `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; - `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; - `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). Commits touchant `jobka/connectors/altom_transport.py` : - `ea13137` 2026-09-18 [ka6] fix connecteur altom_transport: faux positif de supervision (0 offre QC légitime chez ce transporteur US) + échec DNS transitoire ponctuel — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient de la définition de succès de la supervision : le tenant Workable altom-transport n'a AUCUNE offre QC depuis la fermeture de « Chauffeur de Camion-Citerne Classe 1 » (Montréal) fin août, donc chaque sync horaire rend ok=1 found=0 (médiane 0.0) et est compté comme non-succès depuis le 2026-08-28 (509 h). Le connecteur est INTACT et re-vérifié live : l'API widget répond 200 avec 52 offres, TOUTES aux États-Unis — zéro lieu CA dans les tableaux locations, zéro poste en télétravail, zéro mention Québec/Montréal dans le JSON complet (l'aveuglement type stateindustrial est exclu). L'unique sync en échec (17/09 20:51) est une NameResolutionError DNS transitoire sur apply.workable.com, non reproduite. Même profil que earthrated f7b1c35, canadasmotorcycle 175b215, jsheldllc bdc5d09, psacunion 4d8080b : tenant à volume QC nul/faible compté non-succès par la supervision. Correction au passage de l'artefact du générateur vague C : url vide dans data/sources.json → https://altomtransport.com (vérifié 200, titre « Altom Transport | Petroleum and Chemical Transportation » ; la fiche affichait « Site : [Altom Transport]() »). Le nom d'employeur « Altom Transport » est correct. Docstring du connecteur mise à jour (52 offres, re-vérif 2026-09-18). Sync isolé rejoué : found=0 en 0,2 s, ok=1 — 0 est le volume légitime tant qu'Altom ne republie pas au Québec ; les offres reviendront d'elles-mêmes si republiées. 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200. - `2fa16cd` 2026-08-28 [ka6] fix connecteur altom_transport: employeur AMÉRICAIN de transport de liquides en vrac (Altom Transport, siège à Hammond, Indiana, dessert US+Canada) à volume QC naturellement très faible (médiane 0.5) — le board Workable apply.workable.com/altom-transport est passé à 0 offre QC le 2026-08-28 : vide LÉGITIME, la seule offre québécoise (« Chauffeur de Camion-Citerne Classe 1 », Montréal, parue 2026-07-21, vraie offre QC — permis classe 1) a été fermée par l'employeur (URL CBB48687CC → redirection /oops). Vérifications réelles : API widget v1 200 avec 37 offres, TOUTES aux É.-U. (Indiana, Ohio, Illinois, Texas, Louisiane…), 0 faux positif — le filtre is_quebec_location fait exactement son travail. Le statut stale venait du volume 0 compté comme échec par la supervision ; le connecteur est sain (syncs ok=1, board 200). L'offre montréalaise avait déjà été purgée par le mécanisme normal (miss_count=2 → removed=1, active=0 au sync de 12:27). Test final : fetch réel = 37 bruts, 0 retenus (QC) = comportement correct, les offres QC réapparaîtront d'elles-mêmes quand Altom republiera au Québec. Note de contexte ajoutée au connecteur, aucun changement de code. Sync isolé rejoué (ok), pm2 restart job-ka-sync OK, site 200. - `c45c753` 2026-08-23 Vague C — +620 connecteurs employeurs directs (350 -> 968)