Files
html/products/stackscan.html
Opus 41a40ff936
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
phase53 doctrine 195 MASS INJECT products subdir 104 pages UX doctrine 60 - total 426 pages
Handler new: /var/www/html/api/inject-products.py
- Mass injection doctrine 60 sur /var/www/html/products/ subfolder
- 104 pages HTML traitees en 1 pass
- GOLD backup systematique: vault-gold/opus/products-NAME.html.doctrine195-TS.bak
- chattr +i/-i atomic handling
- Includes mobile fix responsive bot-widget (doctrine 194 pattern)

Resultats:
- OK=104 ALREADY=0 ERR=0 TOTAL=104 (100 percent success)
- Health checks HTTP 200 sur consulting/leadforge/academy/arsenal/bizplan

Coverage GLOBAL maintenant:
- Root: 322/325 = 99.1 percent (2 exclusions legitimes wevia/monitor)
- Products: 104/104 = 100 percent COMPLETE
- TOTAL: 426 pages UX doctrine 60

Cumul session Opus:
- 45 tags (44+1)
- 35 doctrines vault (146-195)
- 426 pages UX doctrine 60 (was 323, +104)
- NR 153/153 invariant 53 phases

Handler inject-products.py battle-tested - reusable pour autres subdirs.
ZERO regression. ZERO ecrasement.
2026-04-24 15:57:08 +02:00

193 lines
19 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="fr" data-theme="light"><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>StackScan — Audit &amp; inventaire OSS entreprise | WEVAL Consulting</title>
<meta name="description" content="StackScan — Scanner et cartographe de votre écosystème open source. Détecte dépendances, licences, vulnérabilités, versions obsolètes. Recommandations d Part of WEVIA Enterprise suite.">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet">
<script>(function(){var t=localStorage.getItem('weval-theme')||'light';document.documentElement.setAttribute('data-theme',t);})();</script>
<style>
:root{--bg:#ffffff;--bg-alt:#fafbfc;--surface:#ffffff;--text:#1a1f3a;--text-soft:#5a6480;--text-dim:#8893a8;--border:rgba(26,31,58,.08);--border-mid:rgba(26,31,58,.14);--shadow:0 1px 3px rgba(26,31,58,.04),0 8px 24px rgba(26,31,58,.04);--shadow-hover:0 2px 6px rgba(26,31,58,.06),0 16px 40px rgba(26,31,58,.08);--a:#0d9488;--a-soft:rgba(13,148,136,.08);--btn-p:#5b4cdb;--btn-p-h:#4a3dc4}
html[data-theme="dark"]{--bg:#05080f;--bg-alt:#080c18;--surface:#0c1222;--text:#edf2f7;--text-soft:#a8b4c8;--text-dim:#7a8ba5;--border:rgba(255,255,255,.06);--border-mid:rgba(255,255,255,.12);--shadow:0 1px 3px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.3);--shadow-hover:0 2px 6px rgba(0,0,0,.4),0 16px 40px rgba(0,0,0,.4);--a:#00c9a7;--a-soft:rgba(0,201,167,.12);--btn-p:#7c5cfc;--btn-p-h:#9277ff}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:'Inter',sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;transition:background .3s,color .3s}
body::before{content:'';position:fixed;inset:0;background-image:radial-gradient(circle at 20% 10%,var(--a-soft) 0%,transparent 40%),radial-gradient(circle at 80% 60%,var(--a-soft) 0%,transparent 45%);pointer-events:none;opacity:.6;z-index:-1;transition:opacity .3s}
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:color-mix(in srgb,var(--bg) 85%,transparent);border-bottom:1px solid var(--border)}
.logo{font-weight:800;font-size:1.35rem;letter-spacing:-.035em;display:flex;align-items:center;gap:.5rem;color:var(--text);text-decoration:none}
.logo-dot{width:10px;height:10px;border-radius:50%;background:var(--a);box-shadow:0 0 18px var(--a-soft)}
.nav-r{display:flex;gap:1.6rem;align-items:center}
.nav-r a{color:var(--text-soft);text-decoration:none;font-size:.86rem;font-weight:500;transition:color .25s}
.nav-r a:hover{color:var(--a)}
.btn-n,a.btn-n{background:var(--btn-p) !important;color:#ffffff !important;padding:.6rem 1.3rem;border-radius:8px;font-weight:600;font-size:.84rem;text-decoration:none !important;transition:all .2s;border:none;cursor:pointer;display:inline-block}
.btn-n:hover,a.btn-n:hover{background:var(--btn-p-h) !important;color:#ffffff !important;transform:translateY(-1px)}
.theme-toggle{width:38px;height:38px;border-radius:50%;background:var(--bg-alt);border:1px solid var(--border);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;color:var(--text-soft)}
.theme-toggle:hover{border-color:var(--a);color:var(--a);transform:translateY(-1px)}
.theme-toggle svg{width:18px;height:18px}
html[data-theme="light"] .icon-moon{display:none}
html[data-theme="dark"] .icon-sun{display:none}
.hero{min-height:92vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:9rem 4% 5rem;position:relative;overflow:hidden}
.badge{display:inline-flex;align-items:center;gap:.5rem;background:var(--a-soft);border:1px solid var(--a-soft);border-radius:100px;padding:.42rem 1.05rem;font-size:.72rem;font-weight:700;color:var(--a);margin-bottom:2rem;font-family:'Space Mono',monospace;letter-spacing:.05em}
.badge::before{content:'';width:6px;height:6px;background:var(--a);border-radius:50%;animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
h1{font-size:clamp(2.4rem,5vw,4.1rem);font-weight:800;line-height:1.04;letter-spacing:-.04em;max-width:900px;margin-bottom:1.5rem;color:var(--text)}
h1 em{font-style:normal;color:var(--a)}
.sub{font-size:clamp(1rem,1.2vw,1.1rem);color:var(--text-soft);max-width:700px;line-height:1.65;margin-bottom:2.5rem;font-weight:400}
.btns{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center}
.btn-p{background:var(--btn-p);color:#fff;padding:.95rem 2rem;border-radius:10px;font-weight:600;font-size:.9rem;text-decoration:none;transition:all .25s;display:inline-flex;align-items:center;gap:.4rem;box-shadow:0 4px 12px color-mix(in srgb,var(--btn-p) 25%,transparent)}
.btn-p:hover{background:var(--btn-p-h);transform:translateY(-2px);box-shadow:0 8px 24px color-mix(in srgb,var(--btn-p) 30%,transparent)}
.btn-o{background:transparent;color:var(--text);padding:.95rem 2rem;border-radius:10px;font-weight:500;font-size:.9rem;text-decoration:none;border:1px solid var(--border-mid);transition:all .25s;display:inline-flex;align-items:center;gap:.4rem}
.btn-o:hover{border-color:var(--a);color:var(--a);background:var(--a-soft)}
.suite-chip{display:inline-flex;align-items:center;gap:.5rem;margin-top:1.5rem;padding:.38rem .95rem;background:var(--bg-alt);border:1px solid var(--border);border-radius:100px;font-size:.74rem;color:var(--text-soft);font-family:'Space Mono',monospace;font-weight:600;letter-spacing:.04em;text-decoration:none;transition:all .2s}
.suite-chip:hover{color:var(--a);border-color:var(--a)}
.sec{padding:5.5rem 4%;max-width:1180px;margin:0 auto}
.sec.alt{background:var(--bg-alt);max-width:none;padding-left:max(4%,calc((100% - 1180px) / 2));padding-right:max(4%,calc((100% - 1180px) / 2))}
.stag{font-family:'Space Mono',monospace;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.22em;color:var(--a);margin-bottom:1rem;display:inline-block}
h2{font-size:clamp(1.8rem,2.8vw,2.4rem);font-weight:800;letter-spacing:-.032em;line-height:1.1;margin-bottom:.9rem;max-width:700px;color:var(--text)}
h2 em{font-style:normal;color:var(--a)}
.sd{color:var(--text-soft);font-size:1rem;line-height:1.65;max-width:600px;margin-bottom:3rem;font-weight:400}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;margin:2rem 0 3rem;box-shadow:var(--shadow)}
.stat{padding:1.6rem 1rem;text-align:center;border-right:1px solid var(--border)}
.stat:last-child{border-right:none}
.stat-n{font-family:'Space Mono',monospace;font-size:1.35rem;font-weight:700;color:var(--a);line-height:1}
.stat-l{font-size:.72rem;color:var(--text-soft);margin-top:.5rem;text-transform:uppercase;letter-spacing:.1em;font-weight:500}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:1.5rem}
.fcd{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1.7rem;transition:all .3s;position:relative;overflow:hidden;box-shadow:var(--shadow)}
.fcd::before{content:'';position:absolute;top:0;left:0;width:3px;height:100%;background:var(--a);opacity:0;transition:opacity .3s}
.fcd:hover{border-color:var(--a);transform:translateY(-3px);box-shadow:var(--shadow-hover)}
.fcd:hover::before{opacity:1}
.fcd h3{font-size:1.02rem;font-weight:700;margin-bottom:.55rem;letter-spacing:-.01em;color:var(--text)}
.fcd p{font-size:.87rem;color:var(--text-soft);line-height:1.6}
.suite-box{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:2.2rem;display:grid;grid-template-columns:1.2fr .8fr;gap:2.2rem;align-items:center;margin-top:2rem;box-shadow:var(--shadow)}
.suite-box-l h3{font-size:1.35rem;font-weight:700;margin-bottom:.7rem;letter-spacing:-.02em;color:var(--text)}
.suite-box-l p{color:var(--text-soft);font-size:.94rem;line-height:1.6;margin-bottom:1.2rem}
.suite-box-r{display:flex;flex-wrap:wrap;gap:.4rem}
.apptag{background:var(--bg-alt);border:1px solid var(--border);border-radius:6px;padding:.32rem .7rem;font-size:.72rem;color:var(--text);font-family:'Space Mono',monospace;font-weight:500}
.apptag.self{background:var(--a-soft);color:var(--a);border-color:var(--a)}
.cta{text-align:center;padding:4.5rem 2rem;margin:3rem 4% 2rem;background:var(--bg-alt);border:1px solid var(--border);border-radius:22px;position:relative;overflow:hidden;max-width:1100px;margin-left:auto;margin-right:auto}
.cta h2{margin:0 auto .9rem}
.cta p{color:var(--text-soft);max-width:560px;margin:0 auto 2rem}
footer{padding:2.5rem 4% 1.5rem;max-width:1180px;margin:2rem auto 0;border-top:1px solid var(--border)}
.foot-t{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:1rem}
.foot-t .logo{font-size:1.1rem}
.foot-links{display:flex;gap:1.5rem;font-size:.85rem}
.foot-links a{color:var(--text-soft);text-decoration:none;transition:color .2s}
.foot-links a:hover{color:var(--a)}
.foot-b{font-size:.74rem;color:var(--text-dim);font-family:'Space Mono',monospace;letter-spacing:.04em}
@media(max-width:900px){h1{font-size:2.2rem}.stats{grid-template-columns:1fr 1fr}.stat:nth-child(odd){border-right:1px solid var(--border)}.stat:nth-child(even){border-right:none}.stat{border-bottom:1px solid var(--border)}.g3{grid-template-columns:1fr}.suite-box{grid-template-columns:1fr;padding:1.6rem}.nav-r a:not(.btn-n):not(.theme-toggle){display:none}}
@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}}
</style>
<script>if(window!==window.top)document.documentElement.classList.add('in-iframe');</script>
<link rel="canonical" href="https://weval-consulting.com/products/stackscan.html">
<meta property="og:title" content="StackScan — Audit &amp; inventaire OSS entreprise">
<meta property="og:description" content="StackScan — Scanner et cartographe de votre écosystème open source. Détecte dépendances, licences, vulnérabilités, versions obsolètes. Recommandations d">
<meta property="og:url" content="https://weval-consulting.com/products/stackscan.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="StackScan — Audit &amp; inventaire OSS entreprise">
<meta name="twitter:description" content="StackScan — Scanner et cartographe de votre écosystème open source. Détecte dépendances, licences, vulnérabilités, versions obsolètes. Recommandations d">
<!-- DOCTRINE-60-UX-ENRICH products-batch-doctrine195 -->
<style id="wtp-doctrine60-ux-premium">
:root {
--wtp-bg-start:#0a0f1c; --wtp-bg-end:#0f172a;
--wtp-surface:rgba(15,23,42,.85); --wtp-surface-hover:rgba(30,41,59,.9);
--wtp-border:rgba(99,102,241,.25); --wtp-border-hover:rgba(99,102,241,.5);
--wtp-text:#e2e8f0; --wtp-text-dim:#94a3b8; --wtp-text-bright:#f1f5f9;
--wtp-primary:#6366f1; --wtp-primary-hover:#7c7feb;
--wtp-accent:#8b5cf6; --wtp-success:#10b981; --wtp-warning:#f59e0b; --wtp-danger:#ef4444;
--wtp-radius:12px; --wtp-shadow:0 4px 24px rgba(99,102,241,.15); --wtp-shadow-lg:0 8px 48px rgba(99,102,241,.25);
--wtp-transition:all .2s cubic-bezier(.4,0,.2,1);
--wtp-font:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;
--wtp-font-mono:'JetBrains Mono',monospace;
}
.wtp-card{background:var(--wtp-surface);border:1px solid var(--wtp-border);border-radius:var(--wtp-radius);padding:20px;transition:var(--wtp-transition)}
.wtp-card:hover{border-color:var(--wtp-border-hover);box-shadow:var(--wtp-shadow)}
.wtp-btn{background:linear-gradient(135deg,var(--wtp-primary),var(--wtp-accent));color:#fff;padding:10px 20px;border:none;border-radius:8px;cursor:pointer;font-weight:600;transition:var(--wtp-transition)}
.wtp-btn:hover{transform:translateY(-1px);box-shadow:var(--wtp-shadow)}
.wtp-badge{display:inline-flex;align-items:center;padding:4px 10px;background:var(--wtp-surface);border:1px solid var(--wtp-border);border-radius:20px;font-size:12px;color:var(--wtp-text-dim)}
@media (max-width:768px){#weval-bot-widget{bottom:100px !important;right:16px !important;z-index:10001 !important}#weval-bot-btn{width:48px !important;height:48px !important}#weval-bot-btn svg{width:22px !important;height:22px !important}#footer_banner,.footer-banner,[class*="footer-bandeau"]{z-index:9990 !important}}
</style>
</head><body>
<nav>
<a class="logo" href="/"><span class="logo-dot"></span>StackScan<span style="color:var(--a)">.</span></a>
<div class="nav-r">
<a href="/">Accueil</a>
<a href="/products/">Produits</a>
<a href="/marketplace">Marketplace</a>
<button class="theme-toggle" onclick="(function(){var c=document.documentElement.getAttribute('data-theme')==='dark'?'light':'dark';document.documentElement.setAttribute('data-theme',c);localStorage.setItem('weval-theme',c);})()" aria-label="Basculer thème jour/nuit">
<svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41"/></svg>
<svg class="icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
</button>
<a href="#cta" class="btn-n">Demander une démo →</a>
</div>
</nav>
<section class="hero">
<div class="badge">Open Source Discovery · Live</div>
<h1>Votre stack open source,<br><em>en pleine lumière.</em></h1>
<p class="sub">Scanner et cartographe de votre écosystème open source. Détecte dépendances, licences, vulnérabilités, versions obsolètes. Recommandations de remédiation priorisées par impact et effort.</p>
<div class="btns">
<a href="#cta" class="btn-p">Demander une démo →</a>
<a href="/solutions/wevia-enterprise.html" class="btn-o">Explorer la suite</a>
</div>
<a href="/solutions/wevia-enterprise.html" class="suite-chip">▸ Composant de la suite WEVIA Enterprise</a>
</section>
<section class="sec">
<div class="stag">// Métriques clés</div>
<h2>La <em>performance</em>, chiffrée.</h2>
<div class="stats"><div class="stat"><div class="stat-n">Licences</div><div class="stat-l">SPDX complet</div></div><div class="stat"><div class="stat-n">CVE</div><div class="stat-l">Temps réel</div></div><div class="stat"><div class="stat-n">SBOM</div><div class="stat-l">CycloneDX</div></div><div class="stat"><div class="stat-n">Priorisation</div><div class="stat-l">Impact × effort</div></div></div>
</section>
<section class="sec alt">
<div class="stag">// Capacités</div>
<h2>Ce que StackScan <em>fait pour vous.</em></h2>
<p class="sd">Fonctionnalités clés, livrées en production. Chaque capacité est éprouvée en conditions réelles et maintenue sous standard Six Sigma L99.</p>
<div class="g3"><div class="fcd"><h3>SBOM automatique</h3><p>Génération Software Bill of Materials au format CycloneDX ou SPDX, exports continus.</p></div><div class="fcd"><h3>Licences &amp;amp; conformité</h3><p>Détection de toutes licences, alertes sur incompatibilités et contraintes juridiques.</p></div><div class="fcd"><h3>CVE temps réel</h3><p>Scanning continu des vulnérabilités, alertes proactives, corrélation avec contexte.</p></div><div class="fcd"><h3>Priorisation intelligente</h3><p>Impact business × effort de remédiation = file dattente dactions claire.</p></div><div class="fcd"><h3>Intégration CI/CD</h3><p>Hooks GitHub Actions, GitLab CI, Jenkins — bloque les déploiements non conformes.</p></div><div class="fcd"><h3>Dashboard exécutif</h3><p>Vue directeur du risque OSS, tendances, score santé de chaque composant métier.</p></div></div>
</section>
<section class="sec">
<div class="stag">// Écosystème</div>
<h2>Intégré dans <em>WEVIA Enterprise.</em></h2>
<p class="sd">StackScan sinscrit dans la suite WEVIA Enterprise, conçue pour linteropérabilité. Chaque application de la suite communique nativement, partage données et événements, amplifie la valeur des autres.</p>
<div class="suite-box">
<div class="suite-box-l">
<h3>Suite WEVIA Enterprise</h3>
<p>Lécosystème dIA souveraine propriétaire WEVAL. Agent autonome, inférence GPU dédiée, orchestration multi-agents, whiteboard collaboratif, audit de stack, automatisation desktop — une stack complète, interopérable, souveraine.</p>
<a href="/solutions/wevia-enterprise.html" class="btn-o" style="padding:.6rem 1.2rem;font-size:.82rem">Voir la suite complète →</a>
</div>
<div class="suite-box-r"><span class="apptag">WEVIA EM</span><span class="apptag">WEVIA Master</span><span class="apptag">WEVIA Inference</span><span class="apptag">WEVIA Life</span><span class="apptag">WEVIA White-Label</span><span class="apptag">ProjectFlow</span><span class="apptag">ResearchFlow</span><span class="apptag">BoardFlow</span><span class="apptag">Blade AI</span><span class="apptag self">StackScan</span><span class="apptag">WEVIA Desk</span></div>
</div>
</section>
<div class="cta" id="cta">
<div class="stag" style="text-align:center;display:block">// Commencer</div>
<h2>Prêt à <em>essayer StackScan</em> ?</h2>
<p>Démonstration personnalisée sur vos données. Diagnostic cas dusage, scoping technique, proposition de déploiement en 45 minutes.</p>
<div class="btns">
<a href="/#contact" class="btn-p">Réserver une démo →</a>
<a href="/marketplace" class="btn-o">Voir le catalogue complet</a>
</div>
</div>
<footer>
<div class="foot-t">
<a class="logo" href="/"><span class="logo-dot"></span>WEVAL<span style="color:var(--a)">.</span></a>
<div class="foot-links">
<a href="/">Accueil</a>
<a href="/products/">Produits</a>
<a href="/marketplace">Marketplace</a>
<a href="/#contact">Contact</a>
<a href="https://www.linkedin.com/company/weval" target="_blank" rel="noopener" aria-label="LinkedIn" style="display:inline-flex;align-items:center;gap:.35rem"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14zM8.339 18.337V9.886H5.67v8.451h2.669zM7.003 8.687a1.549 1.549 0 1 0 0-3.097 1.549 1.549 0 0 0 0 3.097zm11.335 9.65v-4.637c0-2.475-1.332-3.625-3.109-3.625-1.434 0-2.076.788-2.436 1.342v-1.152H10.12c.037.778 0 8.451 0 8.451h2.673v-4.72c0-.24.017-.48.088-.652.193-.479.631-.975 1.367-.975.964 0 1.35.734 1.35 1.811v4.537h2.672z"/></svg> LinkedIn</a>
</div>
</div>
<div class="foot-b">© 2026 WEVAL Consulting · Cabinet de conseil &amp; éditeur IA souveraine · Partenaire Écosystème SAP · Huawei Cloud Certified</div>
</footer>
</body></html>