---
title: "Recherche globale (Ctrl+K)"
module: search
type: functional
status: active
updated: 2026-05-22
---

# Recherche globale (Ctrl+K)

## Vue d'ensemble

ISI-APP intègre un **moteur de recherche transverse** propulsé par Meilisearch. Il permet à l'utilisateur, depuis n'importe quel écran de l'application, de retrouver instantanément n'importe quelle entité métier (client, ticket, projet, contrat, document, etc.) sans avoir à naviguer dans le module correspondant.

> Cette doc décrit la **recherche globale instantanée** (la modale Ctrl+K).
> Pour la **recherche avancée multi-rubriques** (page dédiée `/advanced-search` avec filtres et résultats paginés), voir [advanced-search.md](advanced-search.md). Les deux fonctionnalités sont complémentaires mais distinctes : la recherche globale est faite pour aller vite, la recherche avancée pour explorer en profondeur.

## À quoi ça sert

Permettre à l'utilisateur de **sauter directement vers une fiche** depuis n'importe quelle page, sans passer par les menus, en quelques frappes au clavier. L'objectif est de remplacer la navigation par la recherche pour les utilisateurs qui connaissent déjà l'objet qu'ils cherchent (un nom de client, un numéro de ticket, un libellé d'application…).

## Comment y accéder

| Action | Résultat |
|--------|----------|
| `Ctrl+K` (Windows/Linux) ou `Cmd+K` (macOS) | Ouvre la modale de recherche depuis n'importe quelle page |
| Clic sur le bouton de recherche dans la barre du haut (herobar) | Idem |
| `Échap` | Ferme la modale |

La modale s'ouvre par-dessus la page courante : pas de changement de contexte, pas de rechargement.

## Périmètre indexé

La recherche couvre **12 rubriques métier**. Chaque rubrique apparaît comme un groupe distinct dans les résultats.

| Catégorie affichée | Ce qu'on y trouve | Champs sur lesquels la recherche porte |
|--------------------|-------------------|----------------------------------------|
| Entités | Clients / sociétés | Nom du client |
| Adresses | Adresses physiques (sites, agences) | Nom du site, ville, libellé |
| Utilisateurs | Comptes utilisateurs | Nom, prénom, email |
| Projets | Projets en cours et clos | Nom du projet |
| Applications | Applications du parc IT | Libellé applicatif, type de connecteur |
| Fournisseurs | Fournisseurs et prestataires | Nom du fournisseur |
| Matériels | Postes, serveurs, équipements | Libellé matériel, numéro d'inventaire / tag |
| Machines virtuelles | VM du parc | Libellé VM, type |
| Contrats | Contrats fournisseurs et clients | Libellé contrat |
| Documents | Documents joints aux fiches métier | Nom du document |
| Documentations | Pages Wiki internes | Titre du wiki |
| Tickets | Tickets de support | Sujet du ticket, numéro de ticket |

Seuls les éléments **actifs** (non supprimés) apparaissent. Les éléments en corbeille (`dtdel`) sont automatiquement exclus.

## Comportement utilisateur

- **Saisie minimum** : 2 caractères avant que la recherche ne se déclenche.
- **Recherche en temps réel** : les résultats se rafraîchissent au fil de la frappe (debounce de 250 ms pour ne pas saturer le réseau).
- **Tolérance aux fautes** : Meilisearch corrige les fautes de frappe légères et accepte les recherches partielles (préfixes).
- **Résultats groupés** : les correspondances sont affichées par catégorie, dans un ordre stable, avec une icône / vignette par type d'objet et un badge d'état pour les tickets.
- **Limite par rubrique** : 5 résultats max par catégorie pour garder la modale lisible.

## Navigation au clavier

| Touche | Action |
|--------|--------|
| Flèches Haut / Bas | Naviguer dans la liste de résultats |
| Entrée | Ouvrir le résultat sélectionné |
| Échap | Fermer la modale |
| `Ctrl+K` / `Cmd+K` | Ouvrir / fermer |

Un clic à la souris fonctionne évidemment aussi. La sélection ouvre directement la fiche correspondante (édition ou consultation selon les droits de l'utilisateur).

## Sécurité et cloisonnement multi-tenant

La recherche **respecte intégralement les droits de l'utilisateur** :

- Un utilisateur ne voit que les données de son entité (cloisonnement multi-tenant strict).
- Les utilisateurs **Presta Premium** voient uniquement les clients qui leur sont rattachés.
- Les **profils restreints** ne voient que ce que leur profil autorise (ex. profil 900 ne voit ni clients, ni adresses, ni utilisateurs).
- Les **projets secrets** ne sont visibles qu'aux membres explicitement autorisés.
- Les **tickets** sont filtrés selon le niveau de profil : un demandeur ne voit que ses propres tickets.
- Les **contrats** ne sont visibles qu'aux profils ayant le droit `blcontract` ou aux administrateurs, et les contrats secrets sont exclus.
- Les **wikis** respectent la liste des profils exclus définie sur chaque page.

Aucun résultat hors périmètre ne peut "fuiter" : les contrôles sont appliqués côté moteur de recherche, pas seulement à l'affichage.

## Performance perçue

- Réponse typique en **moins de 50 ms** (recherche perçue comme instantanée).
- Une seule requête réseau par frappe (toutes les rubriques sont interrogées en parallèle).
- Les recherches obsolètes sont automatiquement annulées si l'utilisateur tape plus vite que le réseau ne répond.

Voir [meilisearch-optimizations.md](meilisearch-optimizations.md) pour le détail des optimisations de performance.

## Limitations connues

- La recherche se limite aux 12 rubriques listées ci-dessus. Pour étendre le périmètre, il faut ajouter un nouvel index (intervention dev).
- Les modifications faites sur une fiche apparaissent dans les résultats après réindexation (différée de quelques secondes le temps que la file d'attente d'indexation traite l'événement).
- La recherche ne porte que sur les champs principaux de chaque entité (nom, libellé). Le contenu détaillé d'une fiche (description, commentaires, pièces jointes) n'est pas indexé.
- Les documents sont indexés par leur nom de fichier, pas par leur contenu (pas d'OCR ni d'indexation full-text PDF/Word).
- Pour une recherche avec critères avancés (filtres par date, statut, montant…), utiliser la [recherche avancée](advanced-search.md).

## Page d'administration

Une page d'administration `/admin/meilisearch` (réservée aux administrateurs ISI) permet de :

- Visualiser l'état de chaque index (nombre de documents indexés vs. nombre d'enregistrements actifs en base).
- Identifier les index désynchronisés.
- Relancer une réindexation complète (par index ou globale).
- Recréer un index en cas d'incohérence.

Le rafraîchissement du tableau est automatique pendant qu'une indexation est en cours.

---

> Doc technique : [.claude/technical-docs/search/meilisearch-search.md](../../.claude/technical-docs/search/meilisearch-search.md)
