SPB Git

spb/trouve-ka Public

Trouve-KA — moteur de recherche web indépendant, Québec-first. Crawler distribué, index OpenSearch, ranking bilingue, galerie d'images. En prod : www.trouve-ka.com

Python 76.8% TypeScript 15.7% SQL 3.9% Shell 1.4% CSS 1.3% Dockerfile 0.7%
2.2 KB · 90 lines typescript
Raw Blame History
1/**2 * Trouve-KA — types du contrat d'API (recherche, statut, admin)3 * Author: Simon-Pierre Boucher4 * Contact: contact@spboucher.ai5 */67/** Un résultat de recherche tel que renvoyé par `GET /api/search`. */8export interface SearchResult {9  title: string;10  url: string;11  display_url: string;12  /** HTML restreint : seuls les segments `<em>` de surlignage sont rendus. */13  snippet: string;14  domain: string;15  language: string;16  quebec_score: number;17  badges?: string[];18  published_at?: string | null;19  /** URL de l'og:image de la page (hotlink), ou null si absente. */20  image: string | null;21}2223/** Réponse complète de `GET /api/search`. */24export interface SearchResponse {25  query: string;26  total: number;27  took_ms: number;28  page: number;29  limit: number;30  results: SearchResult[];31}3233/** Réponse de `GET /api/status` (état public du moteur). */34export interface StatusResponse {35  pages_indexed: number;36  domains_count: number;37  indexed_last_hour: number;38  fetched_last_hour: number;39  crawler_state: string;40  frontier_pending: number;41  frontier_in_progress: number;42  errors_last_hour: number;43  search_ok: boolean;44}4546/** Réponse de `POST /api/submit`. */47export interface SubmitResponse {48  accepted: boolean;49  message: string;50}5152/** Réponse de `GET /api/admin/overview`. */53export interface AdminOverview {54  paused: boolean;55  frontier: {56    pending: number;57    in_progress: number;58    done: number;59    failed: number;60    blocked: number;61  };62  rates: {63    fetched_1h: number;64    parsed_1h: number;65    indexed_1h: number;66    errors_1h: number;67    robots_blocked_1h: number;68    duplicates_1h: number;69  };70  http_status: Record<string, number>;71  top_domains: { domain: string; pages: number; quebec_score: number }[];72  recent_errors: { url: string; error_code: string; at: string }[];73  latency: { fetch_p50_ms: number; fetch_p95_ms: number };74}7576/** Un événement du flux live de crawl (`GET /api/admin/recent`). */77export interface CrawlEvent {78  at: string;79  url: string;80  status: number;81  outcome: string;82  quebec_score?: number | null;83  title?: string | null;84}8586/** Réponse de `GET /api/admin/recent`. */87export interface AdminRecentResponse {88  events: CrawlEvent[];89}90