Files
html/products/sentinel.html
2026-04-12 22:57:03 +02:00

342 lines
34 KiB
HTML

<!DOCTYPE html><html lang="fr"><head>
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>Sentinel Monitor — Cyber Monitoring PME</title>
<meta name="description" content="Sentinel Monitor — Cyber Monitoring PME - Solutions IA souveraines pour entreprises"><link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<style>:root{--bg:#05080f;--s:#0c1222;--a:#4ea8de;--a15:rgba(78,168,222,.15);--sv:#7a8ba5;--w:#edf2f7;--b:rgba(78,168,222,.08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:'Outfit',sans-serif;background:var(--bg);color:var(--w)}nav{position:fixed;top:0;width:100%;padding:1rem 4%;display:flex;justify-content:space-between;align-items:center;z-index:100;backdrop-filter:blur(20px);background:rgba(5,8,15,.85);border-bottom:1px solid var(--b)}.logo{font-weight:800;font-size:1.4rem}.logo span{color:var(--a)}.btn-n{background:var(--a);color:var(--bg);padding:.55rem 1.3rem;border-radius:7px;font-weight:700;font-size:.82rem;text-decoration:none}.hero{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:7rem 4% 4rem}.badge{display:inline-flex;align-items:center;gap:.5rem;background:var(--a15);border:1px solid rgba(78,168,222,.2);border-radius:100px;padding:.35rem 1rem;font-size:.75rem;font-weight:600;color:var(--a);margin-bottom:2rem}h1{font-size:3.2rem;font-weight:800;line-height:1.08;letter-spacing:-.04em;margin-bottom:1.2rem;max-width:700px}h1 em{font-style:normal;color:var(--a)}.sub{font-size:1.05rem;color:var(--sv);max-width:520px;line-height:1.7;margin-bottom:2rem}.btn-p{background:var(--a);color:var(--bg);padding:.85rem 2rem;border-radius:8px;font-weight:700;text-decoration:none;display:inline-block}.sec{padding:5rem 4%;max-width:1200px;margin:0 auto}.stag{font-family:'Space Mono',monospace;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.2em;color:var(--a);margin-bottom:1rem}h2{font-size:2.2rem;font-weight:800;margin-bottom:.8rem}.sd{color:var(--sv);font-size:.95rem;line-height:1.7;max-width:500px;margin-bottom:2.5rem}.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:1.1rem}.cd{background:var(--s);border:1px solid var(--b);border-radius:14px;padding:1.6rem;transition:all .3s}.cd:hover{transform:translateY(-3px)}.cd h3{font-size:1rem;font-weight:600;margin:.8rem 0 .35rem}.cd p{font-size:.82rem;color:var(--sv);line-height:1.55}.pg{display:grid;grid-template-columns:repeat(3,1fr);gap:1.1rem}.pr{background:var(--s);border:1px solid var(--b);border-radius:16px;padding:1.8rem;transition:all .3s}.pr.pop{border-color:var(--a)}.pr:hover{transform:translateY(-3px)}.pr-name{font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--sv);margin-bottom:.6rem}.pr-amt{font-family:'Space Mono',monospace;font-size:2.5rem;font-weight:700;margin-bottom:.8rem}.pr-amt sub{font-size:.8rem;color:var(--sv);font-family:'Outfit'}.pr-list{list-style:none;margin-bottom:1.2rem}.pr-list li{font-size:.8rem;color:var(--sv);padding:.3rem 0}.pr-list li::before{content:'✓';color:var(--a);font-weight:700;margin-right:.4rem}.btn-f{display:block;padding:.7rem;border-radius:8px;font-weight:600;text-decoration:none;text-align:center;background:var(--a);color:var(--bg)}.btn-l{display:block;padding:.7rem;border-radius:8px;font-weight:600;text-decoration:none;text-align:center;border:1px solid rgba(255,255,255,.12);color:var(--w)}.cta{text-align:center;padding:4rem 2rem;margin:2rem 4%;background:var(--s);border:1px solid var(--b);border-radius:20px}.cta p{color:var(--sv);max-width:450px;margin:.5rem auto 1.5rem}footer{padding:2rem 4%;max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;border-top:1px solid rgba(255,255,255,.04);font-size:.75rem;color:var(--sv)}footer a{color:var(--a);text-decoration:none}@media(max-width:900px){h1{font-size:2.2rem}.g3,.pg{grid-template-columns:1fr}}input,select,textarea{background:#0b0d14!important;color:#e2e8f0!important;border:1px solid #1e293b!important;border-radius:8px!important}input::placeholder{color:#475569!important}</style><style>/* Hide nav in iframe */
@media all{.in-iframe nav{display:none!important}.in-iframe .hero{padding-top:3rem!important;min-height:auto!important}.in-iframe footer{display:none!important}.in-iframe .cta{display:none!important}.in-iframe .wv-links{display:none!important}.wv-links{display:none!important}}</style>
<script>if(window!==window.top)document.documentElement.classList.add('in-iframe');</script>
<link rel="canonical" href="https://weval-consulting.com/products/sentinel.html">
<meta property="og:title" content="Sentinel Monitor — Cyber Monitoring PME">
<meta property="og:description" content="Sentinel Monitor — Cyber Monitoring PME - Solutions IA souveraines pour entreprises">
<meta property="og:url" content="https://weval-consulting.com/products/sentinel.html">
<meta property="og:type" content="website">
<meta property="og:site_name" content="WEVAL Consulting">
<meta property="og:image" content="https://weval-consulting.com/assets/logo-weval-png-DChrMGao.png">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Sentinel Monitor — Cyber Monitoring PME">
<meta name="twitter:description" content="Sentinel Monitor — Cyber Monitoring PME - Solutions IA souveraines pour entreprises">
<link rel="alternate" hreflang="fr" href="https://weval-consulting.com/products/sentinel.html">
<link rel="alternate" hreflang="x-default" href="https://weval-consulting.com/products/sentinel.html">
<link rel="stylesheet" href="/assets/dark-iframe.css"></head><body>
<nav><div class="logo" style="display:flex;align-items:center;gap:8px"><img src="/assets/logo-sentinel.svg" alt="" style="width:32px;height:32px">Sentinel<span>Monitor</span></div><a href="#cta" class="btn-n">Scan gratuit →</a></nav>
<section class="hero"><div class="badge">Cybersécurité PME — Monitoring continu</div><h1>Votre domaine est-il <em>sécurisé</em> ?</h1><p class="sub">Dashboard de monitoring cybersécurité pour PME. Scan domaine, SSL, ports ouverts, vulnérabilités, alertes Telegram temps réel. Score de sécurité mensuel avec recommandations.</p><a href="#pricing" class="btn-p">Scanner mon domaine →</a></section>
<section class="sec" id="features"><div class="stag">Vérifications</div><h2>Surveillance complète</h2><p class="sd">8 catégories de checks, monitoring continu, alertes instantanées.</p>
<div class="g3">
<div class="cd"><div style="font-size:1.5rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0110 0v4"/></svg></div><h3>SSL/TLS</h3><p>Certificat, expiration, configuration, vulnérabilités (Heartbleed, POODLE).</p></div>
<div class="cd"><div style="font-size:1.5rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15 15 0 014 10 15 15 0 01-4 10 15 15 0 01-4-10A15 15 0 0112 2z"/></svg></div><h3>DNS Security</h3><p>DNSSEC, SPF, DKIM, DMARC, zone transfer, subdomain enumeration.</p></div>
<div class="cd"><div style="font-size:1.5rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><circle cx="6" cy="6" r="1" fill="currentColor"/><circle cx="6" cy="18" r="1" fill="currentColor"/></svg></div><h3>Ports & Services</h3><p>Scan des ports ouverts, identification des services exposés, versions vulnérables.</p></div>
<div class="cd"><div style="font-size:1.5rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div><h3>OWASP Top 10</h3><p>Injection SQL, XSS, CSRF, security headers, cookie flags.</p></div>
<div class="cd"><div style="font-size:1.5rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 8A6 6 0 006 8c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.73 21a2 2 0 01-3.46 0"/></svg></div><h3>Alertes Telegram</h3><p>Notification instantanée si un problème critique est détecté. 24/7.</p></div>
<div class="cd"><div style="font-size:1.5rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><circle cx="6" cy="6" r="1" fill="currentColor"/><circle cx="6" cy="18" r="1" fill="currentColor"/></svg></div><h3>Score mensuel</h3><p>Rapport PDF avec score sur 100, évolution, et plan d'action prioritaire.</p></div></div></section>
<section class="sec" id="pricing"><div style="text-align:center;margin-bottom:2.5rem"><div class="stag">Tarifs</div><h2>Sécurité accessible</h2></div>
<div class="pg">
<div class="pr"><div class="pr-name">Free</div><div class="pr-amt">$0</div><ul class="pr-list"><li>1 scan ponctuel</li><li>Score global</li><li>Top 3 vulnérabilités</li></ul><a href="#cta" class="btn-l">Scanner</a></div>
<div class="pr pop"><div class="pr-name">Pro</div><div class="pr-amt">$49<sub>/mo</sub></div><ul class="pr-list"><li>1 domaine</li><li>Scan hebdomadaire</li><li>Alertes Telegram</li><li>Rapport PDF mensuel</li><li>Historique des scores</li></ul><a href="#cta" class="btn-f">Souscrire</a></div>
<div class="pr"><div class="pr-name">Business</div><div class="pr-amt">1$49<sub>/mo</sub></div><ul class="pr-list"><li>5 domaines</li><li>Scan quotidien</li><li>Alertes temps réel</li><li>API access</li><li>Support prioritaire</li><li>Pentest basique inclus</li></ul><a href="#cta" class="btn-l">Contacter</a></div></div></section>
<div class="cta" id="cta"><div class="stag">Scan</div><h2>Premier scan gratuit</h2><p>Découvrez votre score de sécurité en 30 secondes.</p><a href="#cta" class="btn-p">Scanner mon domaine →</a></div>
<footer><div><strong>Sentinel Monitor</strong> · <a href="/products/">WEVAL Products</a></div><div>France · Maroc · États-Unis · International</div></footer><!-- WEVAL Product Assistant Chatbot Widget -->
<div id="weval-bot-widget" style="position:fixed;bottom:20px;right:20px;z-index:9999;font-family:'Inter',system-ui,sans-serif">
<style>
#weval-bot-btn{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;cursor:pointer;box-shadow:0 4px 24px rgba(99,102,241,.4);display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s}
#weval-bot-btn:hover{transform:scale(1.08);box-shadow:0 6px 32px rgba(99,102,241,.5)}
#weval-bot-btn svg{width:28px;height:28px;fill:#fff}
#weval-bot-badge{position:absolute;top:-2px;right:-2px;width:14px;height:14px;background:#22c55e;border-radius:50%;border:2px solid #fff;animation:pulse-badge 2s infinite}
@keyframes pulse-badge{0%,100%{opacity:1}50%{opacity:.5}}
#weval-bot-panel{display:none;position:fixed;bottom:90px;right:20px;width:380px;max-height:520px;background:#0f1629;border:1px solid rgba(99,102,241,.2);border-radius:16px;box-shadow:0 12px 48px rgba(0,0,0,.5);overflow:hidden;flex-direction:column}
#weval-bot-panel.open{display:flex}
#weval-bot-head{background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:14px 18px;display:flex;align-items:center;gap:10px}
#weval-bot-head .avatar{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:18px}
#weval-bot-head .info{flex:1;color:#fff}
#weval-bot-head .info .name{font-weight:600;font-size:14px}
#weval-bot-head .info .status{font-size:11px;opacity:.8}
#weval-bot-close{background:none;border:none;color:rgba(255,255,255,.7);cursor:pointer;font-size:20px;padding:4px}
#weval-bot-msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;min-height:280px;max-height:360px}
.bot-msg{max-width:85%;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.5;word-wrap:break-word}
.bot-msg.bot{background:rgba(99,102,241,.12);color:#e2e8f0;border-bottom-left-radius:4px;align-self:flex-start}
.bot-msg.user{background:#6366f1;color:#fff;border-bottom-right-radius:4px;align-self:flex-end}
.bot-msg a{color:#818cf8;text-decoration:underline}
.bot-typing{display:flex;gap:4px;padding:10px 14px;align-self:flex-start}
.bot-typing span{width:6px;height:6px;background:#6366f1;border-radius:50%;animation:bounce .6s infinite alternate}
.bot-typing span:nth-child(2){animation-delay:.2s}
.bot-typing span:nth-child(3){animation-delay:.4s}
@keyframes bounce{to{opacity:.3;transform:translateY(-4px)}}
#weval-bot-input-area{padding:10px 14px;border-top:1px solid rgba(255,255,255,.06);display:flex;gap:8px}
#weval-bot-input{flex:1;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:8px 12px;color:#e2e8f0;font-size:13px;outline:none}
#weval-bot-input::placeholder{color:rgba(255,255,255,.3)}
#weval-bot-send{background:#6366f1;border:none;border-radius:8px;padding:8px 12px;color:#fff;cursor:pointer;font-size:13px;font-weight:600}
#weval-bot-send:hover{background:#5558e6}
.quick-btns{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.quick-btn{background:rgba(99,102,241,.15);border:1px solid rgba(99,102,241,.25);color:#a5b4fc;padding:5px 10px;border-radius:6px;font-size:11px;cursor:pointer;transition:all .15s}
.quick-btn:hover{background:rgba(99,102,241,.3);color:#fff}
</style>
<button id="weval-bot-btn" onclick="toggleBot()">
<svg viewBox="0 0 24 24"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z"/></svg>
<div id="weval-bot-badge"></div>
</button>
<div id="weval-bot-panel">
<div id="weval-bot-head">
<div class="avatar">W</div>
<div class="info">
<div class="name">WEVAL Assistant</div>
<div class="status">En ligne - 62 produits</div>
</div>
<button id="weval-bot-close" onclick="toggleBot()">&times;</button>
</div>
<div id="weval-bot-msgs"></div>
<div id="weval-bot-input-area">
<input id="weval-bot-input" placeholder="Posez une question sur nos produits..." onkeypress="if(event.key==='Enter')sendBot()">
<button id="weval-bot-send" onclick="sendBot()">Envoyer</button>
</div>
</div>
<script>
const PRODUCTS_KB = {
deliVerscore: {name:'DeliverScore',desc:'Audit délivrabilité email - SPF/DKIM/DMARC/listes de blocage. Score + recommandations IA.',price:'Gratuit + Pro $49/mo',url:'/products/deliverscore.html',category:'Email Intelligence'},
medreach: {name:'MedReach API',desc:'Base de 18596+ professionnels de santé vérifiés (Afrique, Europe, Moyen-Orient, Asie, Europe). API REST + export.',price:'Gratuit + Pro $299/mo',url:'/products/medreach.html',category:'Data'},
gpu: {name:'WEVIA Inference',desc:'IA-as-a-Service. WEVIA Deep, WEVIA sur GPU dédié. API IA Cloud-compatible.',price:'Gratuit + Pro $99/mo',url:'/products/gpu-inference.html',category:'IA'},
contentfactory: {name:'AI Content Factory',desc:'Génération de contenu IA - articles, fiches produits, LinkedIn. 6 templates.',price:'Gratuit + Pro $29/mo',url:'/products/content-factory.html',category:'IA'},
proposalai: {name:'ProposalAI',desc:'Generateur de propositions commerciales qualité Big4. Brief -> propale en 30 sec.',price:'Gratuit + Pro $19/mo',url:'/products/proposalai.html',category:'IA'},
blueprintai: {name:'BlueprintAI',desc:'Process docs, BPMN, CDC, blueprints L1/L2/L3, 8D, RACI.',price:'$25/mo',url:'/products/blueprintai.html',category:'IA'},
storeforge: {name:'StoreForge',desc:'E-commerce IA. Boutique en 5 min. Descriptions IA, chatbot WEVIA, paiement international.',price:'0-$29/mo',url:'/products/storeforge.html',category:'Commerce'},
leadforge: {name:'LeadForge',desc:'B2B Lead Intelligence sur mesure. Leads vérifiés tous secteurs. 0.30-0.$50/lead.',price:'0.30-0.$49/lead',url:'/products/workspace.html',category:'Data'},
mailwarm: {name:'MailWarm',desc:'Optimisation email automatique. 500+ seeds. Inbox 90%+ en 4-6 semaines.',price:'$29/compte/mo',url:'/products/workspace.html',category:'Email'},
sentinel: {name:'Sentinel Monitor',desc:'Cyber monitoring PME - SSL, ports, DNS, OWASP. Alertes Telegram.',price:'Gratuit + Pro $49/mo',url:'/products/workspace.html',category:'Security'},
outreachai: {name:'OutreachAI',desc:'Cold outreach IA. Upload leads -> IA personnalisé, envoi -> tracking.',price:'$199/mo',url:'/products/workspace.html',category:'Email'},
wevia: {name:'WEVIA White-Label',desc:'Chatbot IA clé en main. Widget embed 5 min. KB custom, memoire, vision.',price:'100-$299/mo',url:'/products/wevia-whitelabel.html',category:'IA'},
emailverify: {name:'EmailVerify',desc:'Validation email temps réel MX+SMTP+disposable.',price:'$49/mo',url:'/products/workspace.html',category:'Email Intelligence'},
blacklistguard: {name:'BlacklistGuard',desc:'Monitoring 100+ listes de blocage RBL + alertes.',price:'$29/mo',url:'/products/workspace.html',category:'Email Intelligence'},
reputationai: {name:'RéputationAI',desc:'Score réputation domaine + historique.',price:'$39/mo',url:'/products/workspace.html',category:'Email Intelligence'},
copyai: {name:'CopyAI WEVAL',desc:'Copywriting IA - emails, sujets, CTA. Cloud souveraine.',price:'$39/mo',url:'/products/workspace.html',category:'IA'},
dataharvest: {name:'DataInsight',desc:'Intelligence d\'enrichissement de donn\u00e9es B2B.',price:'$99/mo',url:'/products/workspace.html',category:'Data'},
smsforge: {name:'SMSForge',desc:'SMS marketing international (190+ pays).',price:'$49/mo',url:'/products/workspace.html',category:'Marketing'},
adscontrol: {name:'AdsControl',desc:'Multi-channel ads FB/Google/LinkedIn/TikTok.',price:'$99/mo',url:'/products/workspace.html',category:'Marketing'},
wevalcrm: {name:'WEVAL CRM',desc:'CRM leger pipeline + contacts + IA.',price:'Gratuit + Pro $29/mo',url:'/products/workspace.html',category:'Business'},
canvasai: {name:'CanvasAI',desc:'Design IA - visuels, bannieres, logos.',price:'$29/mo',url:'/products/workspace.html',category:'IA'},
devforge: {name:'DevForge AI',desc:'12 modules dev: specs, tests, code gen, API design, security review.',price:'$199/mo',url:'/products/workspace.html',category:'Dev'},
ethica: {name:'Ethica B2B',desc:'Plateforme HCP internationale. 5775+ médecins vérifiés.',price:'$299/mo',url:'/products/workspace.html',category:'Data'},
arsenal: {name:'Arsenal Framework',desc:'150+ ecrans. ERP Intelligence, Brain Engine, moteur envoi. Enterprise.',price:'2000-$9,999/mo',url:'/products/arsenal.html',category:'Flagship'},
wevads: {name:'WEVADS Platform',desc:'Infrastructure email complete. Brain Engine des centaines de configurations. 6.65M contacts.',price:'Enterprise',url:'/products/wevads.html',category:'Flagship'},
};
function getProductList() {
return Object.values(PRODUCTS_KB).map(p => `<b>${p.name}</b> - ${p.desc} (<a href="${p.url}">${p.price}</a>)`).join('<br><br>');
}
function findProducts(query) {
const q = query.toLowerCase();
const matches = [];
const keywords = {
email: ['deliVerscore','emailverify','blacklistguard','reputationai','mailwarm','outreachai'],
ia: ['gpu','contentfactory','proposalai','blueprintai','copyai','canvasai','devforge','wevia'],
data: ['medreach','leadforge','dataharvest','ethica'],
security: ['sentinel','blacklistguard'],
ecommerce: ['storeforge'],
marketing: ['smsforge','adscontrol','outreachai'],
crm: ['wevalcrm'],
sap: ['arsenal'],
enterprise: ['arsenal','wevads','wevia'],
gratuit: [],
prix: [],
maroc: ['medreach','ethica','smsforge','storeforge'],
};
for (const [kw, ids] of Object.entries(keywords)) {
if (q.includes(kw)) ids.forEach(id => { if (!matches.includes(id)) matches.push(id); });
}
// Also search in product names and descriptions
for (const [id, p] of Object.entries(PRODUCTS_KB)) {
if (p.name.toLowerCase().includes(q) || p.desc.toLowerCase().includes(q) || p.category.toLowerCase().includes(q)) {
if (!matches.includes(id)) matches.push(id);
}
}
return matches.map(id => PRODUCTS_KB[id]).filter(Boolean);
}
function botReply(userMsg) {
const q = userMsg.toLowerCase();
// Greetings
if (/^(bonjour|salut|hello|hi|hey|coucou)/.test(q)) {
return `Bonjour ! Je suis l'assistant WEVAL. Nous avons <b>62 produits SaaS</b> en production. Comment puis-je vous aider ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Quels sont vos produits?')">Voir les produits</span><span class="quick-btn" onclick="askBot('email délivrabilité')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
}
// List all
if (/tous|tout|liste|produit|service|catalogue|quoi/.test(q)) {
const cats = {};
Object.values(PRODUCTS_KB).forEach(p => { if (!cats[p.category]) cats[p.category]=[]; cats[p.category].push(p); });
let html = `Voici nos <b>${Object.keys(PRODUCTS_KB).length} produits</b> par categorie :<br><br>`;
for (const [cat, prods] of Object.entries(cats)) {
html += `<b>${cat}</b><br>`;
prods.forEach(p => { html += `&bull; <a href="${p.url}">${p.name}</a> - ${p.price}<br>`; });
html += '<br>';
}
html += `<div class="quick-btns"><span class="quick-btn" onclick="askBot('email')">Email</span><span class="quick-btn" onclick="askBot('IA')">IA</span><span class="quick-btn" onclick="askBot('essayer gratuit')">Gratuit</span></div>`;
return html;
}
// Pricing
if (/prix|tarif|cout|combien|pricing|gratuit|free/.test(q)) {
const free = Object.values(PRODUCTS_KB).filter(p => p.price.toLowerCase().includes('gratuit'));
let html = `<b>Produits avec plan gratuit (${free.length}):</b><br>`;
free.forEach(p => { html += `&bull; <a href="${p.url}">${p.name}</a> - ${p.price}<br>`; });
html += `<br>Tous les prix sont sur <a href="/products/">notre catalogue</a>. Besoin d'un devis personnalisé ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('demo')">Demander une demo</span><span class="quick-btn" onclick="window.location.href='/booking.html'">Nous contacter</span></div>`;
return html;
}
// Demo / essai
if (/demo|essai|tester|try|commencer|start/.test(q)) {
return `Pour commencer gratuitement :<br><br>1. <a href="#cta">Ouvrir le Workspace</a> et créer un compte<br>2. Vous aurez acces a tous les produits gratuits<br>3. Testez DeliverScore, WEVIA Inference, Content Factory...<br><br>Ou <a href="#cta">contactez-nous</a> pour une demo personnalisée !<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Ouvrir Workspace</span></div>`;
}
// Specific product search
const matches = findProducts(q);
if (matches.length > 0) {
let html = `J'ai trouve <b>${matches.length} produit(s)</b> correspondant :<br><br>`;
matches.slice(0, 6).forEach(p => {
html += `<b><a href="${p.url}">${p.name}</a></b><br>${p.desc}<br><i>${p.price}</i><br><br>`;
});
if (matches.length > 6) html += `...et ${matches.length - 6} autres.<br>`;
html += `<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='${matches[0].url}'">Voir ${matches[0].name}</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
return html;
}
// Default - suggest contacting or browsing
return `Je n'ai pas trouve de produit spécifique pour "${userMsg}". Nos 62 produits couvrent : Email Intelligence, IA/GPU, Data, Security, Marketing, E-commerce et Dev.<br><br><div class="quick-btns"><span class="quick-btn" onclick="askBot('tous les produits')">Voir tout</span><span class="quick-btn" onclick="window.location.href='/booking.html'">Contacter WEVAL</span><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Workspace</span></div>`;
}
function toggleBot() {
const p = document.getElementById('weval-bot-panel');
p.classList.toggle('open');
if (p.classList.contains('open') && document.getElementById('weval-bot-msgs').children.length === 0) {
addMsg('bot', `Bonjour ! Je suis l'assistant produits WEVAL. Nous proposons <b>37 SaaS</b> en production. Que recherchez-vous ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Tous les produits')">Catalogue</span><span class="quick-btn" onclick="askBot('email')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('gratuit')">Gratuit</span><span class="quick-btn" onclick="askBot('demo')">Demo</span></div>`);
}
document.getElementById('weval-bot-badge').style.display = 'none';
}
function addMsg(type, html) {
const msgs = document.getElementById('weval-bot-msgs');
const div = document.createElement('div');
div.className = 'bot-msg ' + type;
div.innerHTML = html;
msgs.appendChild(div);
msgs.scrollTop = msgs.scrollHeight;
}
function askBot(q) {
document.getElementById('weval-bot-input').value = q;
sendBot();
}
function sendBot() {
const input = document.getElementById('weval-bot-input');
const msg = input.value.trim();
if (!msg) return;
input.value = '';
addMsg('user', msg);
// Show typing
const msgs = document.getElementById('weval-bot-msgs');
const typing = document.createElement('div');
typing.className = 'bot-typing';
typing.innerHTML = '<span></span><span></span><span></span>';
msgs.appendChild(typing);
msgs.scrollTop = msgs.scrollHeight;
setTimeout(() => {
typing.remove();
addMsg('bot', botReply(msg));
}, 400 + Math.random() * 600);
}
</script>
</div>
<style>
.enrich-trust{display:flex;gap:2rem;justify-content:center;flex-wrap:wrap;padding:1.5rem 4%;background:rgba(255,255,255,.02);border-top:1px solid rgba(255,255,255,.04);border-bottom:1px solid rgba(255,255,255,.04);margin:2rem 0}
.enrich-trust-item{display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5}.enrich-trust-item strong{color:#edf2f7}
.enrich-stats{display:flex;gap:3rem;justify-content:center;padding:2rem 4%;margin:1rem 0}.enrich-stat{text-align:center}.enrich-stat .v{font-family:"Space Mono",monospace;font-size:1.5rem;font-weight:700}.enrich-stat .l{font-size:.72rem;color:#7a8ba5;margin-top:.2rem}
.enrich-chat{max-width:800px;margin:3rem auto;padding:0 4%}.enrich-chat-box{background:#0c1222;border:1px solid rgba(255,255,255,.06);border-radius:14px;overflow:hidden}
.enrich-chat-hd{padding:.8rem 1.2rem;border-bottom:1px solid rgba(255,255,255,.06);display:flex;align-items:center;gap:.6rem;font-size:.9rem;font-weight:600}
.enrich-chat-msgs{min-height:200px;max-height:350px;overflow-y:auto;padding:1rem}.enrich-chat-empty{text-align:center;padding:2rem;color:#7a8ba5;font-size:.82rem}
.enrich-sug{display:flex;gap:.4rem;flex-wrap:wrap;justify-content:center;margin-top:.8rem}
.enrich-sug button{padding:.35rem .7rem;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);border-radius:16px;color:#edf2f7;font-size:.72rem;cursor:pointer;font-family:"Outfit"}
.enrich-input{padding:.8rem 1.2rem;border-top:1px solid rgba(255,255,255,.06);display:flex;gap:.5rem}
.enrich-input textarea{flex:1;resize:none;min-height:36px;max-height:100px;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);color:#edf2f7;border-radius:8px;padding:.5rem .7rem;font-family:"Outfit";font-size:.82rem;outline:none}
.enrich-input button{background:#3b82f6;color:#fff;border:none;border-radius:8px;padding:.5rem 1rem;font-weight:700;cursor:pointer;font-family:"Outfit";font-size:.82rem}
.msg-eu{background:rgba(255,255,255,.05);border-radius:8px 8px 2px 8px;padding:.5rem .8rem;margin:6px 0;max-width:70%;margin-left:auto;font-size:.82rem;color:#edf2f7}
.msg-ea{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.04);border-radius:2px 8px 8px 8px;padding:.6rem .9rem;margin:6px 0;max-width:85%;font-size:.82rem;color:#edf2f7;line-height:1.6}
.msg-ea strong{color:#fff}.msg-ea pre{background:rgba(0,0,0,.3);padding:.5rem;border-radius:6px;font-size:.75rem;margin:.4rem 0;overflow-x:auto}
.enrich-ld{display:inline-block;width:6px;height:6px;border-radius:50%;background:#3b82f6;margin:0 2px;animation:ep .8s infinite}
.enrich-ld:nth-child(2){animation-delay:.2s}.enrich-ld:nth-child(3){animation-delay:.4s}
@keyframes ep{0%,100%{opacity:1}50%{opacity:.3}}
</style>
<div class="enrich-trust">
<div class="enrich-trust-item"><strong>44</strong> produits SaaS</div>
<div class="enrich-trust-item"><strong>Cloud</strong> souverain</div>
<div class="enrich-trust-item"><strong>API</strong> REST</div>
<div class="enrich-trust-item"><strong>RGPD</strong> conforme</div>
<div class="enrich-trust-item"><strong>France</strong> · Maroc · États-Unis · International</div>
</div>
<div class="enrich-chat">
<div class="enrich-chat-box" style="--enrichcolor:#3b82f6">
<div class="enrich-chat-hd"><span style="color:#3b82f6"></span> Sentinel Monitor — Assistant IA</div>
<div class="enrich-chat-msgs" id="echat-msgs">
<div class="enrich-chat-empty" id="echat-empty">
Posez votre question sur Sentinel Monitor
<div class="enrich-sug">
<button onclick="esg('Quelles sont les fonctionnalités principales ?')">Fonctionnalités</button>
<button onclick="esg('Quels sont les tarifs ?')">Tarifs</button>
<button onclick="esg('Comment ca marche ?')">Comment ca marche</button>
</div></div></div>
<div class="enrich-input"><textarea id="echat-i" rows="1" placeholder="Posez votre question..." onkeydown="if(event.key==='Enter'&&!event.shiftKey){event.preventDefault();esend()}"></textarea><button onclick="esend()">Envoyer</button></div>
</div></div>
<script>
var ectx="Tu es Sentinel Monitor, expert cybersécurité PME. Scan SSL, ports, DNS, OWASP, monitoring continu, alertes.";var ehist=[];
function eesc(s){var d=document.createElement("div");d.textContent=s;return d.innerHTML}
function emd(m){return m.replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/`(.*?)`/g,"<code>$1</code>").replace(/\n\n/g,"<br><br>")}
function esg(q){document.getElementById("echat-i").value=q;esend()}
async function esend(){var i=document.getElementById("echat-i"),m=i.value.trim();if(!m)return;var a=document.getElementById("echat-msgs"),es=document.getElementById("echat-empty");if(es)es.remove();a.innerHTML+='<div class="msg-eu">'+eesc(m)+'</div>';i.value="";a.scrollTop=a.scrollHeight;var lid="el"+Date.now();a.innerHTML+='<div class="msg-ea" id="'+lid+'"><span class="enrich-ld"></span><span class="enrich-ld"></span><span class="enrich-ld"></span></div>';a.scrollTop=a.scrollHeight;try{ehist.push({role:"user",content:m});var r=await fetch("/api/weval-ia-fast.php",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:"[INSTRUCTION SYSTEME: "+ectx+"]\n\nDemande utilisateur: "+m,mode:"full",history:ehist.slice(-6)})});var j=await r.json();var rp=j.response||j.error||"Erreur";ehist.push({role:"assistant",content:rp});var el=document.getElementById(lid);if(el)el.outerHTML='<div class="msg-ea">'+emd(rp)+"</div>";}catch(ex){var el=document.getElementById(lid);if(el)el.innerHTML="Erreur: "+ex.message;}a.scrollTop=a.scrollHeight;}
</script>
</body></html>
<!-- WEVAL Self-Service Inject -->
<script>
if(window===window.top){
// Replace all contact mailto links with signup portal
document.querySelectorAll('a[href*="mailto:"]').forEach(a => {
if(a.classList.contains('btn-p') || a.classList.contains('btn-f') || a.classList.contains('btn-n') || a.classList.contains('btn-nav') || a.classList.contains('btn-primary') || a.classList.contains('btn-price-fill') || a.textContent.includes('Commencer') || a.textContent.includes('Commander') || a.textContent.includes('Essayer') || a.textContent.includes('Souscrire') || a.textContent.includes('Créer') || a.textContent.includes('Obtenir') || a.textContent.includes('Démarrer') || a.textContent.includes('Rejoindre')) {
a.href = '/products/workspace.html';
a.removeAttribute('target');
}
});
// Add floating CTA
const bar = document.createElement('div');
bar.innerHTML = '<div style="position:fixed;bottom:0;left:0;right:0;z-index:999;background:rgba(5,8,15,0.95);backdrop-filter:blur(10px);border-top:1px solid rgba(0,201,167,0.15);padding:0.6rem 4%;display:flex;justify-content:space-between;align-items:center"><div style="font-size:0.82rem;color:#7a8ba5"><strong style="color:#edf2f7">WEVAL Products</strong> · <span style="color:#00c9a7">Self-service</span> · Inscription en 30 secondes</div><a href="#cta" style="background:#00c9a7;color:#05080f;padding:0.5rem 1.2rem;border-radius:6px;font-weight:700;font-size:0.82rem;text-decoration:none">Créer mon compte gratuit →</a></div>';
if(window.self===window.top){document.body.appendChild(bar);}
document.body.style.paddingBottom = '52px';
}
</script>
<div style="max-width:600px;margin:2rem auto;padding:0 4%">
<div style="background:#0c1222;border:1px solid rgba(78,168,222,.15);border-radius:14px;padding:1.5rem">
<h3 style="font-size:1rem;font-weight:700;margin-bottom:.8rem;color:#4ea8de">Scanner votre domaine maintenant</h3>
<input id="sec-domain" type="text" placeholder="votre-domaine.com" style="width:100%;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:.7rem;font-size:.88rem;color:#edf2f7;font-family:Outfit;margin-bottom:.8rem;outline:none">
<button onclick="secScan()" style="width:100%;padding:.8rem;background:#4ea8de;color:#05080f;border:none;border-radius:8px;font-weight:700;cursor:pointer;font-family:Outfit">Scanner →</button>
<div id="sec-result" style="margin-top:1rem;display:none;font-size:.82rem;color:#7a8ba5;line-height:1.6"></div></div></div>
<script>
async function secScan(){
const d=document.getElementById("sec-domain").value.trim();
if(!d)return;
document.getElementById("sec-result").style.display="block";
document.getElementById("sec-result").innerHTML="<em>Scan en cours...</em>";
try{
const r=await fetch("/api/weval-ia-fast.php",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:"[INSTRUCTION SYSTEME: Tu es un expert cybersécurité. Fais un scan de sécurité du domaine et retourne un score sur 100 avec les details des checks SPF, DKIM, DMARC, SSL, ports ouverts. Format JSON avec score, grade, checks array et recommendations.]\n\nDomaine a scanner: "+d,mode:"full"})});
const j=await r.json();
var resp=j.response||JSON.stringify(j);
document.getElementById("sec-result").innerHTML=resp.replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\n\n/g,"<br><br>").replace(/\n/g,"<br>");
}catch(e){document.getElementById("sec-result").innerHTML="Erreur. Réessayez.";}
}
</script>