SPB Git forge

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

48commits 1branches 0releases
5.9 MBsize
maindefault branch
19 days agolast push
Python 60.9% HTML 21% TypeScript 7.3% JavaScript 5.2% CSS 4.8% Shell 0.8%

History of src/database/models.py · clear filter

  1. Fri, Sep 4, 2026 1

    1. Simon-Pierre Boucher committed 20 days ago · 1 file +5 −1
  2. Fri, Aug 28, 2026 1

    1. feat(monitoring+data): houseka et rentka deviennent les 10e et 11e services KA
      …
      - SERVICES += houseka, rentka : houseka avait deja son collecteur/modele/env
        (commit eb543c9) mais restait hors de la boucle de supervision et des
        routes ; rentka est integre de bout en bout (RentkaData, rentka_collector
        offset/2000 comme lou-ka, RENTKA_SOURCE_URL dans .env -> M4M36:8125,
        cadence attendue 1 h).
      - connector_health poll desormais les 11 apps (houseka 17 sources,
        rentka ~680 sources au premier run).
      - Docstrings 9 -> 11 services.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 27 days ago · 1 file +7
  3. Thu, Aug 27, 2026 1

    1. feat(house-ka): 10e service supervise + agent + CORS
      …
      - collecteur houseka (table houseka_data, HOUSEKA_SOURCE_URL M4M64b:8098)
      - supervision connector_health : cadence 4 h
      - KA Agent : catalogue de sites, DETAIL_URLS/FICHE_URLS (/property), recherche
        transversale (maisons Canada hors Quebec)
      - CORS : house-ka.com
      Simon-Pierre Boucher committed 27 days ago · 1 file +7
  4. Mon, Aug 24, 2026 1

    1. feat(monitoring): statut retired — retrait des sources désactivées ou disparues
      …
      Le registre connector_health est persisté et jamais purgé : une source
      désactivée côté app (ex. stores fabri-ka enabled=0) restait broken/stale à
      perpétuité et les agents gardiens la missionnaient sans fin (2026-08-24 :
      37 missions ka6 sur origin-north.ai). Désormais :
      - nouvelle colonne last_seen (dernière apparition dans une fenêtre de sync,
        ALTER TABLE appliqué en prod + backfill sur checked_at) ;
      - statut retired si la source est déclarée désactivée par l app
        (disabled_stores/disabled_sources du /api/stats — 58 sources fabri-ka
        retirées au premier run) ou absente de tout journal depuis > 14 j ;
      - une source retired qui réapparaît dans le journal est réévaluée
        normalement (last_seen remis à jour, statut recalculé) ;
      - retired exposé dans les résumés (monitoring, /health) et le détail
        (last_seen ajouté), jamais alerté, ignoré par les gardiens (trigger
        broken/stale inchangé).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +6 −1
  5. Tue, Aug 18, 2026 2

    1. 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 committed 1 mo ago · 1 file +9 −2
    2. 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 committed 1 mo ago · 1 file +38
  6. Mon, Aug 17, 2026 2

    1. 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 committed 1 mo ago · 1 file +25
    2. 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 committed 1 mo ago · 1 file +158