🧪 Guide de Tests Manuels - Nouvelles Fonctionnalités Agent IA
Date : 2025-01-11
🚀 Prérequis
Backend
cd ../kazalendar-agent-api
npm run dev
✅ Le serveur doit démarrer sur http://localhost:3000
Mobile
cd kazacalendar_mobile
flutter run
✅ L'application doit se lancer sans erreur
Vérifications initiales
- Vous êtes connecté dans l'application mobile
- Vous avez un compte Supabase configuré
- Firebase est configuré pour les notifications
- WhatsApp Business API est configuré (ou simulation possible)
📋 Test 1 : Vérification de disponibilité automatique
Objectif
Vérifier que l'Agent IA vérifie automatiquement la disponibilité avant d'accepter une commande.
Préparation
-
Marquer un jour comme complet
-- Dans Supabase SQL Editor
INSERT INTO jours_complets (user_id, date)
VALUES ('votre-user-id', '2025-02-15'); -
Vérifier que la table est prête
SELECT * FROM jours_complets WHERE user_id = 'votre-user-id';
Test A : Date disponible
-
Envoyer un message WhatsApp (ou simuler) :
"Bonjour, je voudrais commander un gâteau pour 10 personnes
le 20 février 2025" -
Résultat attendu :
- L'IA répond normalement
- Continue à poser des questions
- Ne mentionne pas de problème de disponibilité
-
Logs backend à vérifier :
✅ Date 2025-02-20 is available ([X] slots remaining)
Test B : Date complète avec suggestions
-
Envoyer un message WhatsApp :
"Je voudrais commander pour le 15 février" -
Résultat attendu :
Désolé, nous sommes complets le 15 février 2025.
Voici nos prochaines disponibilités :
1. 16 février 2025 (Lundi) - Disponible ✨
2. 17 février 2025 (Mardi) - Disponible ✨
3. 18 février 2025 (Mercredi) - Disponible ✨
...
Quelle date vous conviendrait le mieux ? -
Logs backend à vérifier :
✅ Date 2025-02-15 is available
❌ Date not available: full
🔍 Searching for alternative dates...
✅ Found [X] alternative dates -
Vérifier dans l'app mobile :
- Ouvrir Agent IA > Conversations
- Ouvrir la conversation
- Les dates suggérées doivent apparaître sous forme de badges/chips
Test C : Client choisit une date alternative
-
Répondre au message précédent :
"Le 16 février me convient" -
Résultat attendu :
- L'IA accepte la nouvelle date
- Continue le flux normalement
- La commande sera créée avec la nouvelle date
🔔 Test 2 : Notifications pour commandes Agent IA
Objectif
Vérifier que l'artisan reçoit une notification quand l'Agent IA crée une commande.
Préparation
-
Vérifier le token FCM dans Supabase
SELECT * FROM user_fcm_tokens
WHERE user_id = 'votre-user-id' AND active = true;✅ Vous devez avoir au moins 1 token actif
Si aucun token :
- Déconnectez-vous de l'app mobile
- Reconnectez-vous
- Vérifiez à nouveau
-
Vérifier les logs mobile au démarrage
✅ Permissions notifications accordées
📱 FCM Token: [votre-token]
✅ Token FCM sauvegardé pour l'utilisateur [user-id]
Test A : Créer une commande via Agent IA
-
Simuler une conversation WhatsApp complète :
Client: "Bonjour"
IA: "Bonjour ! Que puis-je faire pour vous ?"
Client: "Je voudrais un gâteau d'anniversaire pour 10 personnes"
IA: "Parfait ! Pour quelle date souhaitez-vous votre gâteau ?"
Client: "Le 20 février"
IA: "Excellent ! Avez-vous un thème en particulier ?"
Client: "Thème licorne"
IA: "Magnifique ! Y a-t-il des allergies à signaler ?"
Client: "Non, aucune allergie"
IA: "Parfait ! Puis-je avoir votre nom ?"
Client: "Martin Dupont"
IA: "Et votre numéro de téléphone ?"
Client: "06 12 34 56 78"
IA: "Parfait ! Préférez-vous un retrait le matin ou l'après-midi ?"
Client: "Le matin" -
À ce moment, la commande est créée
-
Vérifier les logs backend :
✅ Order created: [order-id]
📬 Tentative d'envoi de notification pour la commande [order-id]
✅ 1 token(s) FCM trouvé(s) pour l'utilisateur
📤 Envoi de la notification à 1 appareil(s)...
✅ Notification envoyée avec succès à 1/1 appareil(s) -
Vérifier la notification sur mobile :
- 📱 Une notification doit apparaître
- Titre : "🎂 Nouvelle commande Agent IA"
- Corps : "Martin Dupont : Gâteau d'anniversaire"
-
Tester le clic sur la notification :
- Cliquer sur la notification
- L'app doit s'ouvrir
- Navigation vers le calendrier/commandes
- La nouvelle commande doit être visible
Problèmes courants
Si aucune notification :
-
Vérifier les logs backend :
⚠️ Aucun token FCM actif trouvé→ Redémarrer l'app mobile, se reconnecter
-
Vérifier Firebase Admin :
❌ Firebase Admin initialization failed→ Vérifier la variable
FIREBASE_SERVICE_ACCOUNTdans.env -
Tester l'envoi manuel via Firebase Console :
- Aller sur Firebase Console > Cloud Messaging
- Envoyer une notification de test avec votre token
💰 Test 3 : Désactivation de l'estimation de prix
Objectif
Vérifier que l'Agent IA ne donne plus jamais de prix et que l'interface mobile affiche "Prix à définir".
Test A : L'IA refuse de donner un prix
-
Envoyer un message WhatsApp :
"Combien coûte un gâteau pour 10 personnes ?" -
Résultat attendu :
IA : "Je ne peux pas vous donner de tarif précis car chaque création
est unique. [Votre entreprise] vous contactera rapidement avec
un devis personnalisé adapté à vos besoins." -
Vérifier que :
- ❌ Aucun chiffre n'est mentionné
- ❌ Aucune fourchette (ex: "entre X et Y")
- ❌ Aucun "environ", "comptez"
- ✅ Message professionnel et rassurant
Test B : Commande créée sans prix
-
Créer une commande complète via l'Agent IA (comme Test 2A)
-
Vérifier dans Supabase :
SELECT id, titre, prix, prix_estime, created_by_agent
FROM commandes
WHERE conversation_id IS NOT NULL
ORDER BY created_at DESC
LIMIT 1; -
Résultat attendu :
prix:NULLprix_estime:NULLcreated_by_agent:true
Test C : Interface mobile "Prix à définir"
-
Dans l'app mobile :
- Aller sur Calendrier
- Ouvrir la commande créée par l'Agent IA
-
Vérifier l'affichage :
Section détails :
┌────────────────────────────────────────────┐
│ ⚠️ Prix à définir │
│ │
│ Commande créée par l'Agent IA │
│ Définissez le prix pour accepter │
└────────────────────────────────────────────┘Section paiement :
┌────────────────────────────────────────────┐
│ Paiement │
│ │
│ ⚠️ Prix à définir par l'artisan │
│ Définissez le prix dans les détails │
│ pour pouvoir accepter et créer un lien │
│ de paiement │
└────────────────────────────────────────────┘ -
Vérifier les couleurs :
- 🟠 Orange pour le badge
- ⚠️ Icône "pending"
- Bien visible et distinct
Test D : Définir le prix manuellement
-
Sur la commande sans prix :
- Cliquer sur le bouton "Accepter"
-
Résultat attendu :
- Un dialogue s'ouvre
- Champ pour saisir le prix
- Message : "Le prix doit être renseigné pour accepter la commande"
-
Saisir un prix :
- Entrer :
45.00 - Valider
- Entrer :
-
Vérifier :
- Le badge "Prix à définir" disparaît
- Le prix s'affiche normalement : "45.00 EUR"
- La commande passe au statut "Acceptée"
- Le bouton "Créer lien de paiement" devient disponible
🎯 Test 4 : Workflow complet de bout en bout
Objectif
Tester le workflow complet : conversation → disponibilité → commande → notification → prix
Scénario complet
-
Client WhatsApp :
"Bonjour, je voudrais un gâteau pour le 15 février" -
IA vérifie la disponibilité :
- Si complet → Propose alternatives
- Si disponible → Continue
-
Client complète les infos :
- Produit, quantité, thème, allergies, nom, téléphone, créneau
-
IA crée la commande :
- Commande créée avec prix = null
- Message de confirmation envoyé
-
Artisan reçoit notification :
- 📱 Notification push
- "🎂 Nouvelle commande Agent IA"
-
Artisan ouvre la commande :
- Badge orange "Prix à définir"
- Toutes les infos sont présentes
-
Artisan définit le prix :
- Clique sur "Accepter"
- Saisit le prix : 45€
- Valide
-
Artisan crée le lien de paiement :
- Clique sur "Créer lien de paiement"
- Choisit "Acompte 30%"
- Lien créé : 13.50€ (30% de 45€)
-
Partage le lien au client :
- Via WhatsApp, SMS ou email
-
Workflow complet terminé ✅
📊 Checklist de validation globale
Fonctionnalité 1 : Vérification de disponibilité
- Date disponible → Flux normal
- Date complète → Suggestions affichées
- Suggestions sous forme de badges dans l'app
- Client peut choisir une alternative
- Nouvelle date est bien enregistrée
Fonctionnalité 2 : Notifications
- Token FCM sauvegardé au démarrage
- Notification reçue à la création de commande
- Titre et corps corrects
- Clic ouvre la bonne commande
- Logs backend confirment l'envoi
Fonctionnalité 3 : Désactivation prix
- IA refuse de donner un prix
- Commande créée avec prix = null
- Badge "Prix à définir" visible
- Message contextualisé (Agent IA ou manuel)
- Artisan peut définir le prix
- Workflow d'acceptation fonctionne
Workflow complet
- Conversation WhatsApp complète
- Vérification de disponibilité
- Commande créée
- Notification reçue
- Prix défini manuellement
- Lien de paiement créé
- Aucune erreur dans les logs
🐛 Signaler un problème
Si vous rencontrez un problème :
-
Noter les logs backend :
# Copier les dernières lignes -
Logs mobile (Flutter) :
# Copier les logs de la console -
Captures d'écran :
- Interface mobile
- Supabase (si nécessaire)
-
Contexte :
- Quelle fonctionnalité ?
- Étape du test ?
- Comportement attendu vs observé ?
✅ Tests réussis
Une fois tous les tests validés, vous pouvez :
- Passer en production
- Mettre à jour le TODO.md
- Documenter les configurations nécessaires
Bon courage pour les tests ! 🚀
N'hésitez pas à me signaler tout problème rencontré.