// AAP — icons, scenarios, helpers // NOTE QA : Les scénarios simulés (AAP_SCENARIOS) sont conservés pour rétro-compatibilité // mais ne sont plus utilisés — les vraies réponses viennent de l'AAP via /ask (tracking_server.py) const Icon = { Plus: ({s=14}) => , Send: ({s=14}) => , Stop: ({s=12}) => , Attach: ({s=16}) => , Mic: ({s=16}) => , Sparkle: ({s=14}) => , Settings: ({s=16}) => , Share: ({s=16}) => , Search: ({s=14}) => , CRM: ({s=14}) => , Calc: ({s=14}) => , ChevronRight: ({s=14}) => , Bolt: ({s=14}) => , File: ({s=14}) => , Pin: ({s=14}) => , Check: ({s=12}) => , }; window.AAP_Icon = Icon; // Pre-written conversation history for sidebar window.AAP_HISTORY = [ { id: 'today-1', title: 'Devis flotte 50 véhicules — Logitex', group: "Aujourd'hui", active: true }, { id: 'today-2', title: 'Relance prospect Bouygues Construction', group: "Aujourd'hui" }, { id: 'today-3', title: 'Analyse concurrentielle AXA Pro', group: "Aujourd'hui" }, { id: 'y-1', title: 'Multirisque commerce — boulangerie Levain', group: 'Hier' }, { id: 'y-2', title: 'RC Pro freelances tech — comparatif', group: 'Hier' }, { id: 'y-3', title: 'Suivi sinistre dossier #2847', group: 'Hier' }, { id: 'w-1', title: 'Onboarding nouveau lead — Mistral SA', group: '7 derniers jours' }, { id: 'w-2', title: 'Email de relance Q2 — 12 prospects', group: '7 derniers jours' }, { id: 'w-3', title: 'Pricing flotte transport routier', group: '7 derniers jours' }, { id: 'w-4', title: 'Prévention cyber — PME industrie', group: '7 derniers jours' }, { id: 'old-1', title: 'Renouvellement contrat Capgemini Sud', group: 'Avril' }, { id: 'old-2', title: 'Étude marché santé entreprise', group: 'Avril' }, ]; // Suggestions on welcome screen window.AAP_SUGGESTIONS = [ { label: 'Devis', text: "Génère un devis multirisque pour une PME de 80 salariés dans la tech" }, { label: 'CRM', text: "Quels sont mes 5 leads les plus chauds cette semaine ?" }, { label: 'Analyse', text: "Compare nos garanties RC Pro avec celles d'AXA et Generali" }, { label: 'Email', text: "Rédige une relance pour un prospect qui n'a pas répondu depuis 10 jours" }, ]; // The streaming response simulator // Each scenario = ordered list of "events": // {type:'thinking', text, ms} // {type:'tool', name, icon, sub, params, result, durationMs} // {type:'text', content} -- markdown-ish // {type:'card', kind, data} // {type:'sources', list} window.AAP_SCENARIOS = { 'devis': { match: /devis|multirisque|prime|cotisation|tarif/i, events: [ { type: 'thinking', text: 'Analyse de la demande et du profil entreprise…', ms: 900 }, { type: 'tool', name: 'CRM · Calipso', icon: 'crm', sub: 'Recherche profil entreprise', params: [ { k: 'secteur', v: 'tech / SaaS' }, { k: 'effectif', v: '80 salariés' }, { k: 'CA estimé', v: '8-12 M€' }, ], result: '3 entreprises similaires trouvées · base actuarielle activée', durationMs: 1400 }, { type: 'tool', name: 'Tarificateur Multirisque Pro v4.2', icon: 'calc', sub: 'Calcul de la prime', params: [ { k: 'RC exploitation', v: '8 M€ — 1 240 €/an' }, { k: 'Multirisque biens', v: '1.2 M€ — 2 180 €/an' }, { k: 'Cyber risques', v: '500 K€ — 1 850 €/an' }, { k: 'Pertes exploitation', v: '12 mois — 1 420 €/an' }, ], result: 'Prime annuelle : 6 690 € HT', durationMs: 1800 }, { type: 'text', content: "Voici la **proposition Calipso Multirisque Pro** que j'ai construite pour ce profil — équilibre entre couverture étendue et tarif compétitif sur le segment tech." }, { type: 'card', kind: 'quote', data: { title: 'Multirisque Pro · Tech 80 salariés', rows: [ { label: 'RC Exploitation 8 M€', value: '1 240 €' }, { label: 'Multirisque biens 1,2 M€', value: '2 180 €' }, { label: 'Cyber 500 K€ + assistance', value: '1 850 €' }, { label: 'Pertes exploitation 12 mois', value: '1 420 €' }, ], total: '6 690 €', totalLabel: 'Prime HT / an', } }, { type: 'text', content: "Trois leviers d'optimisation possibles : franchise relevée à 2 500 € (-8%), exclusion data-center hors UE (-4%), ou pack 3 ans avec engagement (-12%). Veux-tu que je génère le PDF officiel et que je l'envoie au commercial ?" }, ], }, 'leads': { match: /lead|prospect|chaud|pipeline|opportunit/i, events: [ { type: 'thinking', text: 'Connexion au CRM et scoring des opportunités…', ms: 800 }, { type: 'tool', name: 'CRM · Calipso', icon: 'crm', sub: 'Pipeline commercial · 7 jours', params: [ { k: 'filtres', v: 'score > 70, stade ≥ qualification' }, { k: 'commerciaux', v: 'tous · Île-de-France' }, ], result: '47 opportunités scannées · 5 leads chauds identifiés', durationMs: 1300 }, { type: 'tool', name: 'Recherche actualité', icon: 'search', sub: 'Signaux faibles & événements', params: [ { k: 'sources', v: 'LinkedIn, BODACC, presse pro' }, ], result: '12 signaux récents · 3 levées de fonds détectées', durationMs: 1100 }, { type: 'text', content: "**5 leads chauds cette semaine** — classés par probabilité de signature × valeur annuelle estimée :" }, { type: 'card', kind: 'leads', data: [ { name: 'Margaux Lefèvre', co: 'Mistral Industries · 240 sal.', score: '94', tier: 'hot', signal: 'Levée 18M€' }, { name: 'Karim Benali', co: 'Logitex Transport · flotte 80', score: '89', tier: 'hot', signal: 'RDV +1' }, { name: 'Sophie Renaud', co: 'Bouygues Construction Sud', score: '82', tier: 'hot', signal: 'Devis ouvert 4×' }, { name: 'Thomas Vidal', co: 'Capgemini Sud-Ouest', score: '76', tier: 'warm', signal: 'Renouvel. Q3' }, { name: 'Léa Marchetti', co: 'Levain Boulangeries (12 pts)', score: '71', tier: 'warm', signal: 'Sinistre voisin' }, ] }, { type: 'text', content: "Recommandation : appeler **Karim Benali aujourd'hui avant 17h** — il a un RDV concurrent demain et son devis flotte est prêt côté Calipso. Je peux préparer la note d'appel ?" }, ], }, 'compare': { match: /compar|axa|generali|allianz|concurr/i, events: [ { type: 'thinking', text: 'Comparaison des garanties sur la base produits…', ms: 900 }, { type: 'tool', name: 'Base concurrentielle', icon: 'search', sub: 'AXA Pro · Generali Business', params: [ { k: 'produit', v: 'RC Professionnelle' }, { k: 'maj base', v: '14 avril 2026' }, ], result: '23 critères analysés', durationMs: 1500 }, { type: 'text', content: "**Comparatif RC Pro · Calipso vs AXA vs Generali** — sur le segment tech / conseil :" }, { type: 'card', kind: 'compare', data: [ { critere: 'Plafond standard', calipso: '8 M€', axa: '5 M€', gen: '6 M€' }, { critere: 'Cyber inclus', calipso: '✓ 500K€', axa: '✗ option', gen: '✓ 250K€' }, { critere: 'Délai indemnisation', calipso: '< 21j', axa: '< 30j', gen: '< 28j' }, { critere: 'Prime indicative 80 sal.', calipso: '1 240 €', axa: '1 380 €', gen: '1 320 €' }, ] }, { type: 'text', content: "Notre **avantage clé** : cyber natif et plafond supérieur à prix égal ou inférieur. Faiblesse : pas de RC Mandataire pour fonctions dirigeantes — on peut l'ajouter en option 380€/an. Tu veux le pitch deal-breaker à utiliser en RDV ?" }, ], }, 'email': { match: /email|relance|mail|message|courri/i, events: [ { type: 'thinking', text: 'Lecture de l\'historique et tonalité commerciale…', ms: 700 }, { type: 'tool', name: 'CRM · Calipso', icon: 'crm', sub: 'Contexte du prospect', params: [ { k: 'dernier contact', v: 'il y a 10 jours' }, { k: 'stade', v: 'devis envoyé · ouvert 2×' }, { k: 'persona', v: 'DAF · décision rationnelle' }, ], result: 'Contexte récupéré', durationMs: 900 }, { type: 'text', content: "Voici une **relance courte, valeur d'abord, sans pression** — adaptée au profil DAF :" }, { type: 'card', kind: 'email', data: { subject: 'Question rapide sur le devis Calipso', body: `Bonjour Madame Renaud,\n\nJe reviens vers vous suite à notre échange du 18 avril sur la couverture multirisque pour vos 4 sites.\n\nDeux choses pourraient vous intéresser depuis :\n • Notre actuariat a affiné la tarification flotte → -7% sur la cotisation initiale\n • Un cas client comparable (BTP, 120 sal.) vient de signer — je peux partager la structure du contrat si utile\n\nUne fenêtre de 15 minutes mardi ou jeudi prochain ?\n\nBien cordialement,\nMarc Dupont · Calipso Assurances` } }, { type: 'text', content: "Ton calibré pour un DAF : factuel, deux preuves concrètes, CTA simple. Je peux générer 2 variantes (plus directe / plus chaleureuse) ?" }, ], }, 'default': { match: /.*/, events: [ { type: 'thinking', text: 'Analyse de la demande…', ms: 800 }, { type: 'tool', name: 'CRM · Calipso', icon: 'crm', sub: 'Recherche contextuelle', params: [ { k: 'requête', v: 'analyse libre' }, ], result: 'Contexte chargé', durationMs: 1200 }, { type: 'text', content: "Bonne question. Voici comment je l'aborderais en m'appuyant sur les données Calipso :\n\n• **Phase 1 — qualification** : identifier le besoin réel derrière la demande\n• **Phase 2 — proposition** : construire une offre adaptée au risque et au budget\n• **Phase 3 — closing** : adresser les objections par la preuve (cas clients, indicateurs)\n\nVeux-tu que je creuse un de ces angles avec un cas concret ?" }, ], }, }; window.AAP_pickScenario = function(text) { const S = window.AAP_SCENARIOS; for (const key of Object.keys(S)) { if (key === 'default') continue; if (S[key].match.test(text)) return S[key]; } return S.default; };