-- Trouve-KA — migration 005 : index pour la page /stats -- Author: Simon-Pierre Boucher -- Contact: contact@spboucher.ai -- -- Le tableau de bord /api/stats/dashboard agrège par plage temporelle : -- 1) documents.first_indexed_at n'était pas indexé (séries « indexées/jour », -- cumul, heatmap) — sur 1 M+ lignes, chaque refresh du cache scannait tout. -- 2) crawl_attempts : index partiel sur les erreurs (séries d'erreurs, -- erreurs par type, dernières erreurs) — les erreurs sont une petite -- fraction des ~5 M tentatives. -- 3) search_queries.created_at : bornage par période + purge 90 jours. -- -- NOTE : sur la base de prod ces index ont été créés CONCURRENTLY (hors -- transaction) pour ne pas bloquer les crawlers; ce fichier reste idempotent -- pour les installations neuves. BEGIN; CREATE INDEX IF NOT EXISTS idx_documents_first_indexed ON documents (first_indexed_at); CREATE INDEX IF NOT EXISTS idx_attempts_errors_time ON crawl_attempts (fetched_at DESC) WHERE outcome = 'error'; CREATE INDEX IF NOT EXISTS idx_queries_time ON search_queries (created_at); INSERT INTO schema_migrations (version) VALUES (5) ON CONFLICT DO NOTHING; COMMIT;