SPB Git

spb/api-ka

Public

API-KA — plateforme centrale : collecte quotidienne des 8 services KA, historisation append-only et API publique sur www.api-ka.com

page 1
  1. Sat, Aug 22, 2026 1

  2. Wed, Aug 19, 2026 2

    1. Mobile : champs du playground et dates stats ≥16 px (anti-zoom iOS), socle mobile tokens.css, ka-agent corrigé
      …
      - src/api/web/index.html : media query ≤767 px — .field select/.field input du
        playground passés de 13 px à 16 px (le focus d un champ <16 px déclenche un
        zoom de page sur Safari iOS).
      - src/api/web/stats.html : .input (dates #d-from/#d-to et recherche du tableau)
        à 16 px sous 768 px.
      - src/api/web/contact.html : aucun champ — rien à corriger.
      - src/api/web/ka/tokens.css : socle mobile obligatoire (échelle z-index --z-*,
        --vh100 dvh, .ka-bottombar, .ka-scroll-lock, .ka-menu/.ka-overlay, filet
        anti-zoom iOS global, zone tactile étendue du gk-badge).
      - src/api/web/ka-agent.js : safe-areas bulle/panneau, textarea 16 px, plein
        écran auto ≤640 px + verrou kaa-lock, pas de focus clavier forcé.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 4 files +116 −7
  3. Tue, Aug 18, 2026 5

    1. Endpoint /api/v1/louka/fairvalue/{uid} : juste valeur Lou-Ka en direct (proxy)
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +24
    2. feat: intégration de job-ka (9e service KA) — collecteur + supervision
      …
      - Collecteur JobkaCollector (src/collectors/jobka_collector.py) : GET /api/jobs
        de job-ka (M3U96a:8096), pagination limit/offset (clé jobs, total annoncé),
        table jobka_data — pipeline standard fetch → checksum → dédup → backup pg_dump
        → collection_runs. One-shot validé : 7 953 offres actives collectées.
      - Config : jobka ajouté aux SERVICES (9) + JOBKA_SOURCE_URL (.env/.env.example).
        Il hérite automatiquement du run quotidien 02:00, du backfill, du backup 03:30
        et des endpoints /api/v1/jobka{,/latest,/date/…,/stats}.
      - Supervision : jobka dans connector_health (cadence attendue 1 h, recent_syncs
        par source + facteur de rotation — 200+ sources pour une fenêtre de 20) ;
        visible dans /api/v1/monitoring/connectors (19 sources + _app, tout ok).
      - Stats : libellé Job·Ka ; page /stats à 9 services.
      - Tests : 3 tests jobka (pipeline, pagination offset, registre) + compteurs
        8→9 — suite complète 51 passed.
      
      Rien à changer côté CORS (job-ka.com déjà dans les origines) ni côté agent KA
      (chercher_emplois pointe déjà sur www.job-ka.com/api/jobs).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 13 files +148 −16
    3. Auth mobile : accepter aud ka-android (même secret partagé que ka-ios)
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −1
    4. feat: supervision centralisée des connecteurs de l'écosystème KA
      …
      - table connector_health (une ligne par service/source, upsert) + job
        src/monitoring/connector_health.py toutes les 2 h dans apika-scheduler
        (lecture seule des GET /api/stats des 8 apps sœurs, timeout 5 s,
        échec d'une app sans impact sur le job)
      - classement : broken (≥3 échecs ou 0 résultat ×3), stale (>2× cadence,
        facteur de rotation au niveau source), degraded (<50 % de la médiane),
        ok — cadences par service (lou-ka 1 h … resto-ka 168 h)
      - alertes logs/alerts.log uniquement sur transition vers broken/stale
        (anti-spam via l'état précédent mémorisé en table)
      - endpoints publics GET /api/v1/monitoring/connectors(/{service}) +
        bloc connectors dans /health
      - 15 tests (classement, parsing, anti-spam, endpoints) — suite 48/48
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 8 files +1,090 −4
    5. fix: pg_dump en chemin absolu (cron 03:30) + isolation des logs sous pytest
      …
      - backup.py : PG_DUMP = shutil.which ou /opt/homebrew/bin/pg_dump — le cron
        de 03:30 (PATH minimal /usr/bin:/bin) échouait en [Errno 2] depuis le 17/08,
        backups ET purge 90 j jamais exécutés. Testé : 8/8 dumps + purge OK sous
        env cron simulé.
      - tests/conftest.py : fixture session isolated_logs_dir — redirige logs_dir
        (alerts.log/apika.log) vers le tmp de test ; pytest écrivait de fausses
        alertes [louka] 2026-08-03 dans le vrai logs/alerts.log de prod.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 2 files +28 −1
  4. Mon, Aug 17, 2026 11

    1. Simon-Pierre Boucher · 2 files +105 −40
    2. Simon-Pierre Boucher · 2 files +94 −1
    3. Câblage du widget KA Agent (bulle de chat IA Groupe KA)
      …
      - Route GET /ka-agent.js (FileResponse, comme /og.png) dans src/api/main.py.
      - Balises window.KA_AGENT={site:"api-ka"} + /ka-agent.js (defer) dans
        index.html, contact.html et stats.html.
      - pytest : 33 passés.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 5 files +245
    4. Simon-Pierre Boucher · 1 file +2 −2
    5. Footer/contact : Job-Ka rejoint l écosystème (ecosystem.json 13 sites)
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +175 −24
    6. Rapport écosystème complet : GET /api/stats/ecosystem-report (PDF consolidé des 12 plateformes)
      …
      - src/api/ecopdf.py : EcosystemReport compose le moteur kapdf (couverture
        Groupe KA boîte encre + lime, page de consolidation avec totaux et
        classement des plateformes, une section par plateforme avec pastille
        accent + wordmark + KPI + records, page de fin) ; plateforme injoignable
        = section « données indisponibles » propre, jamais d'échec global.
      - /api/stats/ecosystem-report?period=…&mode=complet|synthese : dashboards
        des plateformes sœurs récupérés en parallèle (httpx, délai 15 s), le
        sien calculé en local ; cache 10 min par (period, mode) ; filename
        groupe-ka_ecosysteme_stats_<periode>_<date>.pdf.
      - kapdf._kpis : titre de section paramétrable (extension rétrocompatible).
      - reqstats : /api/stats/ecosystem-report ajouté aux chemins connus.
      - tests : test_ecosystem_pdf_builder (complet + synthese, hors-ligne).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 5 files +549 −3
    7. Page /stats : tableau de bord analytique de la plateforme + rapport PDF Groupe-KA
      …
      - Journalisation légère des requêtes API : table api_requests (ts, méthode,
        endpoint normalisé, statut, durée) alimentée par le middleware de logging
        via un tampon mémoire non bloquant + tâche de fond (flush 5 s, purge 90 j).
      - Backfill : scripts/backfill_api_requests.py réimporte l historique réel des
        logs JSON (811 requêtes depuis le 2026-08-16), idempotent.
      - GET /api/stats/dashboard : contrat commun Groupe KA (SPEC.md) — KPI avec
        deltas, séries jour/heure (appels, latence, enregistrements collectés),
        top endpoints, anneau par service, heatmap, tableaux, records ; cache 5 min.
      - GET /api/stats/report : PDF Groupe-KA (moteur kapdf/fpdf2, wordmark API·Ka,
        accent #3b5bdb), modes complet et synthèse ; correctif kit : pied de page
        qui fuyait sur la couverture.
      - Page /stats (vanilla JS + SVG, langage visuel du kit kacharts) : chips de
        période + plage personnalisée, KPI, courbes avec infobulle et légende
        cliquable, barres, anneau, heatmap, tableaux triables (recherche +
        pagination), records, boutons PDF, états vides propres, mobile 360-1440.
      - Lien « Stats » dans la nav de index.html et contact.html ; fpdf2 ajouté aux
        requirements ; tests /api/stats (32 tests verts).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 15 files +3,229 −4
    8. Ajoute les assets de partage Groupe KA servis à la racine (og.png, favicon.svg, apple-touch-icon)
      …
      - Trois routes FastAPI FileResponse : /og.png, /favicon.svg, /apple-touch-icon.png (fichiers dans src/api/web/)
      - index.html et contact.html : nouveau favicon SVG, apple-touch-icon, meta og:title/og:description/og:url/og:image 1200×630 + twitter:card/twitter:image
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 6 files +44 −2
    9. Design Groupe KA « éditorial sharp » + SSO KA ID
      …
      · Site docs refait sur le design system commun (ka-ui/tokens.css, accent
        indigo #3b5bdb) : header API·Ka + badge « Un service Groupe KA »,
        footer commun .ka-footer alimenté par ecosystem.json, page /contact,
        responsive mobile-first (360/768/1024/1440, tactile ≥ 44 px).
      · Package ka-ui vendorisé dans src/api/web/ka/ et servi sur /ka
        (tokens.css, ecosystem.json, ka-shell.js).
      · SSO KA ID délégué au hub groupe-ka.com (src/api/routes/auth.py) :
        /api/auth/ka/login → /sso/authorize, callback JWT HS256 (aud=api-ka),
        cookie de session signé apika_session, /api/auth/me, /api/auth/logout,
        bouton « Se connecter avec KA » au header.
      · /contact : HTML pour navigateurs, JSON (enveloppe) pour clients API.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 9 files +1,057 −174
    10. API-KA — plateforme centrale : collecte quotidienne des 8 services KA + API publique
      …
      Collecteurs louka/immoka/foodka/autoka/fabrika/restoka/sortika/creaka
      (resto-ka avec fiches détaillées : menus, plats, options et prix réels),
      PostgreSQL append-only, backups horodatés, scheduler 02:00 + backfill,
      FastAPI /api/v1 sur www.api-ka.com, plateforme web de documentation.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 56 files +4,098
Menu

Theme