Files
html/growth-engine-v2.html
WEVIA a41ac7dcc4
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
AUTO-BACKUP 20260413-2230
2026-04-13 22:30:02 +02:00

267 lines
36 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Growth Engine v3 — WEVAL Consulting</title>
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=Outfit:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>
:root{--bg:#06090f;--bg2:#0c1120;--bg3:#131b2e;--bg4:#1a2540;--gold:#d4a853;--gold2:#e8c36a;--gd:rgba(212,168,83,.12);--em:#34d399;--ed:rgba(52,211,153,.12);--sa:#3b82f6;--sd:rgba(59,130,246,.12);--co:#f97066;--cld:rgba(249,112,102,.12);--vi:#a78bfa;--vd:rgba(167,139,250,.12);--cy:#22d3ee;--cyd:rgba(34,211,238,.12);--ro:#fb7185;--rd:rgba(251,113,133,.12);--am:#fbbf24;--ad:rgba(251,191,36,.12);--t1:#f0ece4;--t2:#9ca3af;--t3:#4b5563;--brd:#1e293b;--r:10px;--fd:'DM Serif Display',Georgia,serif;--fb:'Outfit',system-ui,sans-serif;--fm:'JetBrains Mono',monospace}
*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--fb);background:var(--bg);color:var(--t1);min-height:100vh;overflow-x:hidden}
.amb{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}.orb{position:absolute;border-radius:50%;filter:blur(120px);opacity:.12;animation:dr 20s ease-in-out infinite}.o1{width:600px;height:600px;background:var(--gold);top:-10%;left:-5%}.o2{width:500px;height:500px;background:var(--sa);bottom:-10%;right:-5%;animation-delay:-7s}.o3{width:400px;height:400px;background:var(--em);top:40%;left:50%;animation-delay:-14s}@keyframes dr{0%,100%{transform:translate(0,0)}33%{transform:translate(30px,-20px)}66%{transform:translate(-20px,30px)}}
.nz{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.wr{position:relative;z-index:2}
.hd{display:flex;align-items:center;gap:14px;padding:12px 20px;background:rgba(12,17,32,.9);backdrop-filter:blur(20px);border-bottom:1px solid var(--brd);position:sticky;top:0;z-index:100}
.hd-l{font-family:var(--fd);font-size:20px;color:var(--gold)}.hd-l span{color:var(--t3);font-size:11px;font-family:var(--fb);margin-left:6px}
.hd-k{display:flex;gap:10px;margin-left:auto}.hd-k a{color:var(--t3);font-size:9px;text-decoration:none;font-weight:600;letter-spacing:.5px;text-transform:uppercase;transition:.2s}.hd-k a:hover{color:var(--gold)}
.sb{padding:5px 12px;border-radius:6px;border:1px solid var(--gd);background:var(--gd);color:var(--gold);font-size:10px;font-family:var(--fb);font-weight:600;cursor:pointer;transition:.3s;display:flex;align-items:center;gap:4px}.sb:hover{background:var(--gold);color:var(--bg)}.sb .ic{transition:transform .4s}.sb:hover .ic{transform:rotate(180deg)}
.nv{display:flex;gap:0;padding:0 12px;background:rgba(12,17,32,.7);backdrop-filter:blur(12px);border-bottom:1px solid var(--brd);overflow-x:auto}.nv::-webkit-scrollbar{display:none}
.vt{padding:9px 12px;font-size:10px;color:var(--t3);cursor:pointer;border-bottom:2px solid transparent;transition:.2s;white-space:nowrap;font-weight:500;display:flex;align-items:center;gap:4px}.vt .dt{width:4px;height:4px;border-radius:50%}.vt.on{color:var(--t1);border-bottom-color:var(--gold);font-weight:600}.vt:hover{color:var(--t1)}.vt .ct{font-size:8px;font-family:var(--fm);background:var(--bg4);padding:1px 4px;border-radius:3px}
.mn{max-width:1440px;margin:0 auto;padding:18px 20px}.sc{display:none}.sc.on{display:block;animation:fi .3s ease}@keyframes fi{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.mr{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:7px;margin-bottom:18px}.mc{background:var(--bg2);border:1px solid var(--brd);border-radius:8px;padding:10px;position:relative;overflow:hidden}.mc::before{content:'';position:absolute;top:0;left:0;right:0;height:2px}
.mc.g::before{background:linear-gradient(90deg,var(--gold),transparent)}.mc.e::before{background:linear-gradient(90deg,var(--em),transparent)}.mc.s::before{background:linear-gradient(90deg,var(--sa),transparent)}.mc.c::before{background:linear-gradient(90deg,var(--co),transparent)}.mc.v::before{background:linear-gradient(90deg,var(--vi),transparent)}.mc.cy::before{background:linear-gradient(90deg,var(--cy),transparent)}.mc.r::before{background:linear-gradient(90deg,var(--ro),transparent)}.mc.a::before{background:linear-gradient(90deg,var(--am),transparent)}
.mc-l{font-size:8px;text-transform:uppercase;letter-spacing:.6px;color:var(--t3);margin-bottom:3px;font-weight:600}.mc-v{font-size:20px;font-weight:700;font-family:var(--fm);line-height:1}.mc-s{font-size:8px;color:var(--t2);margin-top:3px}
.cg{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:9px;margin-bottom:18px}.cd{background:var(--bg2);border:1px solid var(--brd);border-radius:8px;padding:12px;transition:.2s}.cd:hover{border-color:rgba(212,168,83,.25);transform:translateY(-1px);box-shadow:0 4px 16px rgba(0,0,0,.25)}.cd-h{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:5px}.cd-t{font-size:12px;font-weight:600}.cd-d{font-size:9px;color:var(--t2);line-height:1.5;margin-bottom:7px}
.bd{font-size:8px;padding:2px 6px;border-radius:4px;font-weight:600}.bw{background:var(--gd);color:var(--gold)}.bp{background:var(--sd);color:var(--sa)}.bi{background:var(--vd);color:var(--vi)}.bh{background:var(--cld);color:var(--co)}.bs{background:var(--ed);color:var(--em)}
.rv{display:flex;align-items:center;gap:5px;margin-top:5px}.rv-b{flex:1;height:3px;border-radius:2px;background:var(--bg4);overflow:hidden}.rv-f{height:100%;border-radius:2px;transition:width .5s}.rv-v{font-size:9px;font-family:var(--fm);color:var(--gold);min-width:35px;text-align:right}
.ca{margin-top:6px;display:flex;flex-wrap:wrap;gap:3px}.at{font-size:8px;padding:2px 5px;border-radius:3px;background:var(--bg3);color:var(--t2);cursor:pointer;transition:.15s;border:1px solid transparent}.at:hover{border-color:var(--gold);color:var(--gold)}.at.dn{text-decoration:line-through;opacity:.3}
.kb{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-bottom:18px}@media(max-width:900px){.kb{grid-template-columns:1fr 1fr}}@media(max-width:600px){.kb{grid-template-columns:1fr}}
.kc{background:var(--bg2);border:1px solid var(--brd);border-radius:8px;overflow:hidden}.kh{padding:8px 9px;border-bottom:1px solid var(--brd);display:flex;align-items:center;gap:4px;font-size:10px;font-weight:600}.kh .n{font-family:var(--fm);font-size:8px;color:var(--t3);margin-left:auto}.kh.si{border-left:3px solid var(--vi)}.kh.sp{border-left:3px solid var(--sa)}.kh.sw{border-left:3px solid var(--gold)}.kh.ss{border-left:3px solid var(--em)}
.ki{padding:5px 9px;border-bottom:1px solid rgba(30,41,59,.25);font-size:9px;color:var(--t2);transition:.12s}.ki:hover{background:var(--bg3);color:var(--t1)}.ki .tg{font-size:7px;padding:1px 3px;border-radius:2px;margin-left:2px;background:rgba(255,255,255,.04);color:var(--t3)}
.cns{display:grid;grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:5px;margin-bottom:18px}.cn{background:var(--bg2);border:1px solid var(--brd);border-radius:7px;padding:8px;display:flex;align-items:center;gap:7px;transition:.15s;font-size:10px}.cn:hover{border-color:var(--em)}.cn-d{width:5px;height:5px;border-radius:50%;flex-shrink:0}.cn-d.up{background:var(--em);box-shadow:0 0 4px var(--em)}.cn-d.dn{background:var(--co);box-shadow:0 0 4px var(--co)}.cn-d.wr{background:var(--gold);box-shadow:0 0 4px var(--gold)}.cn-n{font-weight:500}.cn-p{font-size:8px;font-family:var(--fm);color:var(--t3);margin-left:auto}
.cb{background:var(--bg2);border:1px solid var(--brd);border-radius:8px;margin-bottom:18px;overflow:hidden}.ch{padding:10px 12px;border-bottom:1px solid var(--brd);display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600}.ch .lv{width:5px;height:5px;border-radius:50%;background:var(--em);animation:gl 2s infinite}@keyframes gl{0%,100%{box-shadow:0 0 2px var(--em)}50%{box-shadow:0 0 7px var(--em)}}
.cm{padding:10px 12px;max-height:220px;overflow-y:auto;font-size:10px;line-height:1.6}.cm::-webkit-scrollbar{width:2px}.cm::-webkit-scrollbar-thumb{background:var(--bg4)}.mg{margin-bottom:7px;padding:6px 9px;border-radius:5px;animation:mi .2s ease}.mg.sy{background:var(--bg3);color:var(--t3);font-size:9px}.mg.ai{background:rgba(212,168,83,.05);border-left:2px solid var(--gold)}.mg.us{background:var(--bg4);text-align:right}@keyframes mi{from{opacity:0;transform:translateX(-4px)}to{opacity:1;transform:translateX(0)}}
.ci{display:flex;gap:6px;padding:8px 12px;border-top:1px solid var(--brd)}.ci input{flex:1;background:var(--bg3);border:1px solid var(--brd);border-radius:5px;padding:7px 9px;color:var(--t1);font-size:10px;font-family:var(--fb);outline:none;transition:.2s}.ci input:focus{border-color:var(--gold)}.ci button{padding:7px 14px;border-radius:5px;border:none;background:var(--gold);color:var(--bg);font-weight:600;font-size:10px;cursor:pointer}.ci button:hover{background:var(--gold2)}
.st{font-family:var(--fd);font-size:15px;color:var(--t1);margin-bottom:12px;display:flex;align-items:center;gap:6px}.st .ln{flex:1;height:1px;background:var(--brd)}
.tbl{width:100%;border-collapse:collapse;margin-bottom:14px;font-size:9px}.tbl th{text-align:left;padding:6px 7px;font-size:7px;text-transform:uppercase;letter-spacing:.6px;color:var(--t3);border-bottom:1px solid var(--brd);font-weight:600}.tbl td{padding:6px 7px;border-bottom:1px solid rgba(30,41,59,.25);color:var(--t2)}.tbl tr:hover td{background:var(--bg3);color:var(--t1)}
.sr{background:var(--bg2);border:1px solid var(--brd);border-radius:8px;padding:10px;margin-bottom:18px}.si2{padding:6px 0;border-bottom:1px solid rgba(30,41,59,.2)}.si2:last-child{border:none}.si2-t{font-size:10px;font-weight:500;color:var(--sa)}.si2-u{font-size:7px;font-family:var(--fm);color:var(--t3)}.si2-s{font-size:9px;color:var(--t2);margin-top:2px;line-height:1.4}
.spnr{display:inline-block;width:10px;height:10px;border:2px solid var(--brd);border-top-color:var(--gold);border-radius:50%;animation:spi .5s linear infinite}@keyframes spi{to{transform:rotate(360deg)}}
/* Plan90 */
.p90-w{margin-bottom:14px}.p90-h{font-weight:600;font-size:11px;color:var(--gold);margin-bottom:6px;padding-bottom:4px;border-bottom:1px solid var(--brd)}.p90-a{display:flex;align-items:center;gap:6px;padding:4px 0;font-size:9px;color:var(--t2)}.p90-a input{accent-color:var(--gold)}.p90-a.done{text-decoration:line-through;opacity:.4}
/* Social */
.soc{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin-bottom:18px}.soc-c{background:var(--bg2);border:1px solid var(--brd);border-radius:8px;padding:12px;transition:.2s}.soc-c:hover{border-color:var(--sa)}.soc-h{font-size:11px;font-weight:600;margin-bottom:6px;display:flex;align-items:center;gap:6px}.soc-h .soc-ico{font-size:14px}.soc-stat{font-size:9px;color:var(--t2);line-height:1.6}.soc-api{font-size:8px;font-family:var(--fm);color:var(--t3);margin-top:6px;padding-top:4px;border-top:1px solid var(--brd)}
@media(max-width:768px){.hd{padding:8px 12px}.hd-l{font-size:16px}.hd-k{display:none}.nv{padding:0 8px}.vt{padding:7px 7px;font-size:9px}.mn{padding:10px}.mr{grid-template-columns:repeat(2,1fr)}.cg{grid-template-columns:1fr}}
</style>
</head>
<body>
<div class="amb"><div class="orb o1"></div><div class="orb o2"></div><div class="orb o3"></div></div>
<div class="nz"></div>
<div class="wr">
<div class="hd">
<div class="hd-l">Growth Engine <span>v3 — WEVAL Consulting</span></div>
<div class="hd-k"><a href="/wevia-master.html">Master</a><a href="/director.html">Director</a><a href="/crm.html">CRM</a><a href="/growth-engine.html">v1</a></div>
<button class="sb" onclick="fullScan()"><span class="ic">&#x21BB;</span> Scan All</button>
</div>
<div class="nv" id="nav"></div>
<div class="mn" id="mn"></div>
</div>
<script>
const API='/api/growth-engine-api.php',WV='/api/wevia-master-api.php';
const SN={idea:'Idées',plan:'Planifié',wip:'En cours',sign:'Signé'};
const SC={idea:'si',plan:'sp',wip:'sw',sign:'ss'};
// ═══════════ 8 VERTICALS — ENRICHED FROM V1+V2+ARCHI ═══════════
const V={
consulting:{l:'Consulting',ic:'em',o:[
{n:'Vistex SAP Maghreb',d:'Lead protection + conseil SAP pricing. Cosumar, Carrefour, OCP. Addendum Section 8.B + Section 3.d. Contacts: Olga Vanurina, Joe Golemba, Udo Hannemann.',r:200000,s:'wip',b:'bh',a:['Signer Lead Protection Addendum','RDV Olga Vanurina','Proposition Cosumar','Section 6.c.i Portal argument']},
{n:'Audit Maturité Digitale PME',d:'Framework McKinsey DQ adapté Maroc. Assessment 0-100 benchmark sectoriel. BCG DAI + DQ combo.',r:80000,s:'plan',b:'bp',a:['Framework scoring','Landing page','LinkedIn prospection','Template rapport']},
{n:'Consulting Cloud Migration',d:'Migration on-prem → cloud. Arrow/Scaleway partnership. Omar Belchkar, Julien Bossu contacts.',r:120000,s:'wip',b:'bw',a:['Onboarding ArrowSphere','Offre packagée','3 prospects','Cheikh Gassama Scaleway']},
{n:'Conseil Stratégie IA PME',d:'Diagnostic IA + roadmap. 50K MAD/mission. Cible: industriels Maghreb.',r:60000,s:'idea',b:'bi',a:['Offre diagnostic','3 PME pilotes','Webinaire CGEM']},
{n:'Value Stream Mapping',d:'VSM consulting pour optimisation processus. Page VSM existante dans Arsenal.',r:40000,s:'idea',b:'bi',a:['Connecter vsm-pipelines.html','Template VSM client','Offre packagée 30K']}
],m:[{l:'Pipeline',v:'500K',s:'5 deals',c:'e'},{l:'Partenaires',v:'3',s:'Vistex·Arrow·Scaleway',c:'g'},{l:'Conversion',v:'40%',s:'2/5 closing',c:'s'}]},
digital:{l:'Digital',ic:'sa',o:[
{n:'WEVIA SaaS freemium',d:'Arena multi-LLM + chat autonome. 275 tools. Free 100 msgs → 99€/mois. Blade v2.0 connecté.',r:200000,s:'plan',b:'bp',a:['Landing WeviaAI.ma','Setup Stripe','Beta 10 users','Blade v2 demo']},
{n:'API HCP Maghreb (Ethica)',d:'126K HCPs, 110K emails, 18K phones, 64K Google verified. 3000€/15K/mois. Pilot DRY_RUN prêt 7611 MG DZ.',r:300000,s:'wip',b:'bh',a:['Enrichir spécialités DZ','Scraper CNAM TN + CROMC','3 labos pilotes Kaouther','Consent.wevup.app']},
{n:'White-label WEVIA',d:'WEVIA brandé pour cabinets RH/legal/finance. Setup 5000€ + 500€/mois.',r:80000,s:'idea',b:'bi',a:['Package technique','Mockup client','5 cabinets cibles']},
{n:'SEO Module Hub',d:'Audit SEO auto via Plausible + SearXNG. Rapport client automatique.',r:40000,s:'plan',b:'bp',a:['SEO Module Hub page','Plausible bearer token','Template rapport']},
{n:'Dev Apps sur mesure',d:'Apps web/mobile stack WEVAL (React, Node, PG). 3000 MAD/jour.',r:100000,s:'idea',b:'bi',a:['Portfolio case-studies.html','Pricing grid','Landing développement']},
{n:'Solution Finder IA',d:'solution-finder.html existant. Recommandation IA des solutions WEVAL pour prospects.',r:30000,s:'plan',b:'bp',a:['Enrichir solution-finder','Connecter WEVIA Master','A/B test conversion']}
],m:[{l:'Pipeline',v:'750K',s:'6 opportunités',c:'s'},{l:'HCPs',v:'126K',s:'110K emails · 64K verified',c:'e'},{l:'Pages',v:'168',s:'+ 488 Arsenal = 656 total',c:'g'},{l:'APIs',v:'438',s:'Toutes live',c:'v'}]},
cloud:{l:'Cloud & Infra',ic:'cy',o:[
{n:'Arrow/Scaleway Reseller',d:'1er partenaire Scaleway Maroc via Arrow. Marge 15-25%. ArrowSphere onboarding.',r:100000,s:'wip',b:'bw',a:['Finaliser ArrowSphere','Offre packagée','10 prospects','Julien Bossu contact']},
{n:'Managed Hosting',d:'Hébergement managé Hetzner/OVH. Kuma + Prometheus + Grafana monitoring.',r:50000,s:'plan',b:'bp',a:['Pricing S/M/L','SLA document','Dashboard client Kuma']},
{n:'IaC Consulting',d:'DevOps/IaC PME. 17 Docker, CI/CD, Gitea, monitoring souverain.',r:60000,s:'idea',b:'bi',a:['Template Docker Compose','Workshop DevOps','3 prospects']},
{n:'Résolution Huawei Cloud',d:'Litige facturation. Comptes gelés + overconsumption. Ray Wu, Chris Cen, Yanhao.',r:0,s:'wip',b:'bh',a:['Document facturation anormale','Escalade Ray Wu','Deadline résolution']},
{n:'Cloudflare Management',d:'~25 comptes CF Brahim. Service gestion DNS/CDN/WAF pour clients.',r:30000,s:'idea',b:'bi',a:['Packager offre CF','Dashboard multi-compte','5 clients cibles']}
],m:[{l:'Pipeline',v:'240K',s:'5 opps',c:'cy'},{l:'Serveurs',v:'6+',s:'S95·S204·4 ECS Huawei',c:'e'},{l:'Docker',v:'17',s:'Tous UP',c:'s'},{l:'Uptime',v:'99.7%',s:'Kuma 24/7',c:'g'}]},
ia:{l:'IA & Data',ic:'vi',o:[
{n:'IA Souveraine aaS',d:'LiteLLM cascade 0€: Cerebras 5ms + Groq 12ms + Mistral + Gemini. Sovereign-api port 4000.',r:120000,s:'plan',b:'bp',a:['Offre cascade packagée','Benchmark latence','Landing IA Souveraine','HF Space yace222 déployé']},
{n:'Agent Builder WEVIA',d:'74 agents live. Blade v2.0 agent loop. Qdrant 5 collections. 199€/mois.',r:150000,s:'idea',b:'bi',a:['Interface builder drag&drop','5 templates agents','Doc API agents']},
{n:'Data Enrichment Service',d:'Ethica stack: RichScraper Playwright DabaDoc 50 TN/min. 8 crons actifs.',r:80000,s:'wip',b:'bw',a:['API enrichissement REST','Pricing volume','3 clients pilotes']},
{n:'Qdrant RAG Service',d:'5 collections Qdrant + 5751 training dataset HF. RAG clé-en-main B2B.',r:40000,s:'idea',b:'bi',a:['Package RAG','Demo searchable KB','Pricing tiers']},
{n:'WEVIA Deep Research',d:'wevia-deep-research.php existant. Rapports IA approfondis pour clients.',r:50000,s:'plan',b:'bp',a:['Packager deep research','Interface client','Pricing par rapport']}
],m:[{l:'Pipeline',v:'440K',s:'5 opps',c:'v'},{l:'Providers',v:'7',s:'Cascade 0€ 24/7',c:'e'},{l:'Agents',v:'74',s:'Live + Arena',c:'g'},{l:'Ollama',v:'5',s:'brain-v3·qwen3·nomic·minilm',c:'s'},{l:'Tools',v:'275',s:'Dynamic Resolver v7.1',c:'a'}]},
marketing:{l:'Marketing',ic:'co',o:[
{n:'Ethica Email Campaigns',d:'HCP Maghreb. 3000€/15K/mois. Contrat Kaouther Najar actif. Pilot DRY_RUN 7611.',r:180000,s:'wip',b:'bh',a:['Lancer pilot MG+DZ','Enrichir consent','Rapport ROI','ecm.py 4 actions']},
{n:'WEVADS Brain Engine',d:'646 configs, 9 SACRED winners. O365 PMTA 97% inbox. 77K emails/j capacité.',r:200000,s:'wip',b:'bw',a:['Volume warmup 1783 comptes','Conversions pull auto','Optimiser 9 winners','VMTAs 186-189']},
{n:'Newsletter B2B Premium',d:'Newsletter IA+pharma+tech Maghreb. LinkedIn + Telegram distribution.',r:30000,s:'idea',b:'bi',a:['Template newsletter','500 subscribers','2 sponsors','Telegram @wevia_cyber_bot']},
{n:'Social Media B2B',d:'LinkedIn scraper B2B (DSI/CTO Maroc). YouTube Factory. WhatsApp Business API.',r:60000,s:'plan',b:'bp',a:['LinkedIn B2B scraper actif','YouTube Factory setup','WhatsApp Business','Plausible tracking']},
{n:'MedReach Campaigns',d:'medreach-dashboard.html + medreach-campaign.html existants. Campagnes pharma ciblées.',r:50000,s:'plan',b:'bp',a:['Activer MedReach','Connecter Ethica data','Template campagne pharma']}
],m:[{l:'Pipeline',v:'520K',s:'5 opps',c:'c'},{l:'Brain Configs',v:'646',s:'9 SACRED winners',c:'g'},{l:'Emails/j',v:'77K',s:'Warmup 1783 comptes',c:'s'},{l:'Inbox Rate',v:'97%',s:'O365 PMTA',c:'e'}]},
recruitment:{l:'Recrutement',ic:'ro',o:[
{n:'Recrutement DevOps/Cloud',d:'LinkedIn B2B scraper DSI/CTO/DG Maroc actif. Fee 15-20% annuel.',r:100000,s:'plan',b:'bp',a:['LinkedIn scraper pw_linkedin_b2b.py','Base CV','Partenariat APEBI','5 postes']},
{n:'IA/Data Scientists',d:'ML Engineers, Data Scientists, NLP. Fee premium 25%. Marché tendu.',r:80000,s:'idea',b:'bi',a:['Mapping Maroc/TN/DZ','Partnership universités','Pipeline candidats']},
{n:'Portage Salarial Tech',d:'Portage freelances tech. Marge 8-12%. Structure juridique nécessaire.',r:50000,s:'idea',b:'bi',a:['Structure juridique','Contrat type','Prospection freelances']},
{n:'Talent Assessment IA',d:'Assessment via WEVIA (tests techniques + soft skills IA). 49€/test.',r:60000,s:'idea',b:'bi',a:['Tests techniques auto','Scoring IA WEVIA','Landing assessment']}
],m:[{l:'Pipeline',v:'290K',s:'4 opps',c:'r'},{l:'LinkedIn Scraper',v:'Actif',s:'DSI/CTO/DG Maroc',c:'e'},{l:'Fee moyen',v:'20%',s:'Annuel',c:'g'}]},
erp:{l:'ERP & SAP',ic:'am',o:[
{n:'Vistex SAP Pricing',d:'Extension Vistex. SAP pricing industriels Maghreb. OCP, Cosumar, Carrefour.',r:200000,s:'wip',b:'bh',a:['Addendum Section 8.B','Prospects OCP/Cosumar','Formation Vistex','Section 3.d']},
{n:'ERP Cloud Migration',d:'Migration legacy → cloud (S/4HANA, Odoo). PME 100-500 employés.',r:150000,s:'plan',b:'bp',a:['Partnership Odoo Maroc','Benchmark S/4 vs Odoo','3 prospects industriels']},
{n:'Process Optimization',d:'Audit processus + ERP. Value Stream Mapping (vsm-pipelines.html).',r:60000,s:'idea',b:'bi',a:['Template audit','Connecter VSM','Offre packagée']},
{n:'Integration API ERP-CRM',d:'Twenty CRM ↔ ERP clients. Middleware WEVAL. booking.html existant.',r:40000,s:'idea',b:'bi',a:['Connecteur Twenty↔SAP','API middleware','Demo intégration']}
],m:[{l:'Pipeline',v:'450K',s:'4 opps',c:'a'},{l:'Partnership',v:'Vistex',s:'SAP Pricing Maghreb',c:'g'},{l:'Prospects',v:'3',s:'OCP·Cosumar·Carrefour',c:'e'}]},
formation:{l:'Formation',ic:'gold',o:[
{n:'IA pour Dirigeants',d:'Programme 2j pratique WEVIA. DG/DSI privé. 15K MAD/session.',r:90000,s:'plan',b:'bp',a:['Programme 2j','Salle Casa','Prospection CGEM','Support WEVIA Arena']},
{n:'Bootcamp DevOps/Cloud',d:'5j Docker, CI/CD, K8s, monitoring. Stack souveraine WEVAL. 8K MAD/participant.',r:60000,s:'idea',b:'bi',a:['Curriculum 5j','Lab Docker WEVAL','Certification']},
{n:'Email Marketing Pro',d:'Formation WEVADS Brain Engine 2j. Deliverability + PMTA. 12K MAD.',r:40000,s:'idea',b:'bi',a:['Contenu deliverability','Cas pratiques','Support post-formation']},
{n:'Academy WEVAL Online',d:'E-learning IA, Cloud, Data, DevOps. 29€/mois. LMS à déployer.',r:80000,s:'idea',b:'bi',a:['Plateforme LMS','5 cours','Landing academy.weval.ma']},
{n:'Certification WEVIA Expert',d:'Certif consultants partenaires. 500€/certification. Réseau.',r:30000,s:'idea',b:'bi',a:['Programme certif','Examen online','Réseau certifiés']}
],m:[{l:'Pipeline',v:'300K',s:'5 opps',c:'g'},{l:'Programmes',v:'5',s:'IA·DevOps·Email·LMS·Certif',c:'a'},{l:'Cible',v:'CGEM',s:'+APEBI+universités',c:'s'}]}
};
// PLAN 90 JOURS (from V1 enriched)
const P90=[
{w:'Semaine 1-2',acts:['Signer Vistex Lead Protection Addendum','Lancer Ethica Pilot DRY_RUN 7611 MG+DZ','Finaliser onboarding ArrowSphere','LinkedIn B2B scraper 50 profils DSI','Landing page WeviaAI.ma mockup','Résolution Huawei Cloud: documenter + escalade']},
{w:'Semaine 3-4',acts:['3 labos pilotes Ethica (Kaouther)','Offre Scaleway packagée + 10 prospects','Setup Stripe pour WEVIA SaaS','Programme formation IA 2j finalisé','MedReach: connecter Ethica data','Package consulting Cloud Migration']},
{w:'Semaine 5-6',acts:['Beta WEVIA SaaS 10 users','SEO Module Hub live + Plausible API','Newsletter B2B: template + 500 subs','Framework Audit Maturité Digitale','Bootcamp DevOps: curriculum 5j','WhatsApp Business API activer']},
{w:'Semaine 7-8',acts:['WEVIA White-label: mockup client','ERP Cloud Migration: partnership Odoo','Deep Research: packager offre','Certification WEVIA: programme','Talent Assessment IA: tests auto','Academy WEVAL: plateforme LMS']},
{w:'Semaine 9-10',acts:['Prospection CGEM 3 formations','Qdrant RAG: package + demo','Cloudflare management: offre client','YouTube Factory: premiers contenus','Value Stream Mapping: offre client','LinkedIn posts: stratégie B2B content']},
{w:'Semaine 11-12',acts:['Bilan Q1: pipeline signé vs objectif','Ajuster pricing toutes offres','Scale WEVADS: +5 winners brain','Réseau certifiés WEVIA: 5 premiers','Solution Finder: A/B test conversion','Growth Engine v4: auto-enrichissement IA']}
];
// SOCIAL CHANNELS
const SOC=[
{name:'LinkedIn B2B',ico:'🔗',status:'Actif',desc:'Scraper Playwright pw_linkedin_b2b.py. Cibles: DSI, CTO, DG Maghreb. DuckDuckGo/Bing profiles sans login.',api:'pw_linkedin_b2b.py + linkedin-posts.php',color:'var(--sa)'},
{name:'YouTube Factory',ico:'▶',status:'Setup',desc:'youtube-factory.php + youtube-factory/api.php. Production contenu IA/Cloud/Consulting.',api:'youtube-factory.php (mode demo)',color:'var(--co)'},
{name:'Telegram Bot',ico:'✈',status:'Actif',desc:'@wevia_cyber_bot, chat_id 7605775322. Alertes monitoring + notifications.',api:'blade-telegram.php + wedroid-telegram-alert.php',color:'var(--sa)'},
{name:'WhatsApp Business',ico:'💬',status:'Config',desc:'Meta Graph API v22.0. Actions: status, send, send_bulk, templates.',api:'whatsapp-api.php (4 actions)',color:'var(--em)'},
{name:'Mattermost',ico:'💜',status:'Live',desc:'Docker port 8065. Communication interne équipe + webhooks.',api:'blade-mattermost.php',color:'var(--vi)'},
{name:'Email Marketing',ico:'📧',status:'Live',desc:'WEVADS Brain Engine 646 configs. PMTA O365. 8 seeds Videotron+T-Online.',api:'wevia-email-api.php + Brain Engine',color:'var(--gold)'},
{name:'Plausible Analytics',ico:'📊',status:'Live',desc:'Docker port 8000. Analytics souverain. Nécessite bearer token config.',api:'Plausible API :8000',color:'var(--em)'},
{name:'Twenty CRM',ico:'🏢',status:'Live',desc:'Docker port 3000. CRM complet pour pipeline commercial.',api:'Twenty :3000 (GraphQL)',color:'var(--cy)'}
];
// CONNECTIONS (21 services)
const CN=[
{n:'Twenty CRM',p:':3000',s:'up'},{n:'Plausible',p:':8000',s:'up'},{n:'SearXNG',p:':8888',s:'up'},
{n:'Mattermost',p:':8065',s:'up'},{n:'Vaultwarden',p:':8222',s:'up'},{n:'Uptime Kuma',p:':3001',s:'up'},
{n:'Qdrant',p:':6333',s:'up'},{n:'Langfuse',p:':3100',s:'up'},{n:'Gitea',p:':3400',s:'up'},
{n:'Prometheus',p:':9090',s:'up'},{n:'WEVIA Master',p:':5899',s:'up'},{n:'Sentinel',p:':5890',s:'up'},
{n:'LiteLLM',p:':4001',s:'up'},{n:'Sovereign API',p:':4000',s:'up'},{n:'PostgreSQL',p:':5432',s:'up'},
{n:'Brain Engine',p:':5821',s:'up'},{n:'Arsenal',p:':5890',s:'up'},{n:'Paperclip',p:'—',s:'dn'},
{n:'MiroFish',p:'—',s:'dn'},{n:'n8n',p:':5678',s:'wr'},{n:'Ollama 5 mod.',p:':11434',s:'up'}
];
const TABS=['dashboard','consulting','digital','cloud','ia','marketing','recruitment','erp','formation','pipeline','plan90','social','scout','connections'];
function mc(m){return `<div class="mc ${m.c}"><div class="mc-l">${m.l}</div><div class="mc-v">${m.v}</div><div class="mc-s">${m.s}</div></div>`;}
function cd(o,mx){
const p=mx?Math.round(o.r/mx*100):0;
const cl=o.b==='bh'?'var(--co)':o.b==='bw'?'var(--gold)':o.b==='bp'?'var(--sa)':'var(--vi)';
let aa='';if(o.a)o.a.forEach(x=>{aa+=`<span class="at" onclick="this.classList.toggle('dn')">${x}</span>`;});
return `<div class="cd"><div class="cd-h"><div class="cd-t">${o.n}</div><span class="bd ${o.b}">${SN[o.s]||o.s}</span></div><div class="cd-d">${o.d}</div>${o.r?`<div class="rv"><div class="rv-b"><div class="rv-f" style="width:${p}%;background:${cl}"></div></div><div class="rv-v">${(o.r/1000|0)}K</div></div>`:''}<div class="ca">${aa}</div></div>`;
}
function buildKB(ops){
const by={idea:[],plan:[],wip:[],sign:[]};ops.forEach(o=>{if(by[o.s])by[o.s].push(o);});
let h='<div class="kb">';
['idea','plan','wip','sign'].forEach(k=>{
const it=by[k]||[];
h+=`<div class="kc"><div class="kh ${SC[k]}">${SN[k]} <span class="n">${it.length}</span></div>`;
it.forEach(o=>{h+=`<div class="ki">${o.n}${o.vl?`<span class="tg">${o.vl}</span>`:''}</div>`;});
if(!it.length)h+=`<div class="ki" style="color:var(--t3)">—</div>`;h+=`</div>`;
});return h+'</div>';
}
function build(){
const nav=document.getElementById('nav');
const tabLabels={dashboard:'Dashboard',pipeline:'Pipeline CRM',plan90:'Plan 90J',social:'Réseaux & Canaux',scout:'Dark Scout',connections:'Connexions'};
const tabColors={dashboard:'var(--gold)',pipeline:'var(--em)',plan90:'var(--am)',social:'var(--sa)',scout:'var(--cy)',connections:'var(--vi)'};
let nh='';
TABS.forEach((t,i)=>{
const on=i===0?' on':'';
if(V[t])nh+=`<div class="vt${on}" data-v="${t}"><span class="dt" style="background:var(--${V[t].ic})"></span>${V[t].l} <span class="ct">${V[t].o.length}</span></div>`;
else nh+=`<div class="vt${on}" data-v="${t}"><span class="dt" style="background:${tabColors[t]||'var(--t3)'}"></span>${tabLabels[t]||t}</div>`;
});
nav.innerHTML=nh;
nav.querySelectorAll('.vt').forEach(t=>{t.onclick=()=>{
nav.querySelectorAll('.vt').forEach(x=>x.classList.remove('on'));t.classList.add('on');
document.querySelectorAll('.sc').forEach(s=>s.classList.remove('on'));
const s=document.getElementById('s-'+t.dataset.v);if(s)s.classList.add('on');
};});
const mn=document.getElementById('mn');
const all=Object.entries(V).flatMap(([k,v])=>v.o.map(o=>({...o,vl:v.l})));
const tot=all.reduce((s,o)=>s+o.r,0);
const byS={idea:0,plan:0,wip:0,sign:0};all.forEach(o=>{if(byS[o.s]!==undefined)byS[o.s]++;});
const VC={consulting:'var(--em)',digital:'var(--sa)',cloud:'var(--cy)',ia:'var(--vi)',marketing:'var(--co)',recruitment:'var(--ro)',erp:'var(--am)',formation:'var(--gold)'};
let h=`<div class="sc on" id="s-dashboard">`;
h+=`<div class="mr">${mc({l:'Pipeline Total',v:(tot/1000|0)+'K MAD',s:all.length+' opps · 8 verticaux',c:'g'})}${mc({l:'En cours',v:byS.wip+'',s:'Deals actifs',c:'e'})}${mc({l:'Planifié',v:byS.plan+'',s:'Préparation',c:'s'})}${mc({l:'Idées',v:byS.idea+'',s:'À explorer',c:'v'})}${mc({l:'HCPs Ethica',v:'126K',s:'110K emails · 64K verified',c:'c'})}${mc({l:'Docker',v:'17',s:'Tous UP',c:'cy'})}${mc({l:'Tools WEVIA',v:'275',s:'Resolver v7.1',c:'v'})}${mc({l:'Pages + APIs',v:'656',s:'168 pages · 438 APIs',c:'a'})}${mc({l:'IA Cascade',v:'0€',s:'7 providers 24/7',c:'r'})}${mc({l:'Crons',v:'57',s:'Actifs S95+S204',c:'g'})}</div>`;
h+=`<div class="cb"><div class="ch"><span class="lv"></span> WEVIA Master — Growth Advisor</div><div class="cm" id="cM"><div class="mg sy">Connecté — 8 verticaux · 275 tools · 438 APIs · 7 providers IA · 126K HCPs. Question ?</div></div><div class="ci"><input id="cI" placeholder="Pricing API HCP ? ROI formation ? Plan recrutement ? Stratégie ERP ?" onkeydown="if(event.key==='Enter')chat()"><button onclick="chat()">Envoyer</button></div></div>`;
h+=`<div class="st">Pipeline global <span class="ln"></span></div>${buildKB(all)}`;
h+=`<div class="st">Revenus par vertical <span class="ln"></span></div>`;
Object.entries(V).forEach(([k,v])=>{
const vr=v.o.reduce((s,o)=>s+o.r,0);const p=tot?Math.round(vr/tot*100):0;
h+=`<div style="display:flex;align-items:center;gap:7px;margin-bottom:5px"><span style="font-size:10px;min-width:75px;color:var(--t2)">${v.l}</span><div class="rv-b" style="flex:1"><div class="rv-f" style="width:${p}%;background:${VC[k]}"></div></div><span class="rv-v">${(vr/1000|0)}K</span></div>`;
});h+=`</div>`;
// VERTICAL SECTIONS
Object.entries(V).forEach(([k,v])=>{
const mx=Math.max(...v.o.map(o=>o.r),1);
h+=`<div class="sc" id="s-${k}"><div class="st">${v.l} <span class="ln"></span></div><div class="mr">${v.m.map(m=>mc(m)).join('')}</div><div class="cg">${v.o.map(o=>cd(o,mx)).join('')}</div></div>`;
});
// PIPELINE CRM
h+=`<div class="sc" id="s-pipeline"><div class="st">Pipeline Commercial — Twenty CRM + WEVAL CRM <span class="ln"></span></div>${buildKB(all)}`;
h+=`<div class="st">Top opportunités par revenu <span class="ln"></span></div><table class="tbl"><thead><tr><th>Opportunité</th><th>Vertical</th><th>Valeur</th><th>Stage</th></tr></thead><tbody>`;
all.filter(o=>o.r>0).sort((a,b)=>b.r-a.r).forEach(o=>{
h+=`<tr><td style="color:var(--t1);font-weight:500">${o.n}</td><td>${o.vl}</td><td style="font-family:var(--fm);color:var(--gold)">${(o.r/1000|0)}K</td><td><span class="bd ${o.b}">${SN[o.s]}</span></td></tr>`;
});h+=`</tbody></table></div>`;
// PLAN 90J
h+=`<div class="sc" id="s-plan90"><div class="st">Plan d'Action — 90 Jours <span class="ln"></span></div>`;
P90.forEach(w=>{
h+=`<div class="p90-w"><div class="p90-h">${w.w}</div>`;
w.acts.forEach(a=>{h+=`<div class="p90-a"><input type="checkbox" onchange="this.parentElement.classList.toggle('done')"><span>${a}</span></div>`;});
h+=`</div>`;
});h+=`</div>`;
// SOCIAL & CHANNELS
h+=`<div class="sc" id="s-social"><div class="st">Réseaux Sociaux & Canaux de Distribution <span class="ln"></span></div><div class="soc">`;
SOC.forEach(s=>{
const stCls=s.status==='Actif'||s.status==='Live'?'bs':s.status==='Setup'||s.status==='Config'?'bw':'bi';
h+=`<div class="soc-c"><div class="soc-h"><span class="soc-ico">${s.ico}</span>${s.name}<span class="bd ${stCls}" style="margin-left:auto">${s.status}</span></div><div class="soc-stat">${s.desc}</div><div class="soc-api">API: ${s.api}</div></div>`;
});h+=`</div></div>`;
// DARK SCOUT
h+=`<div class="sc" id="s-scout"><div class="st">Dark Scout — SearXNG Intelligence <span class="ln"></span></div><div style="display:flex;gap:6px;margin-bottom:12px"><input id="sQ" placeholder="consulting SAP Maroc, email pharma, recrutement DevOps, ERP migration..." style="flex:1;background:var(--bg3);border:1px solid var(--brd);border-radius:5px;padding:7px 9px;color:var(--t1);font-size:10px;font-family:var(--fb);outline:none" onkeydown="if(event.key==='Enter')scout()"><button onclick="scout()" style="padding:7px 14px;border-radius:5px;border:none;background:var(--sa);color:#fff;font-weight:600;font-size:10px;cursor:pointer">Scan</button></div><div class="sr" id="sR"><div style="color:var(--t3);font-size:10px">SearXNG: veille concurrentielle multi-sources</div></div></div>`;
// CONNECTIONS
h+=`<div class="sc" id="s-connections"><div class="st">21 Services connectés <span class="ln"></span></div><div class="cns">${CN.map(c=>`<div class="cn"><div class="cn-d ${c.s}"></div><div class="cn-n">${c.n}</div><div class="cn-p">${c.p}</div></div>`).join('')}</div>`;
h+=`<div class="st">Assets Registry (${new Date().toLocaleDateString('fr')}) <span class="ln"></span></div><table class="tbl"><thead><tr><th>Asset</th><th>Type</th><th>Status</th><th>Mat.</th></tr></thead><tbody id="aB"><tr><td colspan="4" style="color:var(--t3)"><span class="spnr"></span> Chargement registry...</td></tr></tbody></table></div>`;
mn.innerHTML=h;
}
async function loadAssets(){try{const r=await fetch(API+'?action=registry');const d=await r.json();if(d.assets){const b=document.getElementById('aB');if(b)b.innerHTML=d.assets.map(a=>`<tr><td style="color:var(--t1);font-weight:500">${a.name}</td><td>${a.type||'?'}</td><td><span class="bd ${a.status==='live'||a.status==='up'?'bs':'bh'}">${a.status}</span></td><td style="font-family:var(--fm)">${a.maturity||'?'}%</td></tr>`).join('');}}catch(e){}}
async function chat(){const inp=document.getElementById('cI'),q=inp.value.trim();if(!q)return;inp.value='';const m=document.getElementById('cM');m.innerHTML+=`<div class="mg us">${q}</div><div class="mg ai" id="cL"><span class="spnr"></span></div>`;m.scrollTop=m.scrollHeight;try{const r=await fetch(WV,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({message:q,context:'Growth Engine v3. 8 verticaux (consulting/digital/cloud/IA/marketing/recrutement/ERP/formation). Pipeline '+(Object.values(V).reduce((s,v)=>s+v.o.reduce((ss,o)=>ss+o.r,0),0)/1000|0)+'K MAD. 168 pages, 438 APIs, 275 tools, 17 Docker, 57 crons, 7 IA providers 0€, 126K HCPs, 74 agents, 5 Ollama models. Partenaires: Vistex SAP, Arrow/Scaleway, Ethica Kaouther. Social: LinkedIn scraper, YouTube Factory, Telegram bot, WhatsApp Business, Mattermost.',session:'growth-v3'})});const d=await r.json();const el=document.getElementById('cL');if(el)el.outerHTML=`<div class="mg ai">${(d.content||d.response||'—').replace(/\n/g,'<br>')}</div>`;}catch(e){const el=document.getElementById('cL');if(el)el.outerHTML=`<div class="mg ai" style="color:var(--co)">Erreur WEVIA</div>`;}m.scrollTop=m.scrollHeight;}
async function scout(){const q=document.getElementById('sQ').value.trim();if(!q)return;const b=document.getElementById('sR');b.innerHTML='<span class="spnr"></span> SearXNG...';try{const r=await fetch(API+'?action=dark_scout&q='+encodeURIComponent(q));const d=await r.json();if(d.results&&d.results.length)b.innerHTML=d.results.map(r=>`<div class="si2"><div class="si2-t">${r.title||''}</div><div class="si2-u">${r.url||''}</div><div class="si2-s">${r.content||r.snippet||''}</div></div>`).join('');else b.innerHTML=`<div style="color:var(--t3)">0 résultats</div>`;}catch(e){b.innerHTML=`<div style="color:var(--co)">Erreur</div>`;}}
async function fullScan(){const btn=document.querySelector('.sb');btn.innerHTML='<span class="spnr"></span>';btn.disabled=true;try{const r=await fetch(API+'?action=scan');const d=await r.json();const m=document.getElementById('cM');if(m&&d){m.innerHTML+=`<div class="mg ai"><strong>Scan ✓</strong><br>${(d.proposal||d.summary||JSON.stringify(d).substring(0,500)).replace(/\n/g,'<br>')}</div>`;m.scrollTop=m.scrollHeight;}}catch(e){}btn.innerHTML='<span class="ic">&#x21BB;</span> Scan All';btn.disabled=false;loadAssets();}
build();loadAssets();
</script>
</body>
</html>