755 lines
34 KiB
HTML
755 lines
34 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Huawei Cloud — Infrastructure & IA | WEVAL</title>
|
|
<meta name="description" content="Partenaire officiel Huawei Cloud - GPU, IA, Kubernetes, Database - Tarifs négociés -40%">
|
|
<script src="https://js.stripe.com/v3/"></script>
|
|
<style>
|
|
* {margin:0;padding:0;box-sizing:border-box}
|
|
body {
|
|
font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
|
|
background:linear-gradient(135deg,#0a0d14 0%,#151923 100%);
|
|
color:#e2e8f0;
|
|
min-height:100vh;
|
|
padding:2rem 1rem;
|
|
}
|
|
.container {max-width:1600px;margin:0 auto}
|
|
|
|
.header {text-align:center;margin-bottom:3rem}
|
|
.header h1 {font-size:2.8rem;font-weight:800;color:#fff;margin-bottom:0.5rem}
|
|
.header p {color:#94a3b8;font-size:1.2rem}
|
|
.innovation-badge {
|
|
display:inline-block;
|
|
margin-top:1rem;
|
|
padding:0.5rem 1.5rem;
|
|
background:linear-gradient(135deg,#e94560,#c13349);
|
|
color:white;
|
|
border-radius:20px;
|
|
font-size:0.9rem;
|
|
font-weight:700;
|
|
}
|
|
|
|
.cert-banner {
|
|
background:rgba(233,69,96,0.1);
|
|
border:1px solid rgba(233,69,96,0.3);
|
|
border-radius:16px;
|
|
padding:2rem;
|
|
margin-bottom:3rem;
|
|
display:grid;
|
|
grid-template-columns:250px 1fr 180px;
|
|
gap:2rem;
|
|
align-items:center;
|
|
}
|
|
.cert-img {max-width:100%;border-radius:12px;box-shadow:0 10px 40px rgba(0,0,0,0.3)}
|
|
.cert-info h3 {font-size:1.2rem;color:#e94560;margin-bottom:0.5rem}
|
|
.cert-info p {color:#94a3b8;line-height:1.6;font-size:0.95rem}
|
|
.qr-mini img {width:140px;border-radius:12px;background:white;padding:0.5rem}
|
|
.qr-mini small {display:block;margin-top:0.5rem;color:#64748b;font-size:0.75rem;text-align:center}
|
|
|
|
.products-section {margin:4rem 0}
|
|
.section-title {
|
|
text-align:center;
|
|
font-size:2.2rem;
|
|
font-weight:700;
|
|
color:#fff;
|
|
margin-bottom:0.5rem;
|
|
}
|
|
.section-subtitle {
|
|
text-align:center;
|
|
color:#94a3b8;
|
|
margin-bottom:3rem;
|
|
font-size:1.1rem;
|
|
}
|
|
|
|
.products-grid {
|
|
display:grid;
|
|
grid-template-columns:repeat(auto-fill,minmax(340px,1fr));
|
|
gap:1.8rem;
|
|
margin-bottom:3rem;
|
|
}
|
|
|
|
.product-card {
|
|
background:rgba(255,255,255,0.03);
|
|
border:1px solid rgba(255,255,255,0.1);
|
|
border-radius:16px;
|
|
padding:1.8rem;
|
|
transition:all 0.3s;
|
|
position:relative;
|
|
}
|
|
.product-card:hover {
|
|
transform:translateY(-5px);
|
|
border-color:rgba(233,69,96,0.5);
|
|
box-shadow:0 20px 60px rgba(233,69,96,0.2);
|
|
}
|
|
|
|
.badge {
|
|
position:absolute;
|
|
top:-10px;
|
|
right:15px;
|
|
padding:0.3rem 0.9rem;
|
|
border-radius:20px;
|
|
font-size:0.7rem;
|
|
font-weight:700;
|
|
text-transform:uppercase;
|
|
}
|
|
.badge.popular {background:#e94560;color:white}
|
|
.badge.new {background:#22c55e;color:white}
|
|
.badge.ai {background:#8b5cf6;color:white}
|
|
.badge.hot {background:#f59e0b;color:white}
|
|
|
|
.product-header h3 {
|
|
font-size:1.3rem;
|
|
color:#fff;
|
|
margin-bottom:0.4rem;
|
|
}
|
|
.product-category {
|
|
color:#64748b;
|
|
font-size:0.8rem;
|
|
text-transform:uppercase;
|
|
letter-spacing:0.1em;
|
|
margin-bottom:1rem;
|
|
}
|
|
|
|
.product-specs {
|
|
background:rgba(0,0,0,0.3);
|
|
border-radius:10px;
|
|
padding:1.2rem;
|
|
margin:1.2rem 0;
|
|
}
|
|
.spec-row {
|
|
display:flex;
|
|
justify-content:space-between;
|
|
padding:0.4rem 0;
|
|
border-bottom:1px solid rgba(255,255,255,0.05);
|
|
font-size:0.85rem;
|
|
}
|
|
.spec-row:last-child {border:none}
|
|
.spec-label {color:#94a3b8}
|
|
.spec-value {color:#38bdf8;font-weight:600}
|
|
|
|
.product-price {
|
|
display:flex;
|
|
align-items:baseline;
|
|
gap:0.5rem;
|
|
margin:1.2rem 0;
|
|
}
|
|
.price-amount {
|
|
font-size:2.2rem;
|
|
font-weight:800;
|
|
color:#22c55e;
|
|
}
|
|
.price-period {color:#64748b;font-size:0.9rem}
|
|
.price-original {
|
|
color:#64748b;
|
|
text-decoration:line-through;
|
|
font-size:1.1rem;
|
|
}
|
|
|
|
.product-features {
|
|
list-style:none;
|
|
margin:1.2rem 0;
|
|
}
|
|
.product-features li {
|
|
padding:0.4rem 0;
|
|
color:#cbd5e1;
|
|
display:flex;
|
|
align-items:center;
|
|
gap:0.5rem;
|
|
font-size:0.85rem;
|
|
}
|
|
.product-features li::before {
|
|
content:'✓';
|
|
color:#22c55e;
|
|
font-weight:700;
|
|
}
|
|
|
|
.btn-buy {
|
|
width:100%;
|
|
padding:0.9rem;
|
|
background:linear-gradient(135deg,#e94560 0%,#c13349 100%);
|
|
color:white;
|
|
border:none;
|
|
border-radius:10px;
|
|
font-size:1rem;
|
|
font-weight:700;
|
|
cursor:pointer;
|
|
transition:all 0.3s;
|
|
}
|
|
.btn-buy:hover {
|
|
transform:scale(1.02);
|
|
box-shadow:0 10px 40px rgba(233,69,96,0.4);
|
|
}
|
|
|
|
.features-grid {
|
|
display:grid;
|
|
grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
|
|
gap:1.3rem;
|
|
margin-top:3rem;
|
|
}
|
|
.feature-card {
|
|
background:rgba(233,69,96,0.1);
|
|
border:1px solid rgba(233,69,96,0.3);
|
|
border-radius:12px;
|
|
padding:1.3rem;
|
|
text-align:center;
|
|
}
|
|
.feature-icon {font-size:1.8rem;margin-bottom:0.5rem}
|
|
.feature-card h4 {color:#e94560;margin-bottom:0.5rem;font-size:0.95rem}
|
|
.feature-card p {color:#94a3b8;font-size:0.85rem}
|
|
|
|
.footer {
|
|
text-align:center;
|
|
margin-top:4rem;
|
|
padding-top:2rem;
|
|
border-top:1px solid rgba(255,255,255,0.1);
|
|
color:#64748b;
|
|
}
|
|
.back-link {
|
|
display:inline-block;
|
|
margin:1rem 0.5rem;
|
|
padding:0.75rem 1.5rem;
|
|
background:rgba(255,255,255,0.05);
|
|
border-radius:8px;
|
|
color:#94a3b8;
|
|
text-decoration:none;
|
|
transition:all 0.3s;
|
|
}
|
|
.back-link:hover {
|
|
background:rgba(233,69,96,0.2);
|
|
color:#e94560;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.cert-banner {grid-template-columns:1fr;text-align:center}
|
|
.products-grid {grid-template-columns:1fr}
|
|
}
|
|
</style>
|
|
<!-- DOCTRINE-60-UX-ENRICH direct-inject-20260424-143847 -->
|
|
<style id="doctrine60-ux-direct">
|
|
|
|
/* DOCTRINE-60-UX-ENRICH injected-direct */
|
|
body::before {
|
|
content: '';
|
|
position: fixed;
|
|
top: 0; left: 0; width: 100vw; height: 100vh;
|
|
background: radial-gradient(circle at 50% 50%, rgba(100,180,255,0.08), transparent 60%);
|
|
pointer-events: none;
|
|
z-index: -1;
|
|
}
|
|
.card, .kpi, .panel, .btn {
|
|
transition: all 0.3s cubic-bezier(0.2,0,0.1,1);
|
|
}
|
|
.card:hover, .kpi:hover, .panel:hover {
|
|
box-shadow: 0 4px 20px rgba(100,180,255,0.2);
|
|
border-color: rgba(100,180,255,0.5);
|
|
}
|
|
@keyframes pulseD60 {
|
|
0%,100% { opacity: 1; transform: scale(1); }
|
|
50% { opacity: 0.7; transform: scale(1.05); }
|
|
}
|
|
.pulse, .live-indicator, .active, .online {
|
|
animation: pulseD60 3s ease-in-out infinite;
|
|
}
|
|
.modal, .chat, .speech, .overlay {
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
}
|
|
.enter-stagger {
|
|
animation: enterStagD60 0.5s cubic-bezier(0.2,0,0.1,1) forwards;
|
|
}
|
|
@keyframes enterStagD60 {
|
|
from { opacity: 0; transform: translateY(20px); }
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
|
|
</style>
|
|
<!-- DOCTRINE-222-KILL-PULSED60 -->
|
|
<style>
|
|
@keyframes pulseD60 { 0%,100%,50% { opacity: 1; transform: scale(1); } }
|
|
.pulse, .live-indicator, .active, .online { animation: none !important; }
|
|
</style>
|
|
<!-- END-DOCTRINE-222 -->
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="header">
|
|
<h1>🌐 Huawei Cloud — Partenaire Officiel</h1>
|
|
<p>Infrastructure Souveraine • Technologies IA • Tarifs Négociés -40%</p>
|
|
<span class="innovation-badge">✨ 11 Solutions Cloud & IA</span>
|
|
</div>
|
|
|
|
<div class="cert-banner">
|
|
<div style="text-align:center">
|
|
<img src="/products/images/huawei/weval-cert.png" alt="Certificat WEVAL" class="cert-img">
|
|
</div>
|
|
<div class="cert-info">
|
|
<h3>📜 Standard Cloud Solution Provider</h3>
|
|
<p><strong>WEVAL CONSULTING</strong> — Partenaire officiel Huawei Cloud certifié. Accès direct aux tarifs partenaires négociés avec accompagnement personnalisé.</p>
|
|
<p style="margin-top:0.8rem;font-size:0.8rem">Certificat #202512583509DC • Valide jusqu'au 31 janvier 2026</p>
|
|
</div>
|
|
<div class="qr-mini">
|
|
<img src="/products/images/huawei/affiliate-qr.jpg" alt="QR Code">
|
|
<small>Scanner pour acheter</small>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="products-section">
|
|
<h2 class="section-title">Catalogue Produits</h2>
|
|
<p class="section-subtitle">GPU, IA, Kubernetes, Database, Serverless & Tokens API</p>
|
|
|
|
<div class="products-grid">
|
|
<!-- 1. Inference Tokens API -->
|
|
<div class="product-card">
|
|
<span class="badge hot">🔥 Tokens IA</span>
|
|
<div class="product-header">
|
|
<h3>Inference Tokens — API IA</h3>
|
|
<div class="product-category">Huawei Cloud • AI API</div>
|
|
</div>
|
|
<div class="product-specs">
|
|
<div class="spec-row"><span class="spec-label">Models</span><span class="spec-value">20+ LLM</span></div>
|
|
<div class="spec-row"><span class="spec-label">Tokens</span><span class="spec-value">1M inclus</span></div>
|
|
<div class="spec-row"><span class="spec-label">Latence</span><span class="spec-value"><50ms</span></div>
|
|
<div class="spec-row"><span class="spec-label">API</span><span class="spec-value">REST + SDK</span></div>
|
|
</div>
|
|
<div class="product-price">
|
|
<span class="price-amount">€25</span>
|
|
<span class="price-period">/mois</span>
|
|
</div>
|
|
<ul class="product-features">
|
|
<li>LLM: Llama, Qwen, Claude, GPT</li>
|
|
<li>Embedding + RAG ready</li>
|
|
<li>1M tokens/mois inclus</li>
|
|
<li>Dashboard analytics temps réel</li>
|
|
</ul>
|
|
<button class="btn-buy" onclick="buyProduct('inference_tokens', 2500)">🛒 Acheter Tokens</button>
|
|
</div>
|
|
|
|
<!-- 2. GPU A100 -->
|
|
<div class="product-card">
|
|
<span class="badge popular">⭐ Plus vendu</span>
|
|
<div class="product-header">
|
|
<h3>GPU A100 — IA & ML</h3>
|
|
<div class="product-category">Huawei ECS • GPU Instance</div>
|
|
</div>
|
|
<div class="product-specs">
|
|
<div class="spec-row"><span class="spec-label">GPU</span><span class="spec-value">NVIDIA A100 40GB</span></div>
|
|
<div class="spec-row"><span class="spec-label">vCPU</span><span class="spec-value">96 cores</span></div>
|
|
<div class="spec-row"><span class="spec-label">RAM</span><span class="spec-value">768 GB</span></div>
|
|
<div class="spec-row"><span class="spec-label">Stockage</span><span class="spec-value">2TB NVMe</span></div>
|
|
</div>
|
|
<div class="product-price">
|
|
<span class="price-amount">€2,40</span>
|
|
<span class="price-period">/h</span>
|
|
<span class="price-original">€3,80</span>
|
|
</div>
|
|
<ul class="product-features">
|
|
<li>TensorFlow & PyTorch</li>
|
|
<li>ModelArts intégré</li>
|
|
<li>25 Gbps réseau</li>
|
|
<li>Support 24/7</li>
|
|
</ul>
|
|
<button class="btn-buy" onclick="buyProduct('gpu_a100', 240)">🛒 Commander</button>
|
|
</div>
|
|
|
|
<!-- 3. ModelArts -->
|
|
<div class="product-card">
|
|
<span class="badge ai">🤖 IA</span>
|
|
<div class="product-header">
|
|
<h3>ModelArts — Plateforme IA</h3>
|
|
<div class="product-category">Huawei Cloud • AI Platform</div>
|
|
</div>
|
|
<div class="product-specs">
|
|
<div class="spec-row"><span class="spec-label">Models</span><span class="spec-value">100+ pré-entraînés</span></div>
|
|
<div class="spec-row"><span class="spec-label">Training</span><span class="spec-value">Distribué auto</span></div>
|
|
<div class="spec-row"><span class="spec-label">Deploy</span><span class="spec-value">1-click</span></div>
|
|
<div class="spec-row"><span class="spec-label">AutoML</span><span class="spec-value">Inclus</span></div>
|
|
</div>
|
|
<div class="product-price">
|
|
<span class="price-amount">€1,20</span>
|
|
<span class="price-period">/h GPU</span>
|
|
</div>
|
|
<ul class="product-features">
|
|
<li>Jupyter managé</li>
|
|
<li>Data labeling</li>
|
|
<li>MLOps complet</li>
|
|
<li>API inference</li>
|
|
</ul>
|
|
<button class="btn-buy" onclick="buyProduct('modelarts', 120)">🛒 Commander</button>
|
|
</div>
|
|
|
|
<!-- 4. Cloud Stack -->
|
|
<div class="product-card">
|
|
<span class="badge new">✨ Innovation</span>
|
|
<div class="product-header">
|
|
<h3>Cloud Stack — Hybrid</h3>
|
|
<div class="product-category">Huawei Cloud • Infrastructure</div>
|
|
</div>
|
|
<div class="product-specs">
|
|
<div class="spec-row"><span class="spec-label">Deploy</span><span class="spec-value">On-premise</span></div>
|
|
<div class="spec-row"><span class="spec-label">Nodes</span><span class="spec-value">3-100+ servers</span></div>
|
|
<div class="spec-row"><span class="spec-label">Mgmt</span><span class="spec-value">Cloud console</span></div>
|
|
<div class="spec-row"><span class="spec-label">Support</span><span class="spec-value">24/7 Premium</span></div>
|
|
</div>
|
|
<div class="product-price">
|
|
<span class="price-amount">€4,500</span>
|
|
<span class="price-period">/mois</span>
|
|
</div>
|
|
<ul class="product-features">
|
|
<li>API compatible Cloud</li>
|
|
<li>Migration bi-dir</li>
|
|
<li>Souveraineté totale</li>
|
|
<li>RGPD natif</li>
|
|
</ul>
|
|
<button class="btn-buy" onclick="buyProduct('cloud_stack', 450000)">🛒 Commander</button>
|
|
</div>
|
|
|
|
<!-- 5. CCE Kubernetes -->
|
|
<div class="product-card">
|
|
<span class="badge popular">🔥 Top 3</span>
|
|
<div class="product-header">
|
|
<h3>CCE — Kubernetes</h3>
|
|
<div class="product-category">Huawei Cloud • Container</div>
|
|
</div>
|
|
<div class="product-specs">
|
|
<div class="spec-row"><span class="spec-label">Version</span><span class="spec-value">K8s 1.28+</span></div>
|
|
<div class="spec-row"><span class="spec-label">Nodes</span><span class="spec-value">1-1000</span></div>
|
|
<div class="spec-row"><span class="spec-label">Scale</span><span class="spec-value">Auto</span></div>
|
|
<div class="spec-row"><span class="spec-label">Monitor</span><span class="spec-value">Prometheus</span></div>
|
|
</div>
|
|
<div class="product-price">
|
|
<span class="price-amount">€0,12</span>
|
|
<span class="price-period">/h</span>
|
|
</div>
|
|
<ul class="product-features">
|
|
<li>Control plane managé</li>
|
|
<li>Helm repository</li>
|
|
<li>Istio service mesh</li>
|
|
<li>CI/CD intégré</li>
|
|
</ul>
|
|
<button class="btn-buy" onclick="buyProduct('cce_k8s', 12)">🛒 Commander</button>
|
|
</div>
|
|
|
|
<!-- 6. ECS Compute -->
|
|
<div class="product-card">
|
|
<div class="product-header">
|
|
<h3>ECS Compute</h3>
|
|
<div class="product-category">Huawei ECS • General Purpose</div>
|
|
</div>
|
|
<div class="product-specs">
|
|
<div class="spec-row"><span class="spec-label">vCPU</span><span class="spec-value">32 cores</span></div>
|
|
<div class="spec-row"><span class="spec-label">RAM</span><span class="spec-value">128 GB</span></div>
|
|
<div class="spec-row"><span class="spec-label">Storage</span><span class="spec-value">1TB SSD</span></div>
|
|
<div class="spec-row"><span class="spec-label">Network</span><span class="spec-value">10 Gbps</span></div>
|
|
</div>
|
|
<div class="product-price">
|
|
<span class="price-amount">€0,85</span>
|
|
<span class="price-period">/h</span>
|
|
</div>
|
|
<ul class="product-features">
|
|
<li>HA 99.95%</li>
|
|
<li>Snapshots auto</li>
|
|
<li>Load balancing</li>
|
|
<li>Migration assistée</li>
|
|
</ul>
|
|
<button class="btn-buy" onclick="buyProduct('ecs_compute', 85)">🛒 Commander</button>
|
|
</div>
|
|
|
|
<!-- 7. GPU V100 -->
|
|
<div class="product-card">
|
|
<div class="product-header">
|
|
<h3>GPU V100</h3>
|
|
<div class="product-category">Huawei ECS • GPU</div>
|
|
</div>
|
|
<div class="product-specs">
|
|
<div class="spec-row"><span class="spec-label">GPU</span><span class="spec-value">V100 32GB</span></div>
|
|
<div class="spec-row"><span class="spec-label">vCPU</span><span class="spec-value">64 cores</span></div>
|
|
<div class="spec-row"><span class="spec-label">RAM</span><span class="spec-value">512 GB</span></div>
|
|
<div class="spec-row"><span class="spec-label">Storage</span><span class="spec-value">1.5TB NVMe</span></div>
|
|
</div>
|
|
<div class="product-price">
|
|
<span class="price-amount">€1,90</span>
|
|
<span class="price-period">/h</span>
|
|
</div>
|
|
<ul class="product-features">
|
|
<li>Tensor Cores</li>
|
|
<li>CUDA 11+</li>
|
|
<li>NVLink</li>
|
|
<li>Formation incluse</li>
|
|
</ul>
|
|
<button class="btn-buy" onclick="buyProduct('gpu_v100', 190)">🛒 Commander</button>
|
|
</div>
|
|
|
|
<!-- 8. GaussDB -->
|
|
<div class="product-card">
|
|
<span class="badge new">🆕</span>
|
|
<div class="product-header">
|
|
<h3>GaussDB — DB IA</h3>
|
|
<div class="product-category">Huawei Cloud • Database</div>
|
|
</div>
|
|
<div class="product-specs">
|
|
<div class="spec-row"><span class="spec-label">Type</span><span class="spec-value">MySQL compatible</span></div>
|
|
<div class="spec-row"><span class="spec-label">Storage</span><span class="spec-value">10TB auto-scale</span></div>
|
|
<div class="spec-row"><span class="spec-label">IOPS</span><span class="spec-value">100K+</span></div>
|
|
<div class="spec-row"><span class="spec-label">HA</span><span class="spec-value">Multi-AZ</span></div>
|
|
</div>
|
|
<div class="product-price">
|
|
<span class="price-amount">€320</span>
|
|
<span class="price-period">/mois</span>
|
|
</div>
|
|
<ul class="product-features">
|
|
<li>AI optimizer</li>
|
|
<li>Auto-tuning</li>
|
|
<li>Backup 7j auto</li>
|
|
<li>Read replicas</li>
|
|
</ul>
|
|
<button class="btn-buy" onclick="buyProduct('gaussdb', 32000)">🛒 Commander</button>
|
|
</div>
|
|
|
|
<!-- 9. Object Storage -->
|
|
<div class="product-card">
|
|
<div class="product-header">
|
|
<h3>Object Storage</h3>
|
|
<div class="product-category">Huawei Cloud • Storage</div>
|
|
</div>
|
|
<div class="product-specs">
|
|
<div class="spec-row"><span class="spec-label">Capacity</span><span class="spec-value">10 TB</span></div>
|
|
<div class="spec-row"><span class="spec-label">Durability</span><span class="spec-value">11 nines</span></div>
|
|
<div class="spec-row"><span class="spec-label">CDN</span><span class="spec-value">Inclus</span></div>
|
|
<div class="spec-row"><span class="spec-label">Transfer</span><span class="spec-value">Illimité</span></div>
|
|
</div>
|
|
<div class="product-price">
|
|
<span class="price-amount">€180</span>
|
|
<span class="price-period">/mois</span>
|
|
</div>
|
|
<ul class="product-features">
|
|
<li>S3 API compatible</li>
|
|
<li>Versioning</li>
|
|
<li>Lifecycle policies</li>
|
|
<li>Encryption at rest</li>
|
|
</ul>
|
|
<button class="btn-buy" onclick="buyProduct('obs_storage', 18000)">🛒 Commander</button>
|
|
</div>
|
|
|
|
<!-- 10. Bare Metal -->
|
|
<div class="product-card">
|
|
<span class="badge popular">💪</span>
|
|
<div class="product-header">
|
|
<h3>Bare Metal</h3>
|
|
<div class="product-category">Huawei Cloud • Dedicated</div>
|
|
</div>
|
|
<div class="product-specs">
|
|
<div class="spec-row"><span class="spec-label">CPU</span><span class="spec-value">Xeon Gold</span></div>
|
|
<div class="spec-row"><span class="spec-label">Cores</span><span class="spec-value">96 physical</span></div>
|
|
<div class="spec-row"><span class="spec-label">RAM</span><span class="spec-value">1TB DDR4</span></div>
|
|
<div class="spec-row"><span class="spec-label">Storage</span><span class="spec-value">8x4TB NVMe</span></div>
|
|
</div>
|
|
<div class="product-price">
|
|
<span class="price-amount">€3,20</span>
|
|
<span class="price-period">/h</span>
|
|
</div>
|
|
<ul class="product-features">
|
|
<li>Dédié 100%</li>
|
|
<li>RDMA 100 Gbps</li>
|
|
<li>Custom hardware</li>
|
|
<li>Deploy 30min</li>
|
|
</ul>
|
|
<button class="btn-buy" onclick="buyProduct('bare_metal', 320)">🛒 Commander</button>
|
|
</div>
|
|
|
|
<!-- 11. FunctionGraph -->
|
|
<div class="product-card">
|
|
<span class="badge ai">⚡</span>
|
|
<div class="product-header">
|
|
<h3>FunctionGraph</h3>
|
|
<div class="product-category">Huawei Cloud • Serverless</div>
|
|
</div>
|
|
<div class="product-specs">
|
|
<div class="spec-row"><span class="spec-label">Runtime</span><span class="spec-value">Multi-lang</span></div>
|
|
<div class="spec-row"><span class="spec-label">Memory</span><span class="spec-value">128MB-3GB</span></div>
|
|
<div class="spec-row"><span class="spec-label">Timeout</span><span class="spec-value">900s max</span></div>
|
|
<div class="spec-row"><span class="spec-label">Cold start</span><span class="spec-value"><100ms</span></div>
|
|
</div>
|
|
<div class="product-price">
|
|
<span class="price-amount">€0,20</span>
|
|
<span class="price-period">/1M calls</span>
|
|
</div>
|
|
<ul class="product-features">
|
|
<li>Pay per invocation</li>
|
|
<li>Auto-scaling</li>
|
|
<li>Event triggers</li>
|
|
<li>1M gratuit/mois</li>
|
|
</ul>
|
|
<button class="btn-buy" onclick="buyProduct('functiongraph', 20)">🛒 Commander</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="features-grid">
|
|
<div class="feature-card">
|
|
<div class="feature-icon">🚀</div>
|
|
<h4>Déploiement <5min</h4>
|
|
<p>Infrastructure prête immédiatement</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<div class="feature-icon">💰</div>
|
|
<h4>Tarifs -40%</h4>
|
|
<p>Prix partenaires négociés</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<div class="feature-icon">🛡️</div>
|
|
<h4>Support 24/7</h4>
|
|
<p>Équipe WEVAL dédiée</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<div class="feature-icon">📊</div>
|
|
<h4>Migration A→Z</h4>
|
|
<p>Accompagnement complet</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<div class="feature-icon">🤖</div>
|
|
<h4>IA Native</h4>
|
|
<p>ModelArts & API Tokens</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<div class="feature-icon">🌍</div>
|
|
<h4>Souveraineté</h4>
|
|
<p>Données EU/ME/AF</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="footer">
|
|
<p>Paiement sécurisé Stripe • Facturation mensuelle • Support 24/7 • RGPD</p>
|
|
<a href="/" class="back-link">← Accueil WEVAL</a>
|
|
<a href="/products/workspace.html" class="back-link">🏠 Workspace</a>
|
|
<a href="/products/cloud-providers.html" class="back-link">☁️ Comparateur</a>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
const stripe = Stripe('pk_test_51QsnOxP3zyHVnHUlBhv8DKHjREkhPHdMn9aHDpPUhMlvW7FiUgQFe07UrEyFEI5vcCDuCmZ8aJF0yiONwNkEdnqb00V1G2OuWe');
|
|
|
|
function buyProduct(productId, priceInCents) {
|
|
document.querySelectorAll('.btn-buy').forEach(btn => {
|
|
btn.disabled = true;
|
|
btn.textContent = '⏳ Redirection...';
|
|
});
|
|
|
|
fetch('/api/create-checkout-session.php', {
|
|
method: 'POST',
|
|
headers: {'Content-Type': 'application/json'},
|
|
body: JSON.stringify({
|
|
product_id: productId,
|
|
price: priceInCents,
|
|
currency: 'eur'
|
|
})
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.sessionId) {
|
|
return stripe.redirectToCheckout({ sessionId: data.sessionId });
|
|
} else {
|
|
throw new Error(data.error || 'Session creation failed');
|
|
}
|
|
})
|
|
.catch(error => {
|
|
console.error('Error:', error);
|
|
alert('Erreur: ' + error.message + '. Contactez support@weval-consulting.com');
|
|
document.querySelectorAll('.btn-buy').forEach(btn => {
|
|
btn.disabled = false;
|
|
btn.textContent = '🛒 Commander';
|
|
});
|
|
});
|
|
}
|
|
</script>
|
|
|
|
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
|
<script>
|
|
(function(){
|
|
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
|
var d = document;
|
|
var m = d.createElement('div');
|
|
m.id = 'opus-udrill';
|
|
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
|
var inner = d.createElement('div');
|
|
inner.id = 'opus-udrill-in';
|
|
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
|
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
|
m.appendChild(inner);
|
|
m.addEventListener('click', function(){ m.style.display='none'; });
|
|
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
|
(d.body || d.documentElement).appendChild(m);
|
|
|
|
function openCard(card) {
|
|
// Clone card content + show close btn + increase font-size
|
|
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
|
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
|
inner.innerHTML = html;
|
|
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
|
m.style.display = 'flex';
|
|
}
|
|
|
|
function wire(root) {
|
|
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
|
var cards = root.querySelectorAll(sels);
|
|
for (var i = 0; i < cards.length; i++) {
|
|
var c = cards[i];
|
|
if (c.__opusWired) continue;
|
|
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
|
var r = c.getBoundingClientRect();
|
|
if (r.width < 60 || r.height < 40) continue;
|
|
c.__opusWired = true;
|
|
c.style.cursor = 'pointer';
|
|
c.setAttribute('role','button');
|
|
c.setAttribute('tabindex','0');
|
|
c.addEventListener('click', function(ev){
|
|
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
|
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
|
if (ev.target.closest('a,button,input,select')) return;
|
|
ev.preventDefault(); ev.stopPropagation();
|
|
openCard(this);
|
|
});
|
|
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
|
}
|
|
}
|
|
|
|
// Initial + mutation observer
|
|
var initRun = function(){ wire(d.body || d.documentElement); };
|
|
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
|
else initRun();
|
|
var mo = new MutationObserver(function(muts){
|
|
var newCard = false;
|
|
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
|
if (newCard) initRun();
|
|
});
|
|
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
|
})();
|
|
</script>
|
|
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
|
|
|
|
|
<script src="/api/a11y-auto-enhancer.js" defer></script>
|
|
<!-- WTP_UDOCK_V1 (Opus 21-avr t32b4) --><script src="/wtp-unified-dock.js" defer></script>
|
|
<script src="/opus-antioverlap-doctrine.js?v=1777045903" defer></script>
|
|
<!-- DOCTRINE-60-UX-JS --><script id="doctrine60-ux-js-direct">
|
|
|
|
// DOCTRINE-60-UX-JS staggered entrance
|
|
(function(){
|
|
if (!('IntersectionObserver' in window)) return;
|
|
const obs = new IntersectionObserver((entries) => {
|
|
entries.forEach((e, i) => {
|
|
if (e.isIntersecting) {
|
|
setTimeout(() => e.target.classList.add('enter-stagger'), i * 80);
|
|
obs.unobserve(e.target);
|
|
}
|
|
});
|
|
});
|
|
document.querySelectorAll('.card, .kpi, .panel').forEach(el => obs.observe(el));
|
|
})();
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|