Skip to main content

Recherche et Algolia

Cette page couvre la synchronisation Algolia telle qu’implémentée. Sources principales :
  • convex/integrations/algolia.ts
  • convex/schema.ts

Variables et index (vérifié)

Variables lues :
  • NEXT_PUBLIC_ALGOLIA_APP_ID
  • ALGOLIA_WRITE_API_KEY
  • NEXT_PUBLIC_ALGOLIA_INDEX_NAME (défaut cel_public)
  • ALGOLIA_ADMIN_INDEX_NAME (défaut cel_admin)
Index destination :
  • public : NEXT_PUBLIC_ALGOLIA_INDEX_NAME
  • admin : ALGOLIA_ADMIN_INDEX_NAME

Types indexés (vérifié)

Public :
  • club
  • player
  • match
  • article
  • league
Admin :
  • user
  • transfer
  • sanction
  • audit_log
  • ea_unmatched
Le syncer rejette un type inconnu (Unsupported document type for Algolia sync).

syncDocument (unitaire)

  • lit/écrit un objet avec op: upsert|delete,
  • si ALGOLIA_WRITE_API_KEY ou NEXT_PUBLIC_ALGOLIA_APP_ID manquants : skip silencieux avec warning,
  • en delete : suppression directe dans l’index cible,
  • en upsert :
    • récupère le payload (getPublicSearchPayload ou getAdminSearchPayload),
    • si payload nul/insuffisant (supprimé, inactif, non publié), tente la suppression sur Algolia,
    • sinon PUT du payload.

Reindex global (vérifié)

Action reindexAllAction(indexType) supporte public | admin | all.
  • pagination : REINDEX_PAGE_SIZE = 100,
  • envoi par lot : ALGOLIA_BATCH_SIZE = 150 vers endpoint batch Algolia,
  • pour chaque type public/admin : pagine avec getPaginated...Payloads jusqu’à exhaustion,
  • renvoie { success: true }.

Requête de payloads pour reindex

  • getPaginatedPublicPayloads : source table par type public.
  • getPaginatedAdminPayloads : source table par type admin.

Index Convex searchIndex (vérifié partiel)

Les occurrences searchIndex(...) observées dans schema.ts :
  • search_announcements
  • search_articles
  • search_audit_logs
  • search_clubs
  • search_disputes
  • search_matches
  • search_notifications
  • search_email_delivery_logs
  • search_sanctions
  • search_transfers
  • search_displayName
  • search_users

Zone non vérifiée

  • L’objectif métier de chaque index (quels écrans/frontends les consomment) n’est pas documenté dans ces fichiers. Vérifier côté frontend si nécessaire.
Last modified on June 24, 2026