search · repositories, files, commits, branches, READMEs
Results for “ka”
Index built just now · 177 repositories · 86,021 paths
Repositories 20
-
sorti-ka
HTML
Toutes les sorties et tous les événements du Québec, un seul endroit — 7 connecteurs, fiches SSR, design Groupe KA.
-
crea-ka
Python
Créa·Ka — annuaire public cross-plateforme des créateurs de contenu québécois (crea-ka.com)
-
trouve-ka
Python
Trouve-KA — moteur de recherche web indépendant, Québec-first. Crawler distribué, index OpenSearch, ranking bilingue, galerie d'images. En prod : www.trouve-ka.com
-
api-ka
Python
API-KA — plateforme centrale : collecte quotidienne des 8 services KA, historisation append-only et API publique sur www.api-ka.com
-
lou-ka-ios
Swift
Lou·Ka iOS — app SwiftUI native de l'agrégateur de logements du Québec : filtres avancés, carte, stats, et mode Découverte (swipe) avec recommandation on-device
-
poster-ka
HTML
Posters de présentation des marques du Groupe KA — HTML autonomes, impression A3 portrait
-
fabri-ka
Python
Agrégateur de produits québécois — www.fabri-ka.com
-
lou-ka
HTML
Lou·Ka — tous les logements à louer du Québec, un seul endroit.
-
immo-ka
Python
Immo-Ka — agrégateur des propriétés à vendre au Québec (73 connecteurs, ~40 000 annonces, React+FastAPI)
-
ka6
Python
ka6 — bot FLAGSHIP du Groupe KA : explorateur structuré du web québécois. Crawling concurrent robuste, Claude Sonnet+Haiku, graphe de connaissances, dashboard temps réel.
-
ka2
Python
ka2 — explorateur structuré du web québécois (édition légère, Groupe KA). Bot scraper+IA → graphe de connaissances. Claude Haiku + Firecrawl/Scrapfly.
-
ka4
Python
ka4 — explorateur structuré du web québécois (édition agressive, Groupe KA). Crawling concurrent, Claude Sonnet+Haiku, Firecrawl/Scrapfly, graphe de connaissances.
-
resto-ka
Python
Resto·Ka — tous les restaurants du Québec, menus complets et prix réels (famille ·Ka)
-
groupe-ka
TypeScript
Groupe KA — site du holding + KA ID (compte unique & SSO des 7 plateformes). Next.js 16, SQLite, Google & Apple login.
-
food-ka
Python
Food-Ka — agrégateur de produits d'épicerie du Québec — www.food-ka.com
-
toit-ka
Python
Toit-Ka — louer ou acheter un toit au Québec, un seul endroit (fusion Lou-Ka × Immo-Ka) — www.toit-ka.com
-
ora-ka
Python
Ora-Ka — cinq agrégateurs Ka, une barre de recherche hybride (exact + sémantique)
- job-ka HTML
- ka-ui Python
- auto-ka Python
Files 20
-
kaid/kaid.py
ka-ui · main
-
kaid/kaid.ts
ka-ui · main
-
jobka/kaid.py
job-ka · main
-
louka/kaid.py
lou-ka · main
-
kaid/ka-id.js
ka-ui · main
-
nav/ka-nav.js
ka-ui · main
-
jobka/kapdf.py
job-ka · main
-
louka/kapdf.py
lou-ka · main
-
immoka/kaid.py
immo-ka · main
-
nav/ka-nav.css
ka-ui · main
-
stats/kapdf.py
ka-ui · main
-
foodka/kaid.py
food-ka · main
-
autoka/kaid.py
auto-ka · main
-
public/ka-a.js
admin-ka · main
-
rentka/kaid.py
rent-ka · main
-
immoka/kaid.py
house-ka · main
-
creaka/kaid.py
crea-ka · main
-
fabrika/kaid.py
fabri-ka · main
-
src/lib/kaid.ts
vrai-prix · main
-
immoka/kapdf.py
immo-ka · main
Commits 20
-
FIRC0002 Stage E exhibits (Agent 9): every table and figure rebuilt to the Part X standard — EDIT-11/16, ADVE-12/13/14, ECON-12/14/16/17, DATA-05/09, LITE-11/12, AI_C-15, THEO-17, engine audit (notes blocks, unreferenced tables)
wp17_uqo ·
200d195· Simon-Pierre Boucher · 3 days ago -
E (exhibits): make_tables.py rewritten — every table a self-contained float (caption, label, threeparttable notes, generated-by comment), 13 new Stage D exhibits (ledger calls, outage, grounding, spec curve, focus, cohort OLS, financing class, 8-K proxy, universe artefacts, time-series cohort, rules baseline, tokens, over-merge), Tables 1-9/12 rebuilt (ledger vs stored, CI column, 100.1 share, longtable), 8 figures to one design system (Okabe-Ito, markers, zero-based axes, integer ticks, cohort series, CIs); 830 \SPID macros incl. the 365 requested by the writing stage, computed from results/ (numbers_pending.tex retired); half-up rounding; render-and-inspect audit (quality_control/_FIRC-0001_*_audit.csv); README exhibit map (EDIT-21..23, ADVE-16, AI_C-16, AI_C-17, LITE-10, LITE-12, ECON-18, THEO-18, EDIT-05, ADVE-06, DATA-04, ECON-13, EDIT-14, ADVE-13, ECON-14, THEO-15, DATA-15, engine audit)
firc0001_uqo ·
e80ef39· Simon-Pierre Boucher · 3 days ago -
N12: environment lock of the master node venv (uv pip freeze, 88 packages), .python-version 3.12.15, environment.md
firc0001_uqo ·
906fea1· Simon-Pierre Boucher · 3 days ago -
L6: replication package — tests (22 checks: export reconciliation, byte-identical regeneration, no data literal), run_all.sh, data availability statement draft + provenance table + determinism paragraph, exhibit pins, README program-to-exhibit map, validation report (exhibit layer R1, exports provisional R2 pending N13)
firc0001_uqo ·
b2c0e2e· Simon-Pierre Boucher · 3 days ago -
L4: references.bib — bloom2021 -> kalyani2025 (QJE 2025), 24 DOI-verified additions (Crossref/DataCite 2026-11-05), SEC and FTSE Russell URLs fixed, spid2026 relabelled, sibling WP 0002 and data citations
firc0001_uqo ·
5290fca· Simon-Pierre Boucher · 3 days ago -
Revert "[ka6] fix connecteur marchelarecolte.ca: re-migration de la FICHE woocommerce→generic (platform generic + catalog_endpoint __generic__) — la migration validée 60eab35 du 11-04 a été PERDUE par le revert concurrent 43a9936, qui a remis la fiche en woocommerce + /wp-json/wc/store/v1/products → la fiche replantait sur le HTML parking WHC parsé en JSON (« Expecting value: line 1 column 1 ») → broken (30 échecs consécutifs au scan; le fix code _domain_parked WHC reste abandonné après 9 pertes, doctrine kefiplant 04c0126). Cause racine inchangée, re-vérifiée live 2026-11-05: domaine toujours AUX ENCHÈRES chez WHC — home ET Store API → 302 vers https://whc.ca/domain-names/auctions/marchelarecolte.ca (final 200), /sitemap.xml suit la même redirection et la page d'enchères ne contient AUCUNE balise <loc> (grep -c '<loc' = 0 vérifié live). Avec la fiche generic: aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique Woo n'a JAMAIS exposé de produit en 47 syncs ok avant la mort du domaine). Réapplication par ÉDITION DIRECTE ciblée de 2 lignes dans data/stores.json (pas de git revert/checkout, pattern foodcrayon fc3a5b6/theprettyuglycompany d888efc), jamais de json.dump global, AUCUN code touché — woocommerce.py volontairement laissé tel quel (le hunk WHC absent, grep 'domain-names/auctions' = 0, n'est plus nécessaire tant que la fiche reste generic). Sync réel 2026-11-05: marchelarecolte.ca ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et 1001fondues.com ok / 28 (chemin Woo nominal) — 3 ok, 0 erreur en 8 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers whc.ca: toute fiche woocommerce ici replante en broken. Si un acheteur relance une boutique (curl -sI https://marchelarecolte.ca/ → plus de 302 whc.ca), re-sonder la plateforme live et re-migrer la fiche vers le bon connecteur. Si re-broken: grep marchelarecolte data/stores.json (doit être generic + __generic__), re-migrer les 2 lignes, ne pas toucher woocommerce.py."
fabri-ka ·
7e02f45· Simon-Pierre Boucher · 3 days ago -
Revert "[ka6] fix connecteur fermeail-land.com: re-migration de la FICHE shopify→generic (platform generic + catalog_endpoint __generic__) — la migration validée 5f50a13 du 11-04 a été PERDUE par le revert concurrent e4282a9, qui a remis la fiche en shopify + /products.json → la fiche replantait sur le TLS mort non géré de shopify.py (le fix code _shop_disconnected reste abandonné après 3 pertes, grep vide re-vérifié ce jour; doctrine kefiplant 04c0126) → broken (32 échecs consécutifs au scan). Cause racine inchangée, re-vérifiée live 2026-11-05: domaine pointant vers l'edge Shopify mais AUCUNE boutique rattachée — http://fermeail-land.com/ → 409 / 17 octets « error code: 1001 », https apex → TLS mort (curl exit 35, pas de cert SNI), www → exit 6, /products.json injoignable (exit 35). Avec la fiche generic: tous les roots sitemap échouent en TLS → aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique n'a jamais exposé de produit, dernier succès None). Réapplication par ÉDITION DIRECTE ciblée de 2 lignes dans data/stores.json (pas de git revert/checkout, pattern marchelarecolte 63b332c / foodcrayon fc3a5b6), jamais de json.dump global, AUCUN code touché — shopify.py volontairement laissé tel quel (sans _shop_disconnected): plus nécessaire tant que la fiche reste platform=generic. Sync réel 2026-11-05: fermeail-land.com ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et ateliersaintcerf.com ok / 62 (chemin shopify nominal) — 3 ok, 0 erreur en 5 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que https://fermeail-land.com/products.json reste injoignable: toute fiche shopify ici replante en broken. Si le marchand rattache une boutique (curl -s -o /dev/null -w '%{http_code}' https://fermeail-land.com/products.json → 200), re-sonder la plateforme live et re-migrer la fiche vers shopify + /products.json. Si re-broken: grep fermeail-land data/stores.json (doit être generic + __generic__), re-migrer les 2 lignes, ne pas toucher shopify.py."
fabri-ka ·
bf2ebbd· Simon-Pierre Boucher · 3 days ago -
[ka6] fix connecteur fermeail-land.com: re-migration de la FICHE shopify→generic (platform generic + catalog_endpoint __generic__) — la migration validée 5f50a13 du 11-04 a été PERDUE par le revert concurrent e4282a9, qui a remis la fiche en shopify + /products.json → la fiche replantait sur le TLS mort non géré de shopify.py (le fix code _shop_disconnected reste abandonné après 3 pertes, grep vide re-vérifié ce jour; doctrine kefiplant 04c0126) → broken (32 échecs consécutifs au scan). Cause racine inchangée, re-vérifiée live 2026-11-05: domaine pointant vers l'edge Shopify mais AUCUNE boutique rattachée — http://fermeail-land.com/ → 409 / 17 octets « error code: 1001 », https apex → TLS mort (curl exit 35, pas de cert SNI), www → exit 6, /products.json injoignable (exit 35). Avec la fiche generic: tous les roots sitemap échouent en TLS → aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique n'a jamais exposé de produit, dernier succès None). Réapplication par ÉDITION DIRECTE ciblée de 2 lignes dans data/stores.json (pas de git revert/checkout, pattern marchelarecolte 63b332c / foodcrayon fc3a5b6), jamais de json.dump global, AUCUN code touché — shopify.py volontairement laissé tel quel (sans _shop_disconnected): plus nécessaire tant que la fiche reste platform=generic. Sync réel 2026-11-05: fermeail-land.com ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et ateliersaintcerf.com ok / 62 (chemin shopify nominal) — 3 ok, 0 erreur en 5 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que https://fermeail-land.com/products.json reste injoignable: toute fiche shopify ici replante en broken. Si le marchand rattache une boutique (curl -s -o /dev/null -w '%{http_code}' https://fermeail-land.com/products.json → 200), re-sonder la plateforme live et re-migrer la fiche vers shopify + /products.json. Si re-broken: grep fermeail-land data/stores.json (doit être generic + __generic__), re-migrer les 2 lignes, ne pas toucher shopify.py.
fabri-ka ·
76cbfa0· Simon-Pierre Boucher · 3 days ago -
[ka6] fix connecteur marchelarecolte.ca: re-migration de la FICHE woocommerce→generic (platform generic + catalog_endpoint __generic__) — la migration validée 60eab35 du 11-04 a été PERDUE par le revert concurrent 43a9936, qui a remis la fiche en woocommerce + /wp-json/wc/store/v1/products → la fiche replantait sur le HTML parking WHC parsé en JSON (« Expecting value: line 1 column 1 ») → broken (30 échecs consécutifs au scan; le fix code _domain_parked WHC reste abandonné après 9 pertes, doctrine kefiplant 04c0126). Cause racine inchangée, re-vérifiée live 2026-11-05: domaine toujours AUX ENCHÈRES chez WHC — home ET Store API → 302 vers https://whc.ca/domain-names/auctions/marchelarecolte.ca (final 200), /sitemap.xml suit la même redirection et la page d'enchères ne contient AUCUNE balise <loc> (grep -c '<loc' = 0 vérifié live). Avec la fiche generic: aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique Woo n'a JAMAIS exposé de produit en 47 syncs ok avant la mort du domaine). Réapplication par ÉDITION DIRECTE ciblée de 2 lignes dans data/stores.json (pas de git revert/checkout, pattern foodcrayon fc3a5b6/theprettyuglycompany d888efc), jamais de json.dump global, AUCUN code touché — woocommerce.py volontairement laissé tel quel (le hunk WHC absent, grep 'domain-names/auctions' = 0, n'est plus nécessaire tant que la fiche reste generic). Sync réel 2026-11-05: marchelarecolte.ca ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et 1001fondues.com ok / 28 (chemin Woo nominal) — 3 ok, 0 erreur en 8 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers whc.ca: toute fiche woocommerce ici replante en broken. Si un acheteur relance une boutique (curl -sI https://marchelarecolte.ca/ → plus de 302 whc.ca), re-sonder la plateforme live et re-migrer la fiche vers le bon connecteur. Si re-broken: grep marchelarecolte data/stores.json (doit être generic + __generic__), re-migrer les 2 lignes, ne pas toucher woocommerce.py.
fabri-ka ·
63b332c· Simon-Pierre Boucher · 3 days ago -
[ka6] connecteur toonboom: faux positif « volume QC nul » (dépublication légitime de l'unique offre QC) — AUCUN code de fetch modifié (verdict rien_a_faire). Le stale vient de l'offre BambooHR 34 « Faites partie du réseau de services professionnels de Toon Boom » (réseau de talents permanent, Montréal, parue 2025-08-11) dépubliée par Toon Boom entre les syncs verts du 04/11 15:58 (found=1, série verte continue depuis la panne BambooHR du 21/10) et 17:39 (found=0), retrait propre removed=1 à 20:11 (règle des 2 absences) ; la supervision compte found=0 comme non-succès (médiane 0.5, fiche stale-volume-zero-faux-positif). Preuves live : marqueur BambooHR de dépublication confirmé — détail /careers/34/detail → 404 not_found « the id you provided doesn't exist » vs 200 (21 ko) sur l'offre vivante 76 en contrôle ; board /careers/list 200 totalCount=1, unique posting restant « Japan Country Manager » (Tokyo, atsLocation complet) = pas d'aveuglement QC, le volume montréalais s'est tari (9 offres QC en base depuis 2026-08, dépubliées une à une depuis sept.) ; pas de migration : portail toonboom.bamboohr.com/careers 200, tenant actif. Sync isolé rejoué vert ok=1 found=0 en 0,3 s. Docstring chronologie ajoutée au connecteur (2e intervention), fiches toonboom.md/ats-bamboohr.md/INDEX.md régénérées (1132 autres restaurées, hors périmètre), 108 tests pytest verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200. Si Toon Boom republie un poste à Montréal, il reviendra seul au prochain sync horaire.
job-ka ·
17cb5feb· Simon-Pierre Boucher · 4 days ago -
Revert "[ka6] fix connecteur marchelarecolte.ca: CHANGEMENT D'ANGLE — fiche migrée woocommerce→generic (platform generic + catalog_endpoint __generic__), le fix code _domain_parked WHC dans woocommerce.py ayant été PERDU une 9e FOIS par des reverts concurrents (9e application c2adcab du 10-27 de nouveau absente au 11-04: grep 'domain-names/auctions|Domain registered at WHC' vide, seul le squelette générique de _domain_parked subsiste — revert chirurgical comme ca16e21/0024caf; la guerre de reverts rendait le fix code intenable). Cette migration de FICHE sort marchelarecolte.ca de woocommerce.py pour de bon: plus rien à reverter dans le code, doctrine kefiplant 04c0126, précédents foodcrayon 398d211, lespassionnees 9e3ff49, bocauxetco 639e1da, atelierlaf ddb1524. Cause racine inchangée, re-vérifiée live 2026-11-04 15:27 UTC: domaine AUX ENCHÈRES chez WHC — home et /sitemap.xml → 302 (Caddy) vers https://whc.ca/domain-names/auctions/marchelarecolte.ca (final 200, page 79 741 octets), Store API /wp-json/wc/store/v1/products → 200 HTML parking 16 936 octets. Sans fix: la fiche woocommerce parsait ce HTML en JSON → « Expecting value: line 1 column 1 » → broken (30 échecs consécutifs au scan). Avec la fiche generic: tous les roots sitemap redirigent vers la page d'enchères WHC qui ne contient AUCUNE balise <loc> (vérifié live: grep -c '<loc' = 0) → aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique Woo n'a JAMAIS exposé de produit en 47 syncs ok avant la mort du domaine; rien à vendre, rien à perdre). Édition ciblée de 2 lignes dans data/stores.json, jamais de json.dump global, AUCUN code touché — woocommerce.py volontairement laissé tel quel (sans le hunk WHC): le réappliquer n'est PLUS nécessaire pour marchelarecolte tant que la fiche reste platform=generic. Sync réel 2026-11-04: marchelarecolte.ca ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et 1001fondues.com ok / 28 (chemin Woo nominal) — 3 ok, 0 erreur en 32 s. pm2 restart fabri-ka-sync fait, web local 200. Si un acheteur relance une boutique sur le domaine (curl -sI https://marchelarecolte.ca/ → plus de 302 whc.ca), re-sonder la plateforme live et re-migrer la fiche. Si re-broken: c'est que la FICHE a été revertée — grep marchelarecolte data/stores.json (doit être generic + __generic__), la re-migrer (2 lignes), ne pas toucher woocommerce.py."
fabri-ka ·
43a9936· Simon-Pierre Boucher · 4 days ago -
[ka6] connecteur maquettevirtuelle: faux positif « volume QC nul », 2e récidive (rotation Lever) — AUCUN code de fetch modifié (verdict rien_a_faire). Le stale vient de l'UNIQUE offre QC 848422a7 « Concepteur mécanique - Solidworks » (Québec, parue 2026-10-06) dépubliée par Maquette Virtuelle entre les syncs verts du 04/11 11:50 (found=1, série verte continue) et 14:32 (found=0), retrait propre removed=1 à 15:35 (règle des 2 absences) ; la supervision compte found=0 comme non-succès (médiane 0.5, fiche stale-volume-zero-faux-positif). Même pattern de rotation Lever que l'intervention du 2026-10-26. Preuves live : marqueur Lever de dépublication confirmé — détail API v0 de l'offre retirée → 404 vs 200 sur une offre vivante en contrôle ; board v0 200 avec 3 postings TOUS « Tunisie, TN » (0 mention Québec) = pas d'aveuglement QC, l'employeur publie à Québec par vagues (8 offres QC en base depuis 2026-08, il recrute aussi pour son bureau tunisien) ; pas de migration : jobs.lever.co/maquettevirtuelle répond normalement. Sync isolé rejoué vert ok=1 found=0 en 0,8 s. Docstring chronologie ajoutée au connecteur, fiches maquettevirtuelle.md/ats-lever.md/INDEX.md régénérées (1132 autres restaurées, hors périmètre), 108 tests pytest verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200. Si Maquette Virtuelle republie un poste QC, il reviendra seul au prochain sync horaire.
job-ka ·
20ee8e99· Simon-Pierre Boucher · 4 days ago -
[ka6] connecteur gategroup: faux positif « volume QC nul » (dépublication légitime des 2 dernières offres Dorval) — AUCUN code de fetch modifié (verdict rien_a_faire). Le stale vient des 2 offres QC du tenant Workday gategroup.wd3 — R0110496 « Operations, Supervisor, Food » puis R0101916 « Final Assembler - $25/hr » (Dorval, cuisine YUL) — dépubliées par Gategroup entre les syncs verts du 03/11 12:07 (found=2) → 14:36 (found=1, removed=1) → 04/11 11:06 (found=0), retrait propre removed=1 à 14:03 (règle des 2 absences) ; la supervision compte found=0 comme non-succès (médiane 0.5, fiche stale-volume-zero-faux-positif). Preuves live : marqueur Workday de dépublication confirmé — détail cxs de R0101916 retirée → 403 S22 « permission denied » (même signature que fiserv 86595740/dxctechnology) vs 200 sur l'offre vivante R0111655 Halifax en contrôle ; board cxs 200 avec 172 offres monde dont 22 « Canada » TOUTES hors QC (Vancouver, Halifax, Mississauga, Ottawa, Edmonton — 0 mention Québec) = pas d'aveuglement QC, Gategroup ne publie à Dorval que par vagues (13 offres QC en base depuis 2026-08-23, souvent éphémères). Sync isolé rejoué vert ok=1 found=0 en 13,4 s. Docstring chronologie ajoutée au connecteur, fiches gategroup.md/ats-workday.md/INDEX.md régénérées (1132 autres restaurées, hors périmètre), 108 tests pytest verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200. Si Gategroup republie un poste à Dorval, il reviendra seul au prochain sync horaire.
job-ka ·
5a11e869· Simon-Pierre Boucher · 4 days ago -
[ka6] connecteur fiserv: faux positif « volume QC nul » (dépublication légitime de l'unique offre QC) — AUCUN code de fetch modifié (verdict rien_a_faire). Le stale vient de l'offre Workday R-10397282 « Account Executive | Chargé(e) de Comptes » (Québec, parue 2026-10-16) dépubliée par Fiserv entre les syncs verts du 03/11 23:11 (found=1, série verte continue) et du 04/11 01:41 (found=0) ; la supervision compte found=0 comme non-succès (médiane 1.0, fiche stale-volume-zero-faux-positif). Preuves live : marqueur Workday de dépublication confirmé — détail cxs de l'offre retirée → 403 S22 « permission denied » (variante du 404, même marqueur que le cas dxctechnology 8d1bcf24) vs 200 sur une offre vivante en contrôle ; board cxs 200 avec 403 offres monde dont 6 « Canada » TOUTES hors QC (facette locations : Mississauga ×4, Remote Ontario ×1) = pas d'aveuglement QC, Fiserv ne publie à Québec que sporadiquement (5 offres QC en base depuis 2026-08, chacune vécue ~3-6 semaines) ; pas de migration : fiserv.wd5/EXT répond normalement. Sync isolé rejoué vert ok=1 found=0 removed=1 en 25 s (retrait propre de R-10397282 par la règle des 2 absences). Docstring chronologie ajoutée au connecteur, fiches fiserv.md/ats-workday.md/INDEX.md régénérées (1132 autres restaurées, hors périmètre), 108 tests pytest verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200. Si Fiserv republie un poste QC, il reviendra seul au prochain sync horaire.
job-ka ·
86595740· Simon-Pierre Boucher · 4 days ago -
[ka2] fix site down louka: saturation du threadpool par les agrégats plein-table de l'accueil et de /api/stats — cache TTL single-flight. Panne du 2026-11-03 21:02 (502 public, localhost:8095 muet, process pm2 « online ») : py-spy montre les ~40 threads anyio TOUS bloqués dans home_ssr (seo.py) et stats (web.py), le sample natif les montre moulinant dans des lectures SQLite (pages overflow + contention du mutex pcache). Cause racine : chaque GET / exécutait 4 scans plein-table sur listings (louka.db = 5 Go, 254 k lignes aux gros blobs JSON) et chaque /api/stats 2 de plus — rapides à chaud (<1 s) mais >30 s à froid ; après le reboot du nœud (17:14) puis le gros sync de 21:05 qui évince le cache de pages OS, healthchecks + bot (via ngrok) empilent ces requêtes plus vite qu'elles ne finissent, le threadpool se vide et le site devient muet (le redémarrage pm2 de 21:06 n'a tenu que ~2 min, le temps que la pile se reforme). Fix : agrégats de l'accueil (_home_data, TTL 600 s) et de /api/stats (_stats_aggregates, TTL 300 s) calculés en single-flight — un seul thread recalcule, les appels concurrents servent la version précédente — et plus jamais N fois en parallèle ; recent_syncs/disabled_sources de /api/stats restent live (contrat moniteur api-ka inchangé). Bonus : index idx_sync_log_ts (sync_log = 206 k lignes triées par ts à chaque /api/stats), créé sur la base live + ajouté au schéma db.py. Testé : TestClient / et /api/stats → 200 (1er remplissage ~2 s, hits cachés ~1 ms, payload stats identique), pm2 restart lou-ka-web, puis 2 mesures à 30 s+ d'intervalle : localhost:8095 200 (0,001-0,003 s), https://www.lou-ka.com 200 (0,09-0,20 s), /api/stats 200 — stable à travers un restart du veilleur à 21:16.
lou-ka ·
bbfec56· Simon-Pierre Boucher · 5 days ago -
[ka6] connecteur rmldb: faux positif stale sur blip 403 ponctuel du frontal Dayforce — AUCUN code de fetch modifié (verdict rien_a_faire). Le stale vient d'un UNIQUE échec 403 Forbidden sur /api/geo/rmldb/jobposting/search à 17:58 (2026-11-03), entre deux syncs verts found=2 (15:18 avant, série verte continue depuis des semaines) ; la supervision a vu « aucun succès depuis 5 h » car la cadence effective du cycle est ~2,5 h et le seuil 4 h est tombé juste après l'échec. Aucun autre tenant Dayforce (ni autre connecteur) en échec dans la fenêtre = pas systémique, blip ponctuel du frontal — 2e confirmation de la variante « 403 CSRF ponctuel » (après sobeys, fiche dayforce-instabilite-frontal-blip). Sync isolé rejoué vert ok=1 found=2 en 1,6 s (= médiane historique 2.0 exacte : les 2 offres Chauffeur Class 1 Montréal toujours publiées). Docstring chronologie ajoutée au connecteur, 108 tests pytest verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
job-ka ·
97764ae1· Simon-Pierre Boucher · 5 days ago -
[ka2] fix connecteur sotramont: hoquets « 200 sans cartes » récurrents retryables sur le portfolio. Au sync de 21:18 le connecteur a échoué (stale) sur une page 200 servie SANS cartes article.c--article-project — 2e épisode du même hoquet (10-17, conclu « rien à faire » : il revient), alors que le connecteur est sain (found=8 stable, re-testé live : 200, 152 occurrences de c--article-project, fetch venv → 8 unités). Le retry du fix 09-21 ne couvrait que l'échec du GET : un 200 vide partait directement en erreur franche et tuait le sync sur un hoquet isolé. Fix minimal (patron morin ae6ac03 / groupe_robin 3f5c9dc) : la boucle de retry ×3 (backoff 0/3/6 s) couvre désormais AUSSI le cas « GET ok mais 0 carte » ; erreurs franches inchangées après 3 échecs (pas de zéro silencieux), distinction conservée entre portfolio inaccessible et gabarit remanié. Fixtures inchangées, pytest sotramont 2 passed. Testé : fetch() venv → 8 unités (Pointe-Claire 3, Mascouche 2, Repentigny 2, Saint-Laurent 1 ; 1 460-1 970 $), run.py sync sotramont → found=8 ok (added=0, updated=0, removed=0, 1,4 s) = médiane exacte 8.0, pm2 restart lou-ka-sync, site :8095 → 200.
lou-ka ·
370eefd· Simon-Pierre Boucher · 10 days ago -
[ka2] fix connecteur groupe_robin: timeouts admin-ajax récurrents retryables sur le POST liste. Au sync de 11:45 le connecteur a échoué (stale) sur un ReadTimeout 30 s — 3e épisode du même hoquet (ConnectTimeout 09-13, ReadTimeout 10-17 et 10-28) sur le POST admin-ajax get_list_immeubles_ajx dont la réponse pèse ~3,9 Mo (backend WP parfois lent), alors que le connecteur est sain (found=62 stable, re-testé live : 200 en 3-5 s ×3). Les deux missions précédentes avaient conclu « transitoire, rien à faire » : le hoquet revient — fix minimal (patron morin ae6ac03) : _post_ajax fait désormais 3 tentatives avec backoff 0/5/10 s sur Timeout/ConnectionError/HTTP 5xx (4xx propagés tels quels), erreur franche inchangée si les 3 échouent (pas de zéro silencieux) ; timeout de classe porté 30 → 60 s pour le payload lourd. Fixtures inchangées, pytest groupe_robin 2 passed. Testé : fetch() venv → 62 unités (715-2 190 $, T-R 39 / St-Hyacinthe 23), run.py sync groupe_robin → found=62 ok (added=0, updated=0, removed=0, 3,5 s) = médiane exacte 62.0, pm2 restart lou-ka-sync, site :8095 → 200.
lou-ka ·
3f5c9dc· Simon-Pierre Boucher · 11 days ago -
[ka2] fix connecteur summum: migration du portail — Building Stack (location.summumpm.com) → Eversa (rental.summumpm.com). Au sync de 15:36 le connecteur rapportait found=0 « ok » (dérive détectée, retraits suspendus) : location.summumpm.com redirige désormais TOUT en 302 vers app.buildingstack.com (le portail jumeau edifialocation.com, lui, répond encore — c'est bien Summum qui a migré, lien « rental.summumpm.com/listings/list » sur summumpm.com). Le nouveau portail est une app Eversa (React Router « turbo-stream »), exactement le gabarit de gestion_cem : réécriture sur le patron gestion_cem.py (dont on importe _decode/_num/_unit_type) — /fr/listings/list.data (45 cartes immeuble) puis /fr/listings/<slug>/details.data par immeuble (units[] listed=true, via cache BD detail, clé = prix/dispo/compteur de la carte ; la fiche LÈVE si `listing` absent pour ne jamais empoisonner le cache). external_id = slug-uuid de l'UNITÉ (granularité inchangée, mais ids nécessairement neufs : les ApartmentId Building Stack n'existent plus → 75 ajouts, les 40 anciens partent en miss_count). Nouveautés : secteur (quartier, 56/75), pi² bornés 80-20000 (le portail publie des area=0/1 bidons), images Supabase préfixées BASE. Volume : le nouveau portail publie plus d'inventaire → 75 unités vs ~40 (Montréal 69, Blainville 2, Granby 2, Saint-Calixte 1, Longueuil 1 ; 695-2 589 $, 100 % prix/images, GPS 70/75). robots.txt : Crawl-delay 10 → request_delay = 10 s (patron halfred). Garde-fous : erreur franche si payload sans `listings` ou si cartes présentes mais 0 parsée. sources.json : URLs migrées vers rental.summumpm.com, secteurs mis à jour. Fixture ré-enregistrée (46 requêtes, 75 annonces), pytest summum 2 passed. Testé : fetch() venv → 75 unités, run.py sync summum → found=75 ok (added=75, removed=0, missed=40, 2,4 s) vs médiane 40, pm2 restart lou-ka-sync, site :8095 → 200.
lou-ka ·
8015617· Simon-Pierre Boucher · 12 days ago -
[ka2] fix connecteur morin: hoquets 500 intermittents de l'hébergeur retryables sur la page liste. Au sync de 14:10 le connecteur a échoué (stale) sur un 500 isolé : constructionsmorin.com est revenu de sa panne MySQL d'octobre mais FLAPPE — ~60 % des requêtes servent la page Avada complète (200, 128 Ko, 6 blocs .appartement_list_block), le reste des 500 vides (0 octet), vérifié par 5 essais curl consécutifs (200/200/500/200/500). Le GET unique de fetch() tuait tout le sync sur un seul hoquet, alors que le connecteur est sain (found=6 stable depuis des jours, parsing inchangé). Fix minimal (patron louis14 7e16840) : _get_list_with_retry — 3 tentatives avec backoff 0/5/10 s sur HTTPError >= 500 uniquement (4xx propagés tels quels), erreur franche inchangée si les 3 échouent (pas de zéro silencieux, rien d'inventé). Fixtures inchangées, pytest morin 2 passed. Testé : run.py sync morin → found=6 ok (added=0, updated=0, removed=0, 2,1 s) = médiane exacte 6.0, pm2 restart lou-ka-sync, site :8095 → 200.
lou-ka ·
ae6ac03· Simon-Pierre Boucher · 12 days ago
README content 20
-
sorti-ka
File: README.md Desc: Documentation du dépôt Sorti Ka — agrégateur de sorties & événements Sorti·Ka Toutes les sorties, dans les 17 régions Sorti·Ka est un agrégateur indépendant de sorties et d'événements couvrant les 1…
-
crea-ka
Créa·Ka Les créateurs d'ici, tous leurs liens Les pastilles de la deuxième rangée sont dynamiques : elles interrogent en direct du site via shields.io. Créa·Ka (www.crea ka.com) est l' annuaire public, québécois et cross…
-
trouve-ka
Trouve·Ka Le moteur de recherche du Groupe KA — bâti au Québec, de zéro &color=555555&style=flat square) Les pastilles de la deuxième rangée sont dynamiques : elles interrogent en direct — les chiffres que tu vois là hau…
-
api-ka
API·Ka La donnée de l'écosystème, par API API·Ka (www.api ka.com) est la plateforme de données centrale de l'écosystème Groupe KA . Chaque jour, 11 collecteurs (lou ka, immo ka, food ka, auto ka, fabri ka, resto ka, sort…
-
lou-ka-ios
Lou·Ka — app iOS Tous les logements à louer du Québec. Dans votre poche. Compagnon natif de www.lou ka.com · dépôt web 141814?style=for the badge&logoColor=d9f26b) App SwiftUI 100 % native branchée sur l'API de productio…
-
poster-ka
Poster KA Collection de posters de présentation pour les marques du Groupe KA — des fichiers HTML 100 % autonomes (hors site), pensés pour être ouverts dans un navigateur et imprimés en A3 portrait (ratio √2, 860 × 1216…
-
fabri-ka
Fabri·Ka Tous les produits québécois. Un seul endroit. www.fabri ka.com Les pastilles « produits / boutiques live / registre QC / régions » sont dynamiques : elles interrogent en direct. Description Fabri Ka est le réper…
-
lou-ka
Lou·Ka Tous les logements à louer Chercher un appartement au Québec, c'est ouvrir des dizaines de sites différents — chacun avec sa navigation, ses filtres, son format. Lou·Ka retourne le problème : un connecteur dédié p…
-
immo-ka
Immo·Ka Toutes les propriétés à vendre du Québec — maisons, condos, plex et terrains — réunies au même endroit, toujours à jour. Immo Ka est un agrégateur immobilier indépendant pour la province de Québec. Chercher une p…
-
ka6
ka2 🇶🇨 Bot de scraping + recherche piloté par IA , long terme , qui cartographie le web québécois : entreprises, organisations, sites web et personnes à rôle public/professionnel, avec leurs coordonnées publiques et li…
-
ka2
ka2 🇶🇨 Bot de scraping + recherche piloté par IA , long terme , qui cartographie le web québécois : entreprises, organisations, sites web et personnes à rôle public/professionnel, avec leurs coordonnées publiques et li…
-
ka4
ka2 🇶🇨 Bot de scraping + recherche piloté par IA , long terme , qui cartographie le web québécois : entreprises, organisations, sites web et personnes à rôle public/professionnel, avec leurs coordonnées publiques et li…
-
resto-ka
Resto·Ka Chaque resto, chaque plat, chaque prix Resto·Ka (www.resto ka.com) est l' agrégateur exhaustif des restaurants du Québec : chaque resto, chaque plat, chaque prix — dans les 17 régions administratives, au même en…
-
groupe-ka
Groupe·Ka Le portail de l'écosystème ·Ka ↑ pastilles live — les chiffres sont tirés en direct des /api/stats publics de l'écosystème, exactement comme la page d'accueil du hub. Présentation & mission Groupe·Ka (www.group…
-
food-ka
Food·Ka Les prix d'épicerie, suivis à la source Les pastilles de la deuxième rangée sont dynamiques : elles interrogent en direct. Food Ka est un agrégateur et comparateur indépendant de produits d'épicerie couvrant tout…
-
toit-ka
…désormais la seule source de vérité du projet. Ancienne URL : https://www.toit ka.com Toit Ka — louer ou acheter un toit au Québec, au même endroit 4264fb?style=flat square) blue?style=flat square) Toit Ka (www.toit ka.…
-
ora-ka
…t désormais la seule source de vérité du projet. Ancienne URL : https://www.ora ka.com Ora·Ka — Cinq agrégateurs. Une barre. Auteur : Simon Pierre Boucher — contact@spboucher.ai Ora Ka unifie les cinq agrégateurs automat…
-
job-ka
Job·Ka Tous les emplois des employeurs québécois Les grands sites d'emploi mélangent annonces payantes, doublons repostés et offres mortes. L'offre originale — celle de la page carrière de l'employeur — est la seule sour…
-
ka-ui
ka ui — design system commun Groupe KA Identité « éditorial sharp » partagée par les 12 plateformes de l'écosystème (groupe ka, trouve ka, lou ka, immo ka, vrai prix, auto ka, fabri ka, food ka, resto ka, sorti ka, crea…
-
auto-ka
Auto·Ka Les voitures usagées du Québec Les pastilles de la deuxième rangée sont dynamiques : elles interrogent en direct. Auto Ka est un agrégateur indépendant de véhicules usagés couvrant la province de Québec. Chercher…