- Removed all OpenAI/Anthropic/Abbott/AbbVie/J&J references from 11 pages - Removed all internal IPs (88.198.4.195, 89.167.40.150) from placeholders - Removed hardcoded API key 'weval-playground-2026' from gpu-inference.html - Aligned GPU model names: qwen2.5:3b, phi3:mini, gemma2:2b (matches S202) - Replaced all Anthropic API calls with /api/content/generate.php proxy - Genericized MedReach country counts (no internal numbers) - Removed expansion dates (Q3/Q4 2026) and source names (EgyDoctors, DoktorTakvimi, SCFHS, Doctolib) - Replaced internal numbers (646, 604, 527, 1783, CX3, DoubleM) with generics - Internationalized all footers (Casablanca,Maroc -> International) - Replaced PMTA references in product catalogs with generic terms - Fixed Roadmap -> Plan de deploiement in products-index.html Co-authored-by: Yacineutt <Yacineutt@users.noreply.github.com>
286 lines
30 KiB
HTML
286 lines
30 KiB
HTML
<!DOCTYPE html><html lang="fr"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>WEVIA Inference API — IA-as-a-Service</title><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:#7c5cfc;--a15:rgba(124,92,252,.15);--sv:#7a8ba5;--w:#edf2f7;--b:rgba(124,92,252,.08);--t:#00c9a7}*{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:#fff;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}h1{font-size:3.2rem;font-weight:800;line-height:1.08;letter-spacing:-.04em;margin-bottom:1.2rem;max-width:750px}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:#fff;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}.code-box{max-width:600px;margin:2rem auto;background:var(--s);border:1px solid var(--b);border-radius:14px;overflow:hidden}.code-bar{padding:.6rem 1rem;background:rgba(0,0,0,.3);font-size:.7rem;color:var(--sv)}.code-body{padding:1.2rem;font-family:'Space Mono',monospace;font-size:.78rem;line-height:1.8;color:var(--t);overflow-x:auto}.c-k{color:var(--a)}.c-s{color:var(--t)}.c-c{color:rgba(138,152,173,.4)}.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:#fff}.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}}</style></head><body>
|
|
<nav><div class="logo">WEVIA <span>Inference</span></div><a href="/products/workspace.html" class="btn-n">Get WEVIA Key →</a></nav>
|
|
<section class="hero"><div style="display:inline-flex;align-items:center;gap:.5rem;background:var(--a15);border:1px solid rgba(124,92,252,.2);border-radius:100px;padding:.35rem 1rem;font-size:.75rem;font-weight:600;color:var(--a);margin-bottom:2rem"> API standard-compatible — WEVIA Souverain</div><h1>IA souveraine <em>3-5x moins cher</em> que les clouds US</h1><p class="sub">WEVIA Deep, WEVIA Express, WEVIA Code — propulses par notre IA souveraine WEVIA. API standard-compatible. RTX 4000 Ada 20GB dediee. Pas de dependance cloud US. Souverainete garantie.</p><a href="#pricing" class="btn-p">Obtenir ma clé API →</a></section>
|
|
<section class="sec"><div class="stag">API</div><h2>Standard-compatible</h2>
|
|
<div class="code-box"><div class="code-bar">curl — Chat completion</div><div class="code-body"><span class="c-c"># API standard chat/completions</span><br>curl -X POST <span class="c-s">"https://api.weval-consulting.com/v1/chat"</span> \<br> -H <span class="c-s">"X-API-Key: YOUR_KEY"</span> \<br> -d '{<br> <span class="c-k">"model"</span>: <span class="c-s">"wevia-deep"</span>,<br> <span class="c-k">"messages"</span>: [{<span class="c-k">"role"</span>:<span class="c-s">"user"</span>,<span class="c-k">"content"</span>:<span class="c-s">"Hello"</span>}]<br> }'</div></div></section>
|
|
<section class="sec"><div class="stag">Modèles</div><h2>6 modèles disponibles</h2><p class="sd">Du reasoning au coding en passant par les embeddings.</p>
|
|
<div class="g3">
|
|
<div class="cd"><div style="font-size:1.5rem"><svg width="18" height="18" viewBox="0 0 16 16"><rect x="3" y="3" width="10" height="10" rx="2" fill="currentColor" opacity=".3"/></svg></div><h3>WEVIA Deep</h3><p>Reasoning avancé. Comparable à GPT-4 sur les benchmarks. Notre flagship.</p></div>
|
|
<div class="cd"><div style="font-size:1.5rem"><svg width="18" height="18" viewBox="0 0 16 16"><rect x="3" y="3" width="10" height="10" rx="2" fill="currentColor" opacity=".3"/></svg></div><h3>WEVIA Deep/14B</h3><p>Versions rapides pour le prototypage et les requêtes simples.</p></div>
|
|
<div class="cd"><div style="font-size:1.5rem"><svg width="18" height="18" viewBox="0 0 16 16"><rect x="3" y="3" width="10" height="10" rx="2" fill="currentColor" opacity=".3"/></svg></div><h3>WEVIA Code</h3><p>Spécialisé code. Python, JS, PHP, SQL. Autocomplétion et debug.</p></div>
|
|
<div class="cd"><div style="font-size:1.5rem"><svg width="18" height="18" viewBox="0 0 16 16"><rect x="3" y="3" width="10" height="10" rx="2" fill="currentColor" opacity=".3"/></svg></div><h3>WEVIA Lite</h3><p>Meta's best open model. Polyvalent, rapide, 128K contexte.</p></div>
|
|
<div class="cd"><div style="font-size:1.5rem"><svg width="18" height="18" viewBox="0 0 16 16"><rect x="3" y="3" width="10" height="10" rx="2" fill="currentColor" opacity=".3"/></svg></div><h3>Nomic Embed</h3><p>Embeddings pour RAG, semantic search, clustering documents.</p></div>
|
|
<div class="cd"><div style="font-size:1.5rem"><svg width="18" height="18" viewBox="0 0 16 16"><rect x="3" y="3" width="10" height="10" rx="2" fill="currentColor" opacity=".3"/></svg></div><h3>+45 modèles</h3><p>51 modèles WEVIA disponibles. Demandez l'activation de votre modèle préféré.</p></div></div></section>
|
|
<section class="sec" id="pricing"><div style="text-align:center;margin-bottom:2.5rem"><div class="stag">Tarifs</div><h2>Pay per token</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>5 requêtes/heure</li><li>500 tokens max/requête</li><li>Tous les modèles</li><li>API key gratuite</li></ul><a href="#cta" class="btn-l">Get Key</a></div>
|
|
<div class="pr pop"><div class="pr-name">Developer</div><div class="pr-amt">$49<sub>/mo</sub></div><ul class="pr-list"><li>200 requêtes/heure</li><li>4096 tokens max</li><li>Tous les modèles</li><li>Embeddings inclus</li><li>Usage dashboard</li></ul><a href="#cta" class="btn-f">Get Key</a></div>
|
|
<div class="pr"><div class="pr-name">Enterprise</div><div class="pr-amt">Sur mesure</div><ul class="pr-list"><li>Rate limit custom</li><li>GPU dédié possible</li><li>Fine-tuning</li><li>SLA 99.9%</li><li>Support prioritaire</li></ul><a href="#cta" class="btn-l">Contacter</a></div></div></section>
|
|
<div class="cta" id="cta"><div class="stag">Start</div><h2>Clé API gratuite en 2 minutes</h2><p>Aucune carte bancaire. 5 requêtes gratuites par heure pour toujours.</p><a href="/products/workspace.html" class="btn-p">Obtenir ma clé →</a></div>
|
|
<footer><div><strong>WEVIA Inference API</strong> · <a href="/products/">WEVAL Products</a></div><div>WEVAL Consulting — 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 - 37 produits</div>
|
|
</div>
|
|
<button id="weval-bot-close" onclick="toggleBot()">×</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 deliverability email - SPF/DKIM/DMARC/blacklists. 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 sante verifies (Afrique, Europe, Moyen-Orient, Asie, Europe). API REST + export.',price:'Gratuit + Pro $299/mo',url:'/products/medreach.html',category:'Data'},
|
|
gpu: {name:'WEVIA Inference API',desc:'IA-as-a-Service. Modeles WEVIA sur GPU RTX 4000 Ada. API standard-compatible.',price:'Gratuit + Pro $99/mo',url:'/products/gpu-inference.html',category:'IA'},
|
|
contentfactory: {name:'AI Content Factory',desc:'Generation 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 qualite 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 Maroc.',price:'0-$29/mo',url:'/products/storeforge.html',category:'Commerce'},
|
|
leadforge: {name:'LeadForge',desc:'B2B Lead Intelligence sur mesure. Leads verifies tous secteurs. 0.30-0.$50/lead.',price:'0.30-0.$49/lead',url:'/products/workspace.html',category:'Data'},
|
|
mailwarm: {name:'MailWarm',desc:'Warmup email automatique. Seeds IA. Inbox optimise en quelques 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 cle 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 reel MX+SMTP+disposable.',price:'$49/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
|
blacklistguard: {name:'BlacklistGuard',desc:'Monitoring 100+ blacklists RBL + alertes.',price:'$29/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
|
reputationai: {name:'ReputationAI',desc:'Score reputation domaine + historique.',price:'$39/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
|
copyai: {name:'CopyAI WEVAL',desc:'Copywriting IA - emails, sujets, CTA. WEVIA Souverain.',price:'$39/mo',url:'/products/workspace.html',category:'IA'},
|
|
dataharvest: {name:'DataHarvest',desc:'Web Data Enrichment Intelligence avec rotation.',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+ medecins verifies.',price:'$299/mo',url:'/products/workspace.html',category:'Data'},
|
|
arsenal: {name:'Arsenal Framework',desc:'150+ ecrans. ERP Intelligence, Brain Engine, routage intelligent. Enterprise.',price:'2000-$9,999/mo',url:'/products/arsenal.html',category:'Flagship'},
|
|
wevads: {name:'WEVADS Platform',desc:'Infrastructure email complete. Brain Engine, centaines de configurations. Millions de 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>37 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 deliverability')">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 += `• <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 += `• <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='/contact-us'">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="/products/workspace.html">Ouvrir le Workspace</a> et creer 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="/contact-us">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 specifique pour "${userMsg}". Nos 37 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='/contact-us'">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>
|
|
|
|
|
|
<!-- WEVAL Self-Service Inject -->
|
|
<script>
|
|
// 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="/products/workspace.html" 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>';
|
|
document.body.appendChild(bar);
|
|
document.body.style.paddingBottom = '52px';
|
|
</script>
|
|
<div style="max-width:700px;margin:2rem auto;padding:0 4%">
|
|
<div style="background:#0c1222;border:1px solid rgba(124,92,252,.15);border-radius:14px;padding:1.5rem">
|
|
<h3 style="font-size:1rem;font-weight:700;margin-bottom:.8rem;color:#7c5cfc">Tester l'API — Playground</h3>
|
|
<select id="gpu-model" style="width:100%;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:.6rem;font-size:.82rem;color:#edf2f7;font-family:Outfit;margin-bottom:.6rem;outline:none"><option value="wevia-deep">WEVIA Deep — Raisonnement avancé</option><option value="wevia-express">WEVIA Express — Réponses instantanées</option><option value="wevia-code">WEVIA Code</option><option value="wevia-light">WEVIA Light — Mode léger</option></select>
|
|
<textarea id="gpu-prompt" placeholder="Entrez votre prompt ici..." style="width:100%;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:.7rem;font-size:.85rem;color:#edf2f7;font-family:Outfit;margin-bottom:.6rem;outline:none;resize:vertical;min-height:80px">Explique-moi le concept de RAG (Retrieval Augmented Generation) en 3 phrases.</textarea>
|
|
<button onclick="gpuTest()" id="gpu-btn" style="width:100%;padding:.7rem;background:#7c5cfc;color:#fff;border:none;border-radius:8px;font-weight:700;cursor:pointer;font-family:Outfit">Envoyer a WEVIA →</button>
|
|
<div id="gpu-result" style="margin-top:1rem;display:none;background:rgba(0,0,0,.3);border:1px solid rgba(124,92,252,.1);border-radius:8px;padding:1rem;font-size:.82rem;color:#edf2f7;line-height:1.6;max-height:400px;overflow-y:auto;white-space:pre-wrap"></div>
|
|
<div id="gpu-meta" style="margin-top:.5rem;display:none;font-size:.68rem;color:#7a8ba5;font-family:'Space Mono',monospace"></div></div></div>
|
|
<script>
|
|
async function gpuTest(){
|
|
const MODEL_MAP={"wevia-deep":"qwen2.5:3b","wevia-express":"phi3:mini","wevia-code":"qwen2.5:3b","wevia-light":"gemma2:2b"};const rawModel=document.getElementById("gpu-model").value;const model=MODEL_MAP[rawModel]||rawModel;
|
|
const prompt=document.getElementById("gpu-prompt").value;
|
|
if(!prompt)return;
|
|
document.getElementById("gpu-btn").textContent="Inférence en cours...";document.getElementById("gpu-btn").disabled=true;
|
|
document.getElementById("gpu-result").style.display="block";document.getElementById("gpu-result").textContent="⏳ GPU processing...";
|
|
try{
|
|
const sk=sessionStorage.getItem('gpu_session_key')||'';const r=await fetch("/api/gpu/chat.php",{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":sk},body:JSON.stringify({model:model,messages:[{role:"user",content:prompt}],max_tokens:500})});
|
|
const d=await r.json();
|
|
document.getElementById("gpu-result").textContent=d.choices[0].message.content;
|
|
document.getElementById("gpu-meta").style.display="block";
|
|
document.getElementById("gpu-meta").textContent="Model: "+d.model+" | Tokens: "+d.usage.total_tokens+" | Latency: "+d.meta.latency_ms+"ms | GPU: "+d.meta.gpu;
|
|
}catch(e){document.getElementById("gpu-result").textContent="Erreur. Le WEVIA est peut-être occupé. Réessayez dans quelques secondes.";}
|
|
document.getElementById("gpu-btn").textContent="Envoyer a WEVIA →";document.getElementById("gpu-btn").disabled=false;
|
|
}
|
|
</script>
|
|
|
|
<div style="max-width:800px;margin:30px auto;padding:20px;background:#1a1625;border:1px solid rgba(255,107,0,.2);border-radius:12px;text-align:center"><h3 style="color:#FF6B00;margin-bottom:10px">Partenaire Huawei Cloud</h3><p style="color:#94a3b8;font-size:14px;margin-bottom:16px">Besoin de GPU supplementaires? Creez votre compte Huawei Cloud (Ascend 910B + ModelArts) via notre lien partenaire.</p><div style="display:flex;gap:16px;justify-content:center;align-items:center;flex-wrap:wrap"><a href="https://account-intl.huaweicloud.com/obmgr/invitation/invitation.html?id=8a859c7e-093d-47f9-84df-307f36f70672" target="_blank" style="background:#FF6B00;color:white;padding:10px 24px;border-radius:8px;text-decoration:none;font-weight:600">Creer un compte Huawei Cloud</a><img src="https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=https%3A//account-intl.huaweicloud.com/obmgr/invitation/invitation.html%3Fid%3D8a859c7e-093d-47f9-84df-307f36f70672" style="width:100px;height:100px;border-radius:8px" alt="QR"></div></div>
|
|
|
|
</body></html>
|