Page dédiée permettant de rechercher dans l'ensemble des données ISI-App via Meilisearch, avec navigation par onglets de rubriques (toutes les rubriques accessibles, compteur de résultats par rubrique) et tableaux de résultats riches triés par ordre alphabétique. Complémentaire de la recherche rapide (autocomplete Ctrl+K) qui reste mono-input et globale.
URL : /advanced-search
L'utilisateur peut :
Différence avec la recherche rapide (Ctrl+K) : la recherche avancée offre un tableau riche, paginé et trié par rubrique, alors que Ctrl+K donne un aperçu rapide tous types confondus.
Les rubriques sont filtrées selon les droits modules de l'utilisateur. Une rubrique est cachée si :
enabled => false)module_tag)| Rubrique | Module requis |
|---|---|
| Utilisateurs, Entités, Adresses, Fournisseurs, Documents, Contrats, Wikis, Actualités | aucun |
| Tickets | ticket |
| Projets, Backlogs | projet |
| Applications, Matériel, Machines virtuelles | informatique |
| Bâtiments, Lots, Pièces, Équipements | aucun (GMAO ouvert) |
Booklets et Missions sont actuellement désactivés (pas de page de visualisation dédiée trouvée).
Les paramètres q (terme) et tab (onglet actif) sont bookmarkables via l'URL (ex: /advanced-search?q=imprimante&tab=tickets). Une rubrique non autorisée passée dans tab retombe sur la première rubrique accessible (sécurité).
| Fichier | Rôle |
|---|---|
routes/web.php |
Déclaration de la route advanced-search (middleware auth, sub, pswd) |
app/Http/Controllers/SearchController.php |
Contrôleur (méthode index) |
resources/views/search/index.blade.php |
Vue layout |
app/Livewire/Search/AdvancedSearchTable.php |
Composant unique : barre + onglets de rubriques + tableau (extends GenericTable) |
resources/views/livewire/search/advanced-search-table/wrapper.blade.php |
Vue principale (header + barre + onglets compteurs + zone résultats) |
resources/views/livewire/search/advanced-search-table/view.blade.php |
Rendu du tableau (headers + cellules avec rendu inline + surlignage) |
resources/views/livewire/search/advanced-search-table/filters.blade.php |
Vue filtres (vide en V1) |
app/Services/MeilisearchSearchService.php |
searchIds() (pagination + surlignage) + countByIndex() (compteurs par rubrique) |
app/Services/MeilisearchService.php |
multiSearch() (compteurs ; honore la stratégie de matching) |
config/meilisearch.php |
Config advanced_search par index |
Pour activer/configurer la recherche avancée sur un index existant, éditer config/meilisearch.php et ajouter une clé advanced_search à l'index :
'advanced_search' => [
'enabled' => true,
'label' => 'Tickets',
'icon' => 'fa-solid fa-ticket',
'group' => 'Général',
'module_tag' => 'ticket',
'view_url' => '/mod/13200101/see/{id}',
'pk_field' => 'idask',
'columns' => [
['key' => 'idask', 'label' => '#', 'type' => 'text', 'sortable' => true],
['key' => 'lbask', 'label' => 'Sujet', 'type' => 'text', 'sortable' => true],
// ...
],
],
Pour désactiver une rubrique : 'advanced_search' => ['enabled' => false].
sort, sort placé en tête des ranking_rules) et conservé côté Eloquent via ORDER BY FIELD().filterable_attributes viendront en V2.view_url simple /mod/.../see/{id} est insuffisant car ces entités nécessitent idmod, idmodmaster, idmaster (cf. herobar Ctrl+K). À raffiner en V2.