# API-KA — Plateforme centrale de l'écosystème KA API-KA collecte, sauvegarde et centralise **chaque jour** les données des 8 services KA (**lou-ka, immo-ka, food-ka, auto-ka, fabri-ka**) dans une base PostgreSQL unifiée, puis les expose via une API publique sur **www.api-ka.com** (tunnel ngrok). **Tout le déploiement se fait sur le node `m3u96b`** (`/opt/api-ka/`). Chaque service vérifie le hostname au démarrage et refuse de tourner ailleurs en production. ## Démarrage rapide ```bash # Déploiement complet sur m3u96b bash scripts/deploy_m3u96b.sh # Initialiser la base python -m src.database.db --init # Collecte manuelle immédiate (tous les services) python -m src.scheduler.daily_job --now # Backfill d'une date manquée python -m src.scheduler.backfill --date 2026-08-15 # API en local (dev) uvicorn src.api.main:app --reload --port 8000 # Tunnel public bash scripts/start_ngrok.sh # Vérifier la santé curl http://127.0.0.1:8000/health ``` ## Composants | Composant | Rôle | |-----------|------| | `src/collectors/` | 8 collecteurs (fetch → validate → checksum → insert → backup → log run), retry 3× avec backoff 30s → 2min → 10min | | `src/scheduler/daily_job.py` | Job quotidien à 02:00 (APScheduler), collecteurs en parallèle et indépendants | | `src/scheduler/backfill.py` | Rattrapage automatique des dates manquées (7 derniers jours) | | `src/api/` | FastAPI sur 127.0.0.1:8000, exposée uniquement via ngrok (www.api-ka.com) | | `src/utils/backup.py` | Dump quotidien horodaté par service (`data/backups/YYYY-MM-DD/`, rétention 90 j) | | `systemd/` | `apika-api`, `apika-scheduler`, `apika-ngrok` (Restart=always) | ## Endpoints - `GET /` — statut de la plateforme + version - `GET /health` — node (m3u96b), état DB, dernière collecte par service - `GET /api/v1/{service}` — données paginées (`?page=&limit=`, limit max 500) - `GET /api/v1/{service}/latest` — dernière collecte - `GET /api/v1/{service}/date/{YYYY-MM-DD}` — données d'une date précise - `GET /api/v1/{service}/stats` — enregistrements par jour, dernière réussite - `GET /api/v1/runs` — historique des collectes (filtrable par service/statut) `{service}` ∈ `louka`, `immoka`, `foodka`, `autoka`, `fabrika`, `restoka`, `sortika`, `creaka`. ## Tests ```bash pip install -r requirements.txt pytest tests/ -v ``` --- *Plateforme légendaire API-KA — Node m3u96b — créée par Simon-Pierre Boucher (contact@spboucher.ai)*