Aller au contenu principal

🧪 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

  1. Marquer un jour comme complet

    -- Dans Supabase SQL Editor
    INSERT INTO jours_complets (user_id, date)
    VALUES ('votre-user-id', '2025-02-15');
  2. Vérifier que la table est prête

    SELECT * FROM jours_complets WHERE user_id = 'votre-user-id';

Test A : Date disponible

  1. Envoyer un message WhatsApp (ou simuler) :

    "Bonjour, je voudrais commander un gâteau pour 10 personnes
    le 20 février 2025"
  2. Résultat attendu :

    • L'IA répond normalement
    • Continue à poser des questions
    • Ne mentionne pas de problème de disponibilité
  3. Logs backend à vérifier :

    ✅ Date 2025-02-20 is available ([X] slots remaining)

Test B : Date complète avec suggestions

  1. Envoyer un message WhatsApp :

    "Je voudrais commander pour le 15 février"
  2. 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 ?
  3. Logs backend à vérifier :

    ✅ Date 2025-02-15 is available
    ❌ Date not available: full
    🔍 Searching for alternative dates...
    ✅ Found [X] alternative dates
  4. 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

  1. Répondre au message précédent :

    "Le 16 février me convient"
  2. 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

  1. 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
  2. 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

  1. 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"
  2. À ce moment, la commande est créée

  3. 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)
  4. Vérifier la notification sur mobile :

    • 📱 Une notification doit apparaître
    • Titre : "🎂 Nouvelle commande Agent IA"
    • Corps : "Martin Dupont : Gâteau d'anniversaire"
  5. 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 :

  1. Vérifier les logs backend :

    ⚠️ Aucun token FCM actif trouvé

    → Redémarrer l'app mobile, se reconnecter

  2. Vérifier Firebase Admin :

    ❌ Firebase Admin initialization failed

    → Vérifier la variable FIREBASE_SERVICE_ACCOUNT dans .env

  3. 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

  1. Envoyer un message WhatsApp :

    "Combien coûte un gâteau pour 10 personnes ?"
  2. 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."
  3. 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

  1. Créer une commande complète via l'Agent IA (comme Test 2A)

  2. 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;
  3. Résultat attendu :

    • prix: NULL
    • prix_estime: NULL
    • created_by_agent: true

Test C : Interface mobile "Prix à définir"

  1. Dans l'app mobile :

    • Aller sur Calendrier
    • Ouvrir la commande créée par l'Agent IA
  2. 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 │
    └────────────────────────────────────────────┘
  3. Vérifier les couleurs :

    • 🟠 Orange pour le badge
    • ⚠️ Icône "pending"
    • Bien visible et distinct

Test D : Définir le prix manuellement

  1. Sur la commande sans prix :

    • Cliquer sur le bouton "Accepter"
  2. Résultat attendu :

    • Un dialogue s'ouvre
    • Champ pour saisir le prix
    • Message : "Le prix doit être renseigné pour accepter la commande"
  3. Saisir un prix :

    • Entrer : 45.00
    • Valider
  4. 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

  1. Client WhatsApp :

    "Bonjour, je voudrais un gâteau pour le 15 février"
  2. IA vérifie la disponibilité :

    • Si complet → Propose alternatives
    • Si disponible → Continue
  3. Client complète les infos :

    • Produit, quantité, thème, allergies, nom, téléphone, créneau
  4. IA crée la commande :

    • Commande créée avec prix = null
    • Message de confirmation envoyé
  5. Artisan reçoit notification :

    • 📱 Notification push
    • "🎂 Nouvelle commande Agent IA"
  6. Artisan ouvre la commande :

    • Badge orange "Prix à définir"
    • Toutes les infos sont présentes
  7. Artisan définit le prix :

    • Clique sur "Accepter"
    • Saisit le prix : 45€
    • Valide
  8. Artisan crée le lien de paiement :

    • Clique sur "Créer lien de paiement"
    • Choisit "Acompte 30%"
    • Lien créé : 13.50€ (30% de 45€)
  9. Partage le lien au client :

    • Via WhatsApp, SMS ou email
  10. 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 :

  1. Noter les logs backend :

    # Copier les dernières lignes
  2. Logs mobile (Flutter) :

    # Copier les logs de la console
  3. Captures d'écran :

    • Interface mobile
    • Supabase (si nécessaire)
  4. Contexte :

    • Quelle fonctionnalité ?
    • Étape du test ?
    • Comportement attendu vs observé ?

✅ Tests réussis

Une fois tous les tests validés, vous pouvez :

  1. Passer en production
  2. Mettre à jour le TODO.md
  3. Documenter les configurations nécessaires

Bon courage pour les tests ! 🚀

N'hésitez pas à me signaler tout problème rencontré.