Files
wevia-brain/s89-arsenal-screens/ethica-methodology.html
2026-04-12 23:01:36 +02:00

256 lines
28 KiB
HTML
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ethica Methodology | WEVADS Arsenal</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
:root{--bg:#0a0e1a;--bg2:#111827;--bg3:#1a2236;--bg4:#1e293b;--tx:#e2e8f0;--t2:#94a3b8;--t3:#64748b;--cy:#22d3ee;--gn:#10b981;--rd:#ef4444;--or:#f59e0b;--pu:#a78bfa;--pk:#ec4899;--border:#1e293b}
*{margin:0;padding:0;box-sizing:border-box}
body{background:var(--bg);color:var(--tx);font-family:'Segoe UI',system-ui,sans-serif;min-height:100vh}
.hd{padding:16px 24px;background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}
.hd h1{font-size:20px;font-weight:700;display:flex;align-items:center;gap:10px}
.hd h1 span{color:var(--cy)}
.container{padding:20px 24px;max-width:1400px;margin:0 auto}
.tabs{display:flex;gap:4px;margin-bottom:20px;background:var(--bg2);border-radius:10px;padding:4px;border:1px solid var(--border)}
.tab{padding:10px 20px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:600;color:var(--t3);transition:.2s;display:flex;align-items:center;gap:6px}
.tab:hover{color:var(--tx)}.tab.active{background:rgba(34,211,238,.12);color:var(--cy)}
.tab-panel{display:none}.tab-panel.active{display:block}
.card{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:20px;margin-bottom:16px}
.card h2{font-size:16px;font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:8px;color:var(--cy)}
.card h3{font-size:14px;font-weight:600;margin:12px 0 8px;color:var(--tx)}
.card p{font-size:13px;line-height:1.7;color:var(--t2);margin-bottom:8px}
.card ul{list-style:none;padding:0}.card li{font-size:13px;color:var(--t2);padding:4px 0 4px 20px;position:relative;line-height:1.6}
.card li::before{content:'✓';position:absolute;left:0;color:var(--gn);font-weight:700}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.st{background:var(--bg3);border-radius:10px;padding:16px;text-align:center}
.st .v{font-size:24px;font-weight:800;font-family:'JetBrains Mono',monospace}
.st .l{font-size:10px;color:var(--t3);text-transform:uppercase;margin-top:4px}
.badge{padding:3px 10px;border-radius:4px;font-size:11px;font-weight:600;display:inline-block}
.b-gn{background:rgba(16,185,129,.15);color:var(--gn)}.b-cy{background:rgba(34,211,238,.15);color:var(--cy)}
.b-or{background:rgba(245,158,11,.15);color:var(--or)}.b-pu{background:rgba(167,139,250,.15);color:var(--pu)}
.b-pk{background:rgba(236,72,153,.15);color:var(--pk)}.b-rd{background:rgba(239,68,68,.15);color:var(--rd)}
table{width:100%;border-collapse:collapse;margin:8px 0}
th{background:var(--bg3);padding:10px 12px;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--t2);border-bottom:1px solid var(--border)}
td{padding:8px 12px;border-bottom:1px solid rgba(30,41,59,.3);font-size:13px}
tr:hover{background:rgba(34,211,238,.03)}
.sim-box{background:var(--bg3);border:2px solid var(--cy);border-radius:12px;padding:24px}
.sim-row{display:flex;gap:16px;margin-bottom:16px;align-items:end;flex-wrap:wrap}
.sim-field{flex:1;min-width:180px}
.sim-field label{display:block;font-size:11px;color:var(--t3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}
.sim-field input,.sim-field select{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 14px;color:var(--tx);font-size:14px;font-family:'JetBrains Mono',monospace}
.sim-field input:focus,.sim-field select:focus{outline:none;border-color:var(--cy)}
.btn{padding:10px 20px;border-radius:8px;border:none;cursor:pointer;font-size:13px;font-weight:700;transition:.2s;display:inline-flex;align-items:center;gap:6px}
.btn-cy{background:var(--cy);color:var(--bg)}.btn-cy:hover{filter:brightness(1.1)}
.result-box{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:20px;margin-top:16px}
.price-big{font-size:36px;font-weight:800;color:var(--cy);font-family:'JetBrains Mono',monospace}
.price-label{font-size:11px;color:var(--t3);text-transform:uppercase}
.price-detail{font-size:12px;color:var(--t2);margin-top:4px;font-family:'JetBrains Mono',monospace}
.flow{display:flex;align-items:center;gap:4px;margin:16px 0;flex-wrap:wrap}
.flow-step{background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:12px 16px;text-align:center;flex:1;min-width:120px}
.flow-step .fs-icon{font-size:24px;margin-bottom:4px}
.flow-step .fs-title{font-size:11px;font-weight:700;color:var(--cy)}
.flow-step .fs-desc{font-size:10px;color:var(--t3);margin-top:2px}
.flow-arrow{color:var(--t3);font-size:18px}
.compliance-card{background:var(--bg3);border-radius:10px;padding:16px;border-left:3px solid var(--gn)}
.compliance-card h4{font-size:13px;font-weight:700;color:var(--gn);margin-bottom:6px}
.compliance-card p{font-size:12px;color:var(--t2);line-height:1.6}
.sms-rate{display:flex;align-items:center;gap:12px;background:var(--bg3);border-radius:8px;padding:12px 16px;margin-bottom:8px}
.sms-rate .flag{font-size:22px}.sms-rate .country{font-size:13px;font-weight:600;flex:1}
.sms-rate .rate{font-size:16px;font-weight:800;color:var(--cy);font-family:'JetBrains Mono',monospace}
.faq-item{border-bottom:1px solid var(--border);padding:12px 0}
.faq-q{font-size:14px;font-weight:700;color:var(--tx);cursor:pointer;display:flex;justify-content:space-between;align-items:center}
.faq-q:hover{color:var(--cy)}.faq-a{font-size:13px;color:var(--t2);line-height:1.7;padding-top:8px;display:none}
.faq-item.open .faq-a{display:block}.faq-item.open .faq-q .arrow{transform:rotate(90deg)}.faq-q .arrow{transition:.2s;color:var(--t3)}
@media(max-width:1200px){.g2,.g3{grid-template-columns:1fr}.g4{grid-template-columns:repeat(2,1fr)}}
</style>
</head>
<body>
<div class="hd"><h1>📐 <span>Ethica — Methodology & Pricing</span></h1><div style="display:flex;gap:8px"><span class="badge b-gn"><i class="fas fa-shield-alt"></i> Compliant</span><span class="badge b-cy"><i class="fas fa-envelope"></i> Email + SMS</span></div></div>
<div class="container">
<div class="tabs">
<div class="tab active" onclick="showTab('methodology')"><i class="fas fa-book"></i> Méthodologie</div>
<div class="tab" onclick="showTab('coverage')"><i class="fas fa-globe"></i> Couverture HCP</div>
<div class="tab" onclick="showTab('sms')"><i class="fas fa-sms"></i> Canal SMS</div>
<div class="tab" onclick="showTab('simulator')"><i class="fas fa-calculator"></i> Simulateur Prix</div>
<div class="tab" onclick="showTab('compliance')"><i class="fas fa-shield-alt"></i> Compliance</div>
<div class="tab" onclick="showTab('faq')"><i class="fas fa-question-circle"></i> FAQ Client</div>
</div>
<!-- TAB METHODOLOGY -->
<div class="tab-panel active" id="panel-methodology">
<div class="card"><h2><i class="fas fa-project-diagram"></i> Pipeline de Campagne E2E</h2><p>Chaque campagne suit un pipeline contrôlé de bout en bout :</p>
<div class="flow">
<div class="flow-step"><div class="fs-icon">🎯</div><div class="fs-title">Ciblage</div><div class="fs-desc">Spécialités × Pays × Ville</div></div><span class="flow-arrow"></span>
<div class="flow-step"><div class="fs-icon"></div><div class="fs-title">Qualification</div><div class="fs-desc">Vérif. HCP + Email + Tel</div></div><span class="flow-arrow"></span>
<div class="flow-step"><div class="fs-icon">📧</div><div class="fs-title">E-Consent</div><div class="fs-desc">Opt-in avant envoi</div></div><span class="flow-arrow"></span>
<div class="flow-step"><div class="fs-icon">🚀</div><div class="fs-title">Envoi</div><div class="fs-desc">Email + SMS multi-canal</div></div><span class="flow-arrow"></span>
<div class="flow-step"><div class="fs-icon">📊</div><div class="fs-title">Tracking</div><div class="fs-desc">Opens, Clicks, Conv.</div></div><span class="flow-arrow"></span>
<div class="flow-step"><div class="fs-icon">📋</div><div class="fs-title">Reporting</div><div class="fs-desc">KPIs par campagne</div></div>
</div></div>
<div class="g2">
<div class="card"><h2><i class="fas fa-database"></i> 1. Constitution de la Base</h2>
<p>Base constituée exclusivement de <strong>sources publiques professionnelles légales</strong> :</p>
<h3>Sources Officielles</h3><ul><li>Conseil National de l'Ordre des Médecins (CNOM) — MA, TN, DZ</li><li>Conseil de l'Ordre des Pharmaciens (CNOP)</li><li>Conseil de l'Ordre des Médecins Dentistes (CNOMD)</li><li>Registres professionnels nationaux</li></ul>
<h3>Sources Médicales</h3><ul><li>DabaDoc, Doctoralia, Avicenna (annuaires médicaux)</li><li>Annuaires d'établissements de santé publics et privés</li><li>Partenariats éditeurs spécialisés santé</li></ul>
<h3>Enrichissement IA</h3><ul><li>IA de qualification HCP depuis sources légales</li><li>Cross-validation automatique multi-sources</li><li>Détection doublons et normalisation</li></ul></div>
<div class="card"><h2><i class="fas fa-check-double"></i> 2. Vérification HCP — 5 Étapes</h2>
<h3>Étape 1 — Validation Identité</h3><ul><li>Croisement avec registres officiels de l'Ordre</li><li>Vérification numéro d'inscription</li><li>Confirmation spécialité et lieu d'exercice</li></ul>
<h3>Étape 2 — Validation Email</h3><ul><li>Vérification MX record du domaine</li><li>Test SMTP de délivrabilité</li><li>Classification : Valid / Risky / Catch-all / Invalid</li></ul>
<h3>Étape 3 — Validation Téléphone</h3><ul><li>Format international (+212, +216, +213)</li><li>Détection mobile vs fixe</li><li>Eligibilité SMS (mobile uniquement)</li></ul>
<h3>Étape 4 — Déduplication Cross-Source</h3><ul><li>Détection doublons multi-critères</li><li>Fusion des fiches multi-sources</li></ul>
<h3>Étape 5 — E-Consentement</h3><ul><li>Opt-in avec lien sécurisé (consent.wevup.app)</li><li>Horodatage : date, IP, méthode</li><li>Preuve exportable (audit trail)</li></ul></div>
</div>
<div class="g2">
<div class="card"><h2><i class="fas fa-sync-alt"></i> 3. Fréquence de Mise à Jour</h2>
<table><tr><th>Process</th><th>Fréquence</th><th>Action</th></tr>
<tr><td>Bounce processing</td><td><span class="badge b-gn">Temps réel</span></td><td>Suppression auto emails invalides après envoi</td></tr>
<tr><td>SMTP/MX validation</td><td><span class="badge b-cy">Hebdomadaire</span></td><td>Re-vérification technique emails actifs</td></tr>
<tr><td>Cross-validation Ordres</td><td><span class="badge b-or">Trimestrielle</span></td><td>Croisement registres officiels</td></tr>
<tr><td>Purge inactifs</td><td><span class="badge b-pu">Mensuelle</span></td><td>Suppression HCP inactifs > 6 mois</td></tr>
<tr><td>Enrichissement</td><td><span class="badge b-pk">Continue</span></td><td>Ajout nouveaux HCP via IA</td></tr>
<tr><td>Scraping annuaires</td><td><span class="badge b-cy">Bimensuelle</span></td><td>Re-scan <span id="src-count-inline">30</span> sources</td></tr></table></div>
<div class="card"><h2><i class="fas fa-inbox"></i> 4. Délivrabilité & KPIs</h2>
<table><tr><th>KPI</th><th>Industrie Pharma</th><th>Notre Objectif</th></tr>
<tr><td>Délivrabilité</td><td style="color:var(--t3)">85-90%</td><td style="color:var(--gn);font-weight:700">>95%</td></tr>
<tr><td>Open Rate</td><td style="color:var(--t3)">15-20%</td><td style="color:var(--gn);font-weight:700">25-35%</td></tr>
<tr><td>CTR</td><td style="color:var(--t3)">2-4%</td><td style="color:var(--gn);font-weight:700">5-8%</td></tr>
<tr><td>Bounce</td><td style="color:var(--t3)">5-10%</td><td style="color:var(--gn);font-weight:700">&lt;2%</td></tr>
<tr><td>Spam Complaint</td><td style="color:var(--t3)">0.1-0.3%</td><td style="color:var(--gn);font-weight:700">&lt;0.05%</td></tr></table>
<p style="margin-top:8px"><strong>Pourquoi ces résultats ?</strong></p>
<ul><li>Base qualifiée — uniquement HCP vérifiés</li><li>Infrastructure email propriétaire avec IP warm-up dédié</li><li>Rotation domaines + ISP-specific routing</li><li>Consentement préalable = meilleur engagement</li></ul></div>
</div></div>
<!-- TAB COVERAGE -->
<div class="tab-panel" id="panel-coverage">
<div class="g4" id="cov-stats">
<div class="st"><div class="v" style="color:var(--cy)" id="k-total-hcp"></div><div class="l">Total HCPs Base</div></div>
<div class="st"><div class="v" style="color:var(--gn)" id="k-target"></div><div class="l">Cibles Ethica</div></div>
<div class="st"><div class="v" style="color:var(--pu)" id="k-with-email"></div><div class="l">Avec Email</div></div>
<div class="st"><div class="v" style="color:var(--pk)" id="k-with-phone"></div><div class="l">Avec Téléphone (SMS)</div></div>
</div>
<div class="card" style="margin-top:16px"><h2><i class="fas fa-th"></i> Matrice de Couverture — Spécialités Ethica × Pays</h2>
<p>Nombre de HCPs par spécialité et par pays (base brute avant filtrage) :</p>
<div style="overflow-x:auto"><table><thead><tr><th>Spécialité</th><th>🇲🇦 Maroc</th><th>🇩🇿 Algérie</th><th>🇹🇳 Tunisie</th><th>Total</th></tr></thead>
<tbody id="matrix-body"><tr><td colspan="5" style="text-align:center;color:var(--t3);padding:20px">Chargement...</td></tr></tbody></table></div></div>
<div class="card"><h2><i class="fas fa-info-circle"></i> Note sur les Volumes</h2>
<p>Les chiffres ci-dessus = <strong>base brute totale</strong>. Après qualification complète (vérification HCP, validation email, déduplication, e-consentement), les volumes exploitables seront <strong>significativement réduits</strong>. C'est cette approche qualitative qui garantit les KPIs supérieurs.</p></div>
</div>
<!-- TAB SMS -->
<div class="tab-panel" id="panel-sms">
<div class="g2">
<div class="card"><h2><i class="fas fa-sms"></i> Canal SMS — Campagnes HCP</h2>
<p>Canal complémentaire à l'email pour les communications à fort taux de lecture.</p>
<h3>Avantages SMS HCP</h3><ul><li>Taux de lecture > 95% (vs 25% email)</li><li>Délai de lecture &lt; 3 min (vs 6h email)</li><li>Idéal : invitations congrès, alertes produit, rappels</li><li>Stratégie omnicanale Email + SMS</li><li>Fonctionne sans connexion internet</li></ul>
<h3>Types de Campagnes</h3>
<table><tr><th>Type</th><th>Usage</th><th>Exemple</th></tr>
<tr><td><span class="badge b-cy">Marketing</span></td><td>Promotion produit</td><td>"Découvrez [Produit] — info sur [lien]"</td></tr>
<tr><td><span class="badge b-gn">Invitation</span></td><td>Congrès / Webinaire</td><td>"Invitation au webinaire [X] le [date]"</td></tr>
<tr><td><span class="badge b-or">Rappel</span></td><td>Follow-up</td><td>"Rappel : votre invitation expire demain"</td></tr>
<tr><td><span class="badge b-pu">Consentement</span></td><td>Opt-in SMS</td><td>"Confirmez : répondez OUI"</td></tr></table></div>
<div><div class="card"><h2><i class="fas fa-money-bill"></i> Tarification SMS</h2>
<div class="sms-rate"><span class="flag">🇲🇦</span><span class="country">Maroc</span><span class="rate">0,04 €</span></div>
<div class="sms-rate"><span class="flag">🇹🇳</span><span class="country">Tunisie</span><span class="rate">0,05 €</span></div>
<div class="sms-rate"><span class="flag">🇩🇿</span><span class="country">Algérie</span><span class="rate">0,06 €</span></div>
<table style="margin-top:16px"><tr><th>Volume/mois</th><th>Coût estimé</th></tr>
<tr><td>5 000 SMS</td><td style="color:var(--cy);font-weight:700">~250 €</td></tr>
<tr><td>10 000 SMS</td><td style="color:var(--cy);font-weight:700">~500 €</td></tr>
<tr><td>25 000 SMS</td><td style="color:var(--cy);font-weight:700">~1 250 €</td></tr></table></div>
<div class="card"><h2><i class="fas fa-mobile-alt"></i> Couverture SMS</h2>
<div class="st" style="margin-bottom:12px"><div class="v" style="color:var(--pk)" id="k-sms-phones"></div><div class="l">HCPs avec mobile validé</div></div>
<h3>Infrastructure</h3><ul><li>10 providers SMS multi-routes</li><li>Sender ID personnalisable par marque</li><li>Opt-out auto (STOP SMS)</li><li>Reporting temps réel</li></ul></div></div>
</div></div>
<!-- TAB SIMULATOR -->
<div class="tab-panel" id="panel-simulator">
<div class="sim-box"><h2 style="color:var(--cy);margin-bottom:16px"><i class="fas fa-calculator"></i> Simulateur de Prix — Email + SMS</h2>
<div class="sim-row">
<div class="sim-field"><label>Emails par mois</label><input type="number" id="sim-emails" value="10000" min="0" step="1000" onchange="simulate()"></div>
<div class="sim-field"><label>SMS par mois</label><input type="number" id="sim-sms" value="5000" min="0" step="500" onchange="simulate()"></div>
<div class="sim-field"><label>Nombre de marques</label><select id="sim-brands" onchange="simulate()"><option value="1">1 marque</option><option value="2">2 marques</option><option value="3">3 marques</option><option value="5">5 marques</option><option value="8">8 marques</option><option value="10" selected>10 marques</option></select></div>
<div class="sim-field"><label>Durée (mois)</label><select id="sim-months" onchange="simulate()"><option value="1">1 mois</option><option value="3">3 mois</option><option value="6">6 mois</option><option value="12" selected>12 mois</option></select></div>
<div><button class="btn btn-cy" onclick="simulate()"><i class="fas fa-calculator"></i> Simuler</button></div>
</div>
<div class="result-box" id="sim-results">
<div class="g4">
<div class="st"><div class="price-label">Email / mois</div><div class="price-big" id="res-email"></div><div class="price-detail" id="res-email-detail"></div></div>
<div class="st"><div class="price-label">SMS / mois</div><div class="price-big" id="res-sms" style="color:var(--pk)"></div><div class="price-detail" id="res-sms-detail"></div></div>
<div class="st"><div class="price-label">Total Mensuel</div><div class="price-big" id="res-monthly" style="color:var(--gn)"></div><div class="price-detail" id="res-discount"></div></div>
<div class="st" style="border:2px solid var(--cy)"><div class="price-label">Total Période</div><div class="price-big" id="res-total"></div><div class="price-detail" id="res-period"></div></div>
</div>
<div class="g2" style="margin-top:16px">
<div class="card" style="margin:0"><h3 style="color:var(--or)"><i class="fas fa-chart-bar"></i> CPM (Cost Per Mille)</h3>
<table><tr><td>Email CPM</td><td style="font-weight:700;color:var(--cy)" id="res-cpm-email"></td><td style="color:var(--t3)">vs marché: 150-300€</td></tr>
<tr><td>SMS CPM</td><td style="font-weight:700;color:var(--pk)" id="res-cpm-sms"></td><td style="color:var(--t3)">vs marché: 40-80€</td></tr></table></div>
<div class="card" style="margin:0"><h3 style="color:var(--gn)"><i class="fas fa-tags"></i> Remise Multi-Marques</h3>
<table><tr><td>2 marques</td><td><span class="badge b-or">-5%</span></td></tr>
<tr><td>3-4 marques</td><td><span class="badge b-cy">-10%</span></td></tr>
<tr><td>5+ marques</td><td><span class="badge b-gn">-15%</span></td></tr></table></div>
</div></div></div>
<div class="card" style="margin-top:16px"><h2><i class="fas fa-receipt"></i> Grille Tarifaire Email</h2>
<table><tr><th>Tranche</th><th>Volume/mois</th><th>Tarif</th><th>CPM</th></tr>
<tr><td>1</td><td>1 à 15 000</td><td style="color:var(--cy);font-weight:700">3 000 €</td><td>200 €</td></tr>
<tr><td>2</td><td>15 001 à 30 000</td><td style="color:var(--cy);font-weight:700">6 000 €</td><td>200 €</td></tr>
<tr><td>3</td><td>30 001 à 45 000</td><td style="color:var(--cy);font-weight:700">9 000 €</td><td>200 €</td></tr>
<tr><td>N</td><td>+15 000</td><td style="color:var(--cy);font-weight:700">+3 000 €</td><td>200 €</td></tr></table>
<p style="margin-top:8px;font-size:12px;color:var(--t3)">Tarifs = volume total emails/mois, toutes campagnes et marques confondues. Remise multi-marques applicable.</p></div>
</div>
<!-- TAB COMPLIANCE -->
<div class="tab-panel" id="panel-compliance">
<div class="g3">
<div class="compliance-card"><h4>🇲🇦 Maroc — Loi 09-08</h4><p>CNDP. Déclaration préalable, consentement éclairé, droit d'accès/rectification/suppression.</p></div>
<div class="compliance-card"><h4>🇹🇳 Tunisie — Loi 63-2004</h4><p>INPDP. Consentement explicite, notification de traitement, droit d'opposition.</p></div>
<div class="compliance-card"><h4>🇩🇿 Algérie — Loi 18-07</h4><p>ANPDP. Déclaration obligatoire, consentement libre, finalité déterminée.</p></div>
</div>
<div class="card" style="margin-top:16px"><h2><i class="fas fa-lock"></i> Dispositif de Consentement</h2>
<div class="g2"><div><h3>E-Consent Email</h3><ul><li>URL : consent.wevup.app (SSL)</li><li>Token unique par contact</li><li>Opt-in / Opt-out / Préférences</li><li>Horodatage complet (date, IP, méthode)</li><li>Preuve exportable (audit)</li></ul></div>
<div><h3>E-Consent SMS</h3><ul><li>Opt-in par réponse SMS ("OUI"/"STOP")</li><li>Double opt-in : confirmation SMS</li><li>Désabonnement instantané (STOP)</li><li>Gestion séparée email/SMS</li><li>Registre auditable</li></ul></div></div></div>
<div class="card"><h2><i class="fas fa-file-contract"></i> Engagements Contractuels</h2>
<table><tr><th>Engagement</th><th>Détail</th></tr>
<tr><td>Base de données</td><td>Propriété WEVAL — aucune cession. Client = accès résultats campagne uniquement.</td></tr>
<tr><td>Exclusivité HCP</td><td>100% professionnels de santé vérifiés — zéro contact grand public.</td></tr>
<tr><td>SLA Délivrabilité</td><td>>95% délivrabilité. Sous-performance = re-envoi gratuit.</td></tr>
<tr><td>Confidentialité</td><td>NDA standard. Créatifs = propriété client.</td></tr>
<tr><td>Résiliation</td><td>Préavis 30 jours. Pas d'engagement minimum (hors pilote).</td></tr></table></div>
</div>
<!-- TAB FAQ -->
<div class="tab-panel" id="panel-faq">
<div class="card"><h2><i class="fas fa-question-circle"></i> FAQ Client — Ethica</h2>
<div class="faq-item open"><div class="faq-q" onclick="toggleFaq(this)">La base semble dépasser l'univers de référence. Pourquoi ? <span class="arrow"></span></div>
<div class="faq-a">La base partagée était <strong>brute et illustrative</strong>. Elle inclut tous les contacts identifiés sans filtrage. Après qualification complète (vérification HCP, validation email/tel, déduplication, e-consentement), les volumes exploitables seront significativement réduits. Ex : sur 175K généralistes bruts → 15-30K qualifiés et consentants.</div></div>
<div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)">Vos tarifs sont 3x supérieurs à nos fournisseurs actuels. <span class="arrow"></span></div>
<div class="faq-a">Nos tarifs = prestation complète (qualification HCP, infra propriétaire, consentement conforme, tracking). Les KPIs sont supérieurs (>25% open rate vs 15% marché). Le <strong>coût par contact engagé</strong> est inférieur. 1 email lu en inbox > 3 emails en spam. Remise jusqu'à <strong>-15% multi-marques</strong> (10 marques Ethica).</div></div>
<div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)">Tarifs par campagne ou par mois ? <span class="arrow"></span></div>
<div class="faq-a">Volume <strong>total d'emails/mois</strong>, toutes campagnes et marques confondues. Ex : 2 campagnes × 5 000 = 10 000 emails = 3 000 €/mois (tranche 1). Plus avantageux pour les clients multi-marques.</div></div>
<div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)">Proposez-vous des campagnes SMS ? <span class="arrow"></span></div>
<div class="faq-a">Oui. 10 providers SMS configurés (MA/TN/DZ). Tarifs : 0,04€ (MA), 0,05€ (TN), 0,06€ (DZ)/SMS. Idéal en complément email : invitations congrès, rappels, alertes produit. Taux lecture >95%.</div></div>
<div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)">Comment gérez-vous le consentement ? <span class="arrow"></span></div>
<div class="faq-a">Opt-in obligatoire avant envoi via consent.wevup.app (token unique, horodatage, preuve exportable). Conforme Loi 09-08 (MA), 63-2004 (TN), 18-07 (DZ). Opt-out temps réel. Gestion séparée email/SMS.</div></div>
<div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)">Phase pilote possible ? <span class="arrow"></span></div>
<div class="faq-a">Oui : 1-2 spécialités × 1 pays pendant 1-2 mois. Tarif standard, sans engagement. Valide les KPIs avant déploiement large.</div></div>
<div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)">Quelle timeline de déploiement ? <span class="arrow"></span></div>
<div class="faq-a"><strong>Q4 2026</strong> : Pilote 1-2 marques. <strong>Q1 2027</strong> : Déploiement multi-marques + intégration BP 2027.</div></div>
<div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)">Quels formats de campagne ? <span class="arrow"></span></div>
<div class="faq-a">Email HTML responsive (templates fournis ou custom), SMS texte (160 car.), campagnes omnicanales (email + SMS séquencé). Client fournit créatifs, nous gérons intégration/envoi/suivi.</div></div>
</div></div>
</div>
<script>
const API='api/ethica-methodology-api.php';
function fmt(n){return n!=null?Number(n).toLocaleString('fr-FR'):'—'}
function fmtEur(n){return n!=null?Number(n).toLocaleString('fr-FR')+' €':'—'}
function showTab(id){document.querySelectorAll('.tab').forEach(t=>t.classList.remove('active'));document.querySelectorAll('.tab-panel').forEach(p=>p.classList.remove('active'));document.getElementById('panel-'+id).classList.add('active');event.currentTarget.classList.add('active')}
function toggleFaq(el){el.parentElement.classList.toggle('open')}
async function loadCoverage(){try{const r=await fetch(API+'?action=coverage');const d=await r.json();document.getElementById('k-total-hcp').textContent=fmt(d.total_hcp);document.getElementById('k-target').textContent=fmt(d.target_total);document.getElementById('k-with-email').textContent=fmt(d.with_email);document.getElementById('k-with-phone').textContent=fmt(d.with_phone);document.getElementById('k-sms-phones').textContent=fmt(d.with_phone);if(d.sources)document.getElementById('src-count-inline').textContent=d.sources;const specs={};(d.target_specs||[]).forEach(s=>{if(!specs[s.specialite])specs[s.specialite]={MA:0,DZ:0,TN:0,total:0};specs[s.specialite][s.pays]=parseInt(s.c);specs[s.specialite].total+=parseInt(s.c)});const labels={'generaliste':'Médecin Généraliste','pharmacien':'Pharmacien','rhumatologue':'Rhumatologue','orthopediste':'Orthopédiste','pneumologue':'Pneumologue','allergologue':'Allergologue','orl':'ORL','gastro-enterologue':'Gastro-entérologue','pediatre':'Pédiatre','dentiste':'Dentiste','gynecologue':'Gynécologue','cardiologue':'Cardiologue'};let html='',tMA=0,tDZ=0,tTN=0,tAll=0;Object.keys(specs).sort().forEach(k=>{const s=specs[k];tMA+=s.MA;tDZ+=s.DZ;tTN+=s.TN;tAll+=s.total;html+=`<tr><td style="font-weight:600">${labels[k]||k}</td><td style="text-align:center">${fmt(s.MA)}</td><td style="text-align:center">${fmt(s.DZ)}</td><td style="text-align:center">${fmt(s.TN)}</td><td style="text-align:center;font-weight:700;color:var(--cy)">${fmt(s.total)}</td></tr>`});html+=`<tr style="background:var(--bg3);font-weight:700"><td>TOTAL</td><td style="text-align:center;color:var(--gn)">${fmt(tMA)}</td><td style="text-align:center;color:var(--gn)">${fmt(tDZ)}</td><td style="text-align:center;color:var(--gn)">${fmt(tTN)}</td><td style="text-align:center;color:var(--cy)">${fmt(tAll)}</td></tr>`;document.getElementById('matrix-body').innerHTML=html}catch(e){console.error(e)}}
function simulate(){const emails=parseInt(document.getElementById('sim-emails').value)||0;const sms=parseInt(document.getElementById('sim-sms').value)||0;const brands=parseInt(document.getElementById('sim-brands').value)||1;const months=parseInt(document.getElementById('sim-months').value)||12;const emailTranches=Math.max(0,Math.ceil(emails/15000));const emailCost=emailTranches*3000;const smsCost=Math.round(sms*0.05);let discount=0;if(brands>=5)discount=0.15;else if(brands>=3)discount=0.10;else if(brands>=2)discount=0.05;const monthly=Math.round((emailCost+smsCost)*(1-discount));document.getElementById('res-email').textContent=fmtEur(emailCost);document.getElementById('res-email-detail').textContent=emailTranches+' tranche(s) × 3 000 €';document.getElementById('res-sms').textContent=fmtEur(smsCost);document.getElementById('res-sms-detail').textContent=fmt(sms)+' SMS × 0,05 € moy.';document.getElementById('res-monthly').textContent=fmtEur(monthly);document.getElementById('res-discount').textContent=discount>0?'Remise '+discount*100+'% ('+brands+' marques)':'Sans remise';document.getElementById('res-total').textContent=fmtEur(monthly*months);document.getElementById('res-period').textContent='Sur '+months+' mois';document.getElementById('res-cpm-email').textContent=emails>0?fmtEur(Math.round(emailCost/emails*1000)):'—';document.getElementById('res-cpm-sms').textContent=sms>0?fmtEur(Math.round(smsCost/sms*1000)):'—'}
loadCoverage();simulate();
</script>
</body>
</html>