Flux de Recherche Globale et Intelligence Artificielle
Ce document explique comment fonctionne la recherche globale et l'intégration de l'intelligence artificielle pour créer des vues personnalisées et exécuter des actions complexes.
🔍 Recherche Globale
Fonctionnement Actuel
- Ouverture : Appuyer sur
Cmd+K(Mac) ouCtrl+K(Windows/Linux) ouvre la modal de recherche - Saisie : L'utilisateur tape dans le champ de recherche
- Déclenchement automatique : La recherche se lance automatiquement après 300ms de pause (debounce)
- Résultats : Les résultats s'affichent en temps réel (sessions, contacts, devis, factures, pages Notion)
- Actions rapides : Les actions rapides (créer session, créer contact) sont affichées en bas de la liste des résultats
Détails Techniques
- Debounce : 300ms pour éviter trop d'appels API
- Cache : 30 secondes pour les requêtes valides, 5 minutes en mémoire
- Limite : 10 résultats par type d'entité
- Ordre d'affichage : Sessions → Contacts → Devis → Factures → Pages Notion → Actions rapides
🤖 Intelligence Artificielle Intégrée
Prérequis
⚠️ Important : L'IA ne fonctionne que si l'utilisateur a configuré une clé API OpenAI dans les paramètres de connexions. Si OpenAI n'est pas configuré, les fonctionnalités IA ne seront pas disponibles.
Flux Complet
Étape 1 : Détection d'une Requête IA
L'interface détecte automatiquement si la requête ressemble à une demande IA. La détection fonctionne en français et en anglais :
Patterns français détectés :
je veux créer,je veux,créez moi,créez-moicrée,créer,montre,montrer,affiche,afficherquel,quelle,combien,liste,listertrouve,trouver,filtre,filtrer,vue- Expressions :
avec,qui,dont
Patterns anglais détectés :
i want to create,i want,create for me,create mecreate,show,display,what,how manylist,find,filter,view- Expressions :
with,that,which
Autres déclencheurs :
- Commence par
?ou/ - Contient des expressions de filtrage : "avec", "qui", "dont", "with", "that", "which"
Exemples de requêtes détectées :
je veux créer une session pour Jean Dupontcréez moi un contact pour Marie MartinI want to create a quote for 2000€create for me a session for wedding on August 22sessions avec montant > 2000show contacts with email
Étape 2 : Traitement IA (Automatique)
Si la requête est détectée comme IA ET que l'utilisateur a OpenAI configuré :
-
Bouton "✨" visible : Un bouton Sparkles apparaît dans le champ de recherche
-
Clic sur "✨" : L'utilisateur clique pour activer l'IA
-
Appel API :
POST /api/search/ai/process -
Classification : L'IA détermine l'intent :
search: Recherche simple avec filtrescreate_view: Création de vue personnalisée (non implémenté actuellement)execute_action: Exécution d'action (auto-déclenché)question: Question à répondreunknown: Intent non reconnu
-
Résultat : L'IA retourne :
- L'intent détecté
- Un niveau de confiance (0-1)
- Des filtres structurés (si applicable)
- Une réponse textuelle (si applicable)
Étape 3 : Affichage et Exécution
Si l'intent est create_view ou search avec des filtres :
-
Affichage : Un panneau apparaît avec :
- L'intent détecté
- Le niveau de confiance
- La réponse de l'IA
- Les filtres générés (sous forme de badges)
-
Actions disponibles :
- "Appliquer les filtres" : Applique les filtres à la recherche actuelle
Si l'intent est execute_action :
- Auto-exécution : L'action est automatiquement générée et exécutée sans intervention de l'utilisateur
- Affichage : Un indicateur de chargement apparaît pendant l'exécution
- Notifications : Des notifications in-app et push sont créées automatiquement :
- Notification de succès avec détails de l'action
- Notification d'échec en cas d'erreur
- Fermeture : La modal de recherche se ferme automatiquement après l'exécution
Exemples Concrets
Exemple 1 : Recherche avec Filtres
Requête utilisateur : "sessions de mariage en juillet 2024 avec montant > 2000€"
-
Détection : La requête contient "avec", donc détectée comme IA
-
Traitement IA :
{
"intent": "search",
"confidence": 0.95,
"parsedQuery": {
"entity": "sessions",
"filters": [
{ "field": "type", "operator": "equals", "value": "mariage" },
{ "field": "date", "operator": "between", "value": ["2024-07-01", "2024-07-31"] },
{ "field": "amount", "operator": "greater_than", "value": 2000 }
]
}
} -
Affichage : Panneau avec les filtres générés
-
Application : Clic sur "Appliquer les filtres" pour utiliser les filtres générés
Exemple 2 : Création Automatique d'Action
Requête utilisateur : "je veux créer une session pour Fred Le Marquier pour son mariage le 22 août 2026 au château de garde"
-
Détection : La requête commence par "je veux créer", donc détectée comme IA
-
Traitement IA :
{
"intent": "execute_action",
"confidence": 0.98,
"parsedQuery": {
"action": {
"type": "composite",
"actions": [
{
"type": "create_contact",
"parameters": {
"first_name": "Fred",
"last_name": "Le Marquier"
}
},
{
"type": "create_session",
"parameters": {
"contact_id": "{contact_id}",
"title": "Mariage",
"start_date": "2026-08-22T10:00:00Z",
"location": "Château de Garde"
}
}
]
}
}
} -
Auto-exécution :
- Génération automatique de l'action
- Exécution séquentielle (création du contact, puis de la session)
- Remplacement des placeholders (
{contact_id}) entre les actions
-
Notifications :
- Notification in-app : "✅ Contact créé par IA"
- Notification in-app : "✅ Session créée par IA"
- Push notifications envoyées automatiquement
-
Fermeture : La modal se ferme automatiquement après 1.5 secondes
📊 Architecture
┌─────────────────┐
│ GlobalSearch │
│ Component │
└────────┬────────┘
│
├─► Recherche automatique (debounce 300ms)
│ └─► GET /api/search/global?q=...
│
└─► Détection requête IA
│
├─► Vérification OpenAI configuré
│
├─► Bouton "✨" visible (si OpenAI OK)
│
└─► Clic sur "✨"
│
└─► POST /api/search/ai/process
│
├─► Intent: search/create_view
│ ├─► Affichage filtres
│ └─► Bouton "Appliquer les filtres"
│
├─► Intent: execute_action
│ ├─► POST /api/search/ai/generate-action (auto)
│ ├─► POST /api/search/ai/execute-action (auto)
│ ├─► Création notification in-app
│ ├─► Envoi push notification
│ └─► Fermeture automatique de la modal
│
└─► Intent: question
└─► Affichage réponse
🔔 Notifications
Notifications In-App
Lorsqu'une action IA est exécutée, une notification est automatiquement créée dans le centre de notifications :
- Succès : "✅ [Type d'action] créé par IA" avec détails
- Échec : "❌ Échec: [Type d'action]" avec message d'erreur
Push Notifications
En plus des notifications in-app, des push notifications sont envoyées automatiquement :
- Titre : "✅ [Type d'action] par IA" ou "❌ Échec: [Type d'action]"
- Corps : Description de l'action ou message d'erreur
- Données : Métadonnées de l'action (type, succès, résultat)
Les push notifications fonctionnent même si l'application est fermée, permettant aux utilisateurs de rester informés des actions exécutées par l'IA.
🎯 Points Importants
- Recherche automatique : Se lance automatiquement après 300ms de pause
- Vérification OpenAI : L'IA ne s'active que si l'utilisateur a OpenAI configuré
- Détection multilingue : Détection en français et en anglais
- Auto-exécution : Les actions sont exécutées automatiquement sans intervention
- Notifications automatiques : Notifications in-app et push pour toutes les actions
- Actions rapides en bas : Les actions rapides sont toujours affichées en bas de la liste
- Cache : Les réponses IA sont mises en cache 5-10 minutes pour réduire les coûts
🔧 Améliorations Futures
- Auto-détection améliorée : Détecter automatiquement les requêtes IA et lancer le traitement sans clic
- Historique des recherches : Sauvegarder les recherches fréquentes
- Vues sauvegardées : Réintroduire la fonctionnalité de vues sauvegardées (retirée temporairement)