# Trouve-KA — Observabilité Author: Simon-Pierre Boucher — Contact: contact@spboucher.ai ## En place (MVP) - **Logs structurés JSON** (une ligne par événement) sur stdout de chaque service, avec contexte `worker_id, url_id, domain_id, url, outcome, quebec_score, ms` (`packages/logging`). Consultables via `docker compose logs -f crawler-worker`. - **Métriques opérationnelles** exposées par l'API : - `GET /api/status` (public) : pages indexées, domaines, débits horaires, état du crawler. - `GET /api/admin/overview` (protégé) : files par statut, débits, distribution HTTP, latences fetch p50/p95, top domaines, erreurs récentes, backlog d'enrichissement. - Toutes calculées sur les vraies tables (`crawl_attempts`, `frontier_items`) — aucun compteur simulé (§ fake). - **Dashboard admin** : `/admin` sur le web (flux live du crawl, contrôles pause/seeds/blocage). ## Prochaine étape (post-MVP) Exporter ces mêmes agrégats au format Prometheus (`/metrics`) et brancher Grafana — les requêtes SQL de `Database.admin_overview()` sont la source de vérité, l'export est un simple reformatage. Choix pragmatique conforme au CLAUDE.md §13.