auto-sync-0250
This commit is contained in:
Binary file not shown.
BIN
api/ambre-pw-tests/output/v30-02-02-onboard.png
Normal file
BIN
api/ambre-pw-tests/output/v30-02-02-onboard.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 134 KiB |
BIN
api/ambre-pw-tests/output/v30-03-03-calc.png
Normal file
BIN
api/ambre-pw-tests/output/v30-03-03-calc.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 121 KiB |
BIN
api/ambre-pw-tests/output/v30-04-04-qr.png
Normal file
BIN
api/ambre-pw-tests/output/v30-04-04-qr.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 77 KiB |
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated_at": "2026-04-22T02:45:01.727246",
|
||||
"generated_at": "2026-04-22T02:50:01.583332",
|
||||
"stats": {
|
||||
"total": 48,
|
||||
"pending": 31,
|
||||
|
||||
@@ -1,286 +0,0 @@
|
||||
{
|
||||
"ts": "2026-04-22T00:45:01+00:00",
|
||||
"server": "s204",
|
||||
"s204": {
|
||||
"load": 2.43,
|
||||
"uptime": "2026-04-14 11:51:24",
|
||||
"ram_total_mb": 31335,
|
||||
"ram_used_mb": 11435,
|
||||
"ram_free_mb": 19899,
|
||||
"disk_total": "150G",
|
||||
"disk_used": "120G",
|
||||
"disk_free": "25G",
|
||||
"disk_pct": "84%",
|
||||
"fpm_workers": 140,
|
||||
"docker_containers": 19,
|
||||
"cpu_cores": 8
|
||||
},
|
||||
"s95": {
|
||||
"load": 0.23,
|
||||
"disk_pct": "81%",
|
||||
"status": "UP",
|
||||
"ram_total_mb": 15610,
|
||||
"ram_free_mb": 11974
|
||||
},
|
||||
"pmta": [
|
||||
{
|
||||
"name": "SER6",
|
||||
"ip": "110.239.84.121",
|
||||
"status": "DOWN"
|
||||
},
|
||||
{
|
||||
"name": "SER7",
|
||||
"ip": "110.239.65.64",
|
||||
"status": "DOWN"
|
||||
},
|
||||
{
|
||||
"name": "SER8",
|
||||
"ip": "182.160.55.107",
|
||||
"status": "DOWN"
|
||||
},
|
||||
{
|
||||
"name": "SER9",
|
||||
"ip": "110.239.86.68",
|
||||
"status": "DOWN"
|
||||
}
|
||||
],
|
||||
"assets": {
|
||||
"html_pages": 321,
|
||||
"php_apis": 958,
|
||||
"wiki_entries": 2123,
|
||||
"vault_doctrines": 96,
|
||||
"vault_sessions": 104,
|
||||
"vault_decisions": 12
|
||||
},
|
||||
"tools": {
|
||||
"total": 638,
|
||||
"registry_version": "?"
|
||||
},
|
||||
"sovereign": {
|
||||
"status": "UP",
|
||||
"providers": [
|
||||
"Cerebras-fast",
|
||||
"Cerebras-think",
|
||||
"Groq",
|
||||
"Cloudflare-AI",
|
||||
"Gemini",
|
||||
"SambaNova",
|
||||
"NVIDIA-NIM",
|
||||
"Mistral",
|
||||
"Groq-OSS",
|
||||
"HF-Space",
|
||||
"HF-Router",
|
||||
"OpenRouter",
|
||||
"GitHub-Models"
|
||||
],
|
||||
"active": 13,
|
||||
"total": 13,
|
||||
"primary": "Cerebras-fast",
|
||||
"cost": "0€"
|
||||
},
|
||||
"ethica": {
|
||||
"total_hcps": 161733,
|
||||
"with_email": 110659,
|
||||
"with_phone": 155151,
|
||||
"gap_email": 51074,
|
||||
"pct_email": 68.4,
|
||||
"pct_phone": 95.9,
|
||||
"by_country": [
|
||||
{
|
||||
"country": "DZ",
|
||||
"hcps": 122337,
|
||||
"with_email": 78548,
|
||||
"with_tel": 119396,
|
||||
"pct_email": 64.2,
|
||||
"pct_tel": 97.6
|
||||
},
|
||||
{
|
||||
"country": "MA",
|
||||
"hcps": 19723,
|
||||
"with_email": 15081,
|
||||
"with_tel": 18737,
|
||||
"pct_email": 76.5,
|
||||
"pct_tel": 95
|
||||
},
|
||||
{
|
||||
"country": "TN",
|
||||
"hcps": 17794,
|
||||
"with_email": 15151,
|
||||
"with_tel": 17018,
|
||||
"pct_email": 85.1,
|
||||
"pct_tel": 95.6
|
||||
},
|
||||
{
|
||||
"country": "INTL",
|
||||
"hcps": 1879,
|
||||
"with_email": 1879,
|
||||
"with_tel": 0,
|
||||
"pct_email": 100,
|
||||
"pct_tel": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"docker": [
|
||||
{
|
||||
"name": "weval-docuseal",
|
||||
"status": "Up 9 seconds",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "loki",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "listmonk",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "plausible-plausible-1",
|
||||
"status": "Up 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "plausible-plausible-db-1",
|
||||
"status": "Up 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "plausible-plausible-events-db-1",
|
||||
"status": "Up 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "n8n-docker-n8n-1",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mm-db-1",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mattermost-1",
|
||||
"status": "Up 5 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "twenty",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "twenty-redis",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "langfuse",
|
||||
"status": "Up 6 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "redis-weval",
|
||||
"status": "Up 7 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "gitea",
|
||||
"status": "Up 7 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "node-exporter",
|
||||
"status": "Up 7 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "prometheus",
|
||||
"status": "Up 7 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "searxng",
|
||||
"status": "Up 7 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "uptime-kuma",
|
||||
"status": "Up 2 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "vaultwarden",
|
||||
"status": "Up 7 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "qdrant",
|
||||
"status": "Up 7 days",
|
||||
"ports": ""
|
||||
}
|
||||
],
|
||||
"crons": {
|
||||
"active": 35
|
||||
},
|
||||
"git": {
|
||||
"head": "decde3ae1 auto-sync-0245",
|
||||
"dirty": 1,
|
||||
"status": "DIRTY"
|
||||
},
|
||||
"nonreg": {
|
||||
"total": 153,
|
||||
"passed": 153,
|
||||
"score": "100%"
|
||||
},
|
||||
"services": [
|
||||
{
|
||||
"name": "DeerFlow",
|
||||
"port": 3002,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "DeerFlow API",
|
||||
"port": 8001,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "Qdrant",
|
||||
"port": 6333,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "Ollama",
|
||||
"port": 11434,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "Redis",
|
||||
"port": 6379,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "Sovereign",
|
||||
"port": 4000,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "SearXNG",
|
||||
"port": 8080,
|
||||
"status": "UP"
|
||||
}
|
||||
],
|
||||
"whisper": {
|
||||
"binary": "COMPILED",
|
||||
"model": "142MB"
|
||||
},
|
||||
"grand_total": 4156,
|
||||
"health": {
|
||||
"score": 5,
|
||||
"max": 6,
|
||||
"pct": 83
|
||||
},
|
||||
"elapsed_ms": 11125
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
<?php
|
||||
// WAVE 230 v3 · Social Signals Hub · FAST parallel + reliable sources
|
||||
// WAVE 231 v4 · Social Signals Hub · YouTube (HN filter) + Twitter (Nitter) + Mastodon + Paperclip tasks
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
set_time_limit(20);
|
||||
set_time_limit(25);
|
||||
|
||||
function load_secrets() {
|
||||
$s = [];
|
||||
@@ -36,28 +36,78 @@ function multi_fetch($urls, $timeout=7) {
|
||||
return $out;
|
||||
}
|
||||
|
||||
// === POST endpoint: auto-create Paperclip task from LLM idea ===
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_GET['action'] ?? '') === 'create_task') {
|
||||
$body = json_decode(file_get_contents('php://input'), true) ?: [];
|
||||
$pg = @pg_connect('host=10.1.0.3 port=5432 dbname=paperclip user=admin password=admin123 connect_timeout=3');
|
||||
if (!$pg) { http_response_code(500); echo json_encode(['error'=>'no pg']); exit; }
|
||||
$q = "INSERT INTO weval_tasks (title, source, source_ref, category, opportunity, tools_used, first_steps, kpi, estimated_mad, inspired_by, status, wave) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12) RETURNING id, created_at";
|
||||
$r = @pg_query_params($pg, $q, [
|
||||
$body['title'] ?? '?',
|
||||
$body['source'] ?? 'advisor-wave231',
|
||||
$body['source_ref'] ?? '',
|
||||
$body['category'] ?? 'conversion',
|
||||
$body['opportunity'] ?? '',
|
||||
is_array($body['tools_used']??null) ? implode('|', $body['tools_used']) : ($body['tools_used'] ?? ''),
|
||||
is_array($body['first_steps']??null) ? implode("\n- ", $body['first_steps']) : ($body['first_steps'] ?? ''),
|
||||
$body['kpi'] ?? '',
|
||||
(int)($body['estimated_mad'] ?? 0),
|
||||
$body['inspired_by'] ?? '',
|
||||
'proposed',
|
||||
231
|
||||
]);
|
||||
if ($r) {
|
||||
$row = pg_fetch_assoc($r);
|
||||
pg_close($pg);
|
||||
echo json_encode(['ok'=>true, 'task_id'=>(int)$row['id'], 'created_at'=>$row['created_at']]);
|
||||
} else {
|
||||
pg_close($pg);
|
||||
http_response_code(500);
|
||||
echo json_encode(['error'=>'insert failed', 'details'=>pg_last_error()]);
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
// === GET endpoint: list existing tasks ===
|
||||
if (($_GET['action'] ?? '') === 'list_tasks') {
|
||||
$pg = @pg_connect('host=10.1.0.3 port=5432 dbname=paperclip user=admin password=admin123 connect_timeout=3');
|
||||
if (!$pg) { echo json_encode(['error'=>'no pg', 'tasks'=>[]]); exit; }
|
||||
$r = @pg_query($pg, 'SELECT * FROM weval_tasks ORDER BY created_at DESC LIMIT 20');
|
||||
$tasks = [];
|
||||
if ($r) while ($row = pg_fetch_assoc($r)) $tasks[] = $row;
|
||||
pg_close($pg);
|
||||
echo json_encode(['ok'=>true, 'count'=>count($tasks), 'tasks'=>$tasks]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// === Default: aggregation ===
|
||||
$topics = $_GET['topics'] ?? 'B2B SaaS conversion,LinkedIn outbound,pharma digital';
|
||||
$topic_list = array_slice(array_map('trim', explode(',', $topics)), 0, 3);
|
||||
$with_scout = ($_GET['scout'] ?? '') === '1';
|
||||
|
||||
$signals = [
|
||||
'ts' => date('c'), 'wave' => 230, 'version' => 'social-signals-hub-v3',
|
||||
'ts' => date('c'), 'wave' => 231, 'version' => 'social-signals-hub-v4',
|
||||
'topics' => $topic_list, 'channels' => [], 'aggregated_ideas' => [],
|
||||
];
|
||||
|
||||
// Parallel URLs
|
||||
$urls = [];
|
||||
$urls['linkedin'] = 'http://127.0.0.1/api/linkedin-posts.php';
|
||||
// HackerNews
|
||||
foreach (['SaaS conversion', 'B2B sales outbound'] as $i => $q) {
|
||||
$urls['hn_'.$i] = 'https://hn.algolia.com/api/v1/search?query=' . urlencode($q) . '&tags=story&hitsPerPage=6';
|
||||
}
|
||||
// Reddit RSS (atom)
|
||||
foreach (['SaaS', 'Entrepreneur', 'B2BSales'] as $i => $s) {
|
||||
$urls['rd_'.$i] = 'https://old.reddit.com/r/' . $s . '/.rss?limit=5';
|
||||
}
|
||||
// YouTube via Piped.video (alt Invidious)
|
||||
// YouTube via HN filtered (HN stories that link to youtube.com)
|
||||
$urls['hn_yt'] = 'https://hn.algolia.com/api/v1/search?query=' . urlencode('youtube.com SaaS') . '&tags=story&hitsPerPage=10';
|
||||
// Twitter via Nitter.net
|
||||
foreach (array_slice($topic_list, 0, 2) as $i => $t) {
|
||||
$urls['yt_'.$i] = 'https://html.duckduckgo.com/html/?q=' . urlencode($t . ' youtube 2026');
|
||||
$urls['tw_'.$i] = 'https://nitter.net/search?q=' . urlencode($t) . '&f=tweets';
|
||||
}
|
||||
// Mastodon public search
|
||||
foreach (array_slice($topic_list, 0, 2) as $i => $t) {
|
||||
$urls['ma_'.$i] = 'https://mastodon.social/api/v2/search?q=' . urlencode($t) . '&type=statuses&limit=5';
|
||||
}
|
||||
|
||||
$t0 = microtime(true);
|
||||
@@ -72,7 +122,7 @@ if (!empty($results['linkedin'])) {
|
||||
foreach (array_slice($ld['posts'], 0, 8) as $p) {
|
||||
$ln['items'][] = [
|
||||
'title' => $p['title'] ?? '',
|
||||
'excerpt' => substr($p['excerpt'] ?? '', 0, 160),
|
||||
'excerpt' => substr($p['excerpt'] ?? '', 0, 150),
|
||||
'likes' => (int)($p['likes'] ?? 0),
|
||||
'views' => (int)($p['views'] ?? 0),
|
||||
'url' => $p['linkedin_url'] ?? '',
|
||||
@@ -104,7 +154,7 @@ $hn['items'] = array_slice($hn['items'], 0, 10);
|
||||
$hn['count'] = count($hn['items']);
|
||||
$signals['channels']['hackernews'] = $hn;
|
||||
|
||||
// Reddit RSS parse
|
||||
// Reddit RSS
|
||||
$rd = ['channel'=>'reddit','source'=>'old.reddit RSS','items'=>[]];
|
||||
foreach ([0,1,2] as $i) {
|
||||
if (empty($results['rd_'.$i])) continue;
|
||||
@@ -128,49 +178,114 @@ $rd['items'] = array_slice($rd['items'], 0, 15);
|
||||
$rd['count'] = count($rd['items']);
|
||||
$signals['channels']['reddit'] = $rd;
|
||||
|
||||
// YouTube from DDG
|
||||
$yt = ['channel'=>'youtube','source'=>'DDG search','items'=>[]];
|
||||
foreach ([0,1] as $i) {
|
||||
if (empty($results['yt_'.$i])) continue;
|
||||
// Catch both youtube.com and youtu.be
|
||||
preg_match_all('~<a[^>]*class="result__a"[^>]*href="([^"]+(?:youtube\.com/watch|youtu\.be/)[^"]*)"[^>]*>([^<]+)</a>~s', $results['yt_'.$i], $m, PREG_SET_ORDER);
|
||||
if (!$m) {
|
||||
// Fallback: any youtube link
|
||||
preg_match_all('~href="(https?://[^"]*youtu[^"]+)"[^>]*>([^<]+)~', $results['yt_'.$i], $m, PREG_SET_ORDER);
|
||||
}
|
||||
foreach (array_slice($m, 0, 4) as $mm) {
|
||||
$url = html_entity_decode($mm[1]);
|
||||
$title = html_entity_decode(trim(strip_tags($mm[2])));
|
||||
if (strlen($title) > 3) {
|
||||
// YouTube via HN filter (HN stories linking to youtube.com)
|
||||
$yt = ['channel'=>'youtube','source'=>'HackerNews YT-filtered','items'=>[]];
|
||||
if (!empty($results['hn_yt'])) {
|
||||
$hd = @json_decode($results['hn_yt'], true);
|
||||
foreach (($hd['hits'] ?? []) as $h) {
|
||||
$url = $h['url'] ?? '';
|
||||
if (strpos($url, 'youtube.com') !== false || strpos($url, 'youtu.be') !== false) {
|
||||
$yt['items'][] = [
|
||||
'title' => substr($title, 0, 140),
|
||||
'title' => substr($h['title'] ?? '', 0, 140),
|
||||
'url' => $url,
|
||||
'points' => (int)($h['points'] ?? 0),
|
||||
'hn_discussion' => 'https://news.ycombinator.com/item?id=' . ($h['objectID'] ?? ''),
|
||||
'date' => substr($h['created_at'] ?? '', 0, 10),
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
usort($yt['items'], function($a,$b){return ($b['points']??0)-($a['points']??0);});
|
||||
$yt['items'] = array_slice($yt['items'], 0, 8);
|
||||
$yt['count'] = count($yt['items']);
|
||||
$signals['channels']['youtube'] = $yt;
|
||||
|
||||
// Twitter via Nitter.net
|
||||
$tw = ['channel'=>'twitter','source'=>'nitter.net','items'=>[]];
|
||||
foreach ([0,1] as $i) {
|
||||
if (empty($results['tw_'.$i])) continue;
|
||||
$html = $results['tw_'.$i];
|
||||
// Extract tweets: <div class="tweet-content media-body">...</div>
|
||||
preg_match_all('~<div class="tweet-content[^"]*"[^>]*>(.*?)</div>~s', $html, $contents, PREG_SET_ORDER);
|
||||
preg_match_all('~<a class="tweet-link"[^>]*href="([^"]+)"~', $html, $links, PREG_SET_ORDER);
|
||||
preg_match_all('~<a class="username"[^>]*>([^<]+)</a>~', $html, $users, PREG_SET_ORDER);
|
||||
$topic = $topic_list[$i] ?? '';
|
||||
for ($j = 0; $j < min(5, count($contents), count($links)); $j++) {
|
||||
$text = trim(strip_tags(html_entity_decode($contents[$j][1] ?? '')));
|
||||
$link = $links[$j][1] ?? '';
|
||||
$user = trim($users[$j][1] ?? '');
|
||||
if (strlen($text) > 20) {
|
||||
$tw['items'][] = [
|
||||
'title' => substr($text, 0, 180),
|
||||
'user' => $user,
|
||||
'url' => 'https://twitter.com' . str_replace('#m', '', $link),
|
||||
'topic' => $topic,
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
$tw['items'] = array_slice($tw['items'], 0, 10);
|
||||
$tw['count'] = count($tw['items']);
|
||||
$signals['channels']['twitter'] = $tw;
|
||||
|
||||
// Mastodon
|
||||
$ma = ['channel'=>'mastodon','source'=>'mastodon.social API','items'=>[]];
|
||||
foreach ([0,1] as $i) {
|
||||
if (empty($results['ma_'.$i])) continue;
|
||||
$md = @json_decode($results['ma_'.$i], true);
|
||||
foreach (($md['statuses'] ?? []) as $s) {
|
||||
$content = trim(strip_tags($s['content'] ?? ''));
|
||||
if (strlen($content) > 20) {
|
||||
$ma['items'][] = [
|
||||
'title' => substr($content, 0, 180),
|
||||
'url' => $s['url'] ?? '',
|
||||
'user' => '@' . ($s['account']['acct'] ?? '?'),
|
||||
'favorites' => (int)($s['favourites_count'] ?? 0),
|
||||
'reblogs' => (int)($s['reblogs_count'] ?? 0),
|
||||
'topic' => $topic_list[$i] ?? '',
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
$yt['items'] = array_slice($yt['items'], 0, 10);
|
||||
$yt['count'] = count($yt['items']);
|
||||
$signals['channels']['youtube'] = $yt;
|
||||
usort($ma['items'], function($a,$b){return ($b['favorites']??0)-($a['favorites']??0);});
|
||||
$ma['items'] = array_slice($ma['items'], 0, 8);
|
||||
$ma['count'] = count($ma['items']);
|
||||
$signals['channels']['mastodon'] = $ma;
|
||||
|
||||
// Aggregate top unique titles
|
||||
// Dark Scout async (only if explicit ?scout=1)
|
||||
if ($with_scout) {
|
||||
$ds_ch = curl_init('http://127.0.0.1/api/v83-dark-scout-enriched.php?q=' . urlencode($topic_list[0] ?? 'SaaS'));
|
||||
curl_setopt_array($ds_ch, [CURLOPT_RETURNTRANSFER=>true, CURLOPT_TIMEOUT=>12]);
|
||||
$ds_raw = curl_exec($ds_ch);
|
||||
curl_close($ds_ch);
|
||||
$sc = ['channel'=>'dark_scout','source'=>'google+bing+ddg','items'=>[]];
|
||||
if ($ds_raw) {
|
||||
$sd = @json_decode($ds_raw, true);
|
||||
foreach (array_slice(($sd['results']??[]), 0, 6) as $r) {
|
||||
$sc['items'][] = ['title'=>substr($r['title']??'',0,140),'snippet'=>substr($r['snippet']??'',0,150),'url'=>$r['url']??'','category'=>$r['category']??''];
|
||||
}
|
||||
}
|
||||
$sc['count'] = count($sc['items']);
|
||||
$signals['channels']['dark_scout'] = $sc;
|
||||
}
|
||||
|
||||
// Aggregate
|
||||
$all = [];
|
||||
foreach ($signals['channels'] as $c) foreach ($c['items'] as $i) if (!empty($i['title'])) $all[] = $i['title'];
|
||||
$signals['aggregated_ideas'] = array_slice(array_unique($all), 0, 25);
|
||||
$signals['aggregated_ideas'] = array_slice(array_unique($all), 0, 30);
|
||||
$signals['total_items'] = array_sum(array_map(function($c){return $c['count']??0;}, $signals['channels']));
|
||||
|
||||
// LLM cascade
|
||||
if (($_GET['llm'] ?? '') === '1') {
|
||||
$secrets = load_secrets();
|
||||
$weval_ctx = "WEVAL Consulting (Casablanca/Paris · SAP Ecosystem Partner).\nLive state: 48 leads Paperclip, Vistex MQL 95 (SAP Cosumar 450K MAD), Ethica MQL 100 (pharma MA Kaouther 200K MAD signing), Huawei MQL 90.\nProducts: SAP consulting, API HCP Maghreb 157K HCPs, Pharma Cloud, WEVAL SaaS Freemium.\nSovereign tools: WEVIA Master (269 tools), Dark Scout V83, WePredict 16 cockpits, WEVADS Brain (9 winners PMTA+Kumo+Postfix), Blade AI (Selenium), DocuSeal live port 3050, pandasai+Ollama, WeasyPrint.\nPipeline 2.9M MAD (650K quick wins + 2.25M big bets).";
|
||||
$weval_ctx = "WEVAL Consulting (Casablanca/Paris · SAP Ecosystem Partner).\nLive: 48 leads Paperclip, Vistex MQL 95 (450K MAD), Ethica MQL 100 (200K MAD signing), Huawei MQL 90.\nProducts: SAP consulting, API HCP Maghreb 157K HCPs, Pharma Cloud, WEVAL SaaS Freemium.\nSovereign tools: WEVIA Master (269 tools), Dark Scout, WePredict, WEVADS Brain (9 winners), Blade AI, DocuSeal live 3050, pandasai+Ollama, WeasyPrint.\nPipeline 2.9M MAD.";
|
||||
$summary = "";
|
||||
foreach ($signals['channels'] as $k => $c) {
|
||||
$top = $c['items'][0]['title'] ?? '(none)';
|
||||
$summary .= "- $k ({$c['count']}): $top\n";
|
||||
}
|
||||
$headlines = implode("\n - ", array_slice($signals['aggregated_ideas'], 0, 15));
|
||||
$prompt = "$weval_ctx\n\nSignals aggregated from LinkedIn + HackerNews + Reddit + YouTube:\n$summary\nTop headlines seen:\n - $headlines\n\nProvide 5 CONCRETE conversion ideas ADAPTED to WEVAL's sovereign stack + MENA market. Each idea must:\n1. Target one real opportunity (Vistex Cosumar / Ethica MA / API HCP / SaaS Freemium / Carrefour / LinkedIn outbound)\n2. Use only existing WEVAL tools (no new stack)\n3. Be executable in 14 days\n4. Include a measurable KPI and estimated MAD revenue\n5. Cite the social signal that inspired it (LinkedIn/HN/Reddit/YT)\n\nReply ONLY with JSON: {ideas:[{rank:N, title:str, channel:str, opportunity:str, tools_used:[str], first_steps:[str,str,str], kpi:str, estimated_mad:N, inspired_by:str}]}";
|
||||
$prompt = "$weval_ctx\n\nSignals from LinkedIn + HN + Reddit + YouTube + Twitter + Mastodon:\n$summary\nTop headlines:\n - $headlines\n\nProvide 5 CONCRETE conversion ideas ADAPTED to WEVAL sovereign stack + MENA. Each must:\n1. Target one real opportunity\n2. Use only existing WEVAL tools\n3. Executable in 14 days\n4. Measurable KPI + estimated MAD revenue\n5. Cite the social signal that inspired it\n\nReply ONLY JSON: {ideas:[{rank:N, title:str, channel:str, opportunity:str, tools_used:[str], first_steps:[str,str,str], kpi:str, estimated_mad:N, inspired_by:str}]}";
|
||||
$payload = json_encode(['model'=>'llama-3.3-70b','messages'=>[['role'=>'user','content'=>$prompt]],'max_tokens'=>2200,'temperature'=>0.4]);
|
||||
$provs = [
|
||||
['url'=>'https://api.cerebras.ai/v1/chat/completions','key'=>$secrets['CEREBRAS_API_KEY']??'','name'=>'Cerebras'],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-22T00:45:18+00:00",
|
||||
"ts": "2026-04-22T00:49:05+00:00",
|
||||
"summary": {
|
||||
"total_categories": 8,
|
||||
"total_kpis": 64,
|
||||
|
||||
336
arsenal-history/arsenal-102020.html
Normal file
336
arsenal-history/arsenal-102020.html
Normal file
@@ -0,0 +1,336 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr"><head>
|
||||
<link rel="icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Reporting</title>
|
||||
<meta name="description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
<style>:root{--bg:#05080f;--s:#0c1222;--a:#f0c674;--a15:rgba(240,198,116,.15);--p:#7c5cfc;--t:#00c9a7;--r:#ff6b6b;--bl:#4ea8de;--sv:#7a8ba5;--w:#edf2f7;--b:rgba(240,198,116,.08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:'Outfit',sans-serif;background:var(--bg);color:var(--w);overflow-x:hidden}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.5rem}.logo span{color:var(--a)}.btn-n{background:var(--a);color:var(--bg);padding:.55rem 1.3rem;border-radius:7px;font-weight:700;font-size:.82rem;text-decoration:none}.hero{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:7rem 4% 4rem;position:relative}.hero::after{content:'';position:absolute;top:5%;left:50%;transform:translateX(-50%);width:700px;height:700px;background:radial-gradient(circle,rgba(240,198,116,.06) 0%,transparent 70%);border-radius:50%;pointer-events:none}.badge{display:inline-flex;align-items:center;gap:.5rem;background:var(--a15);border:1px solid rgba(240,198,116,.2);border-radius:100px;padding:.35rem 1rem;font-size:.75rem;font-weight:600;color:var(--a);margin-bottom:2rem}h1{font-size:3.4rem;font-weight:800;line-height:1.08;letter-spacing:-.04em;margin-bottom:1.2rem;max-width:800px}h1 em{font-style:normal;color:var(--a)}.sub{font-size:1.05rem;color:var(--sv);max-width:600px;line-height:1.7;margin-bottom:2rem}.btns{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center}.btn-p{background:var(--a);color:var(--bg);padding:.85rem 2rem;border-radius:8px;font-weight:700;text-decoration:none;transition:all .3s}.btn-p:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(240,198,116,.25)}.btn-o{background:transparent;color:var(--w);padding:.85rem 2rem;border-radius:8px;text-decoration:none;border:1px solid rgba(255,255,255,.12)}.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;letter-spacing:-.03em;margin-bottom:.8rem}.sd{color:var(--sv);font-size:.95rem;line-height:1.7;max-width:560px;margin-bottom:2.5rem}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:rgba(240,198,116,.06);border-radius:14px;overflow:hidden;margin:2rem 0}.stat{padding:1.3rem;text-align:center;background:rgba(12,18,34,.95)}.stat-n{font-family:'Space Mono',monospace;font-size:1.6rem;font-weight:700;color:var(--a)}.stat-l{font-size:.68rem;color:var(--sv);margin-top:.15rem}.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.g2{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}.cd{background:var(--s);border:1px solid var(--b);border-radius:14px;padding:1.5rem;transition:all .3s}.cd:hover{border-color:rgba(240,198,116,.25);transform:translateY(-2px)}.cd h3{font-size:.95rem;font-weight:600;margin:.6rem 0 .3rem}.cd p{font-size:.8rem;color:var(--sv);line-height:1.55}.erps{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0}.erp{font-family:'Space Mono',monospace;font-size:.72rem;font-weight:700;padding:.4rem .8rem;border-radius:8px;background:rgba(240,198,116,.08);color:var(--a);border:1px solid rgba(240,198,116,.12);transition:all .2s}.erp:hover{background:rgba(240,198,116,.2)}.erp.active{background:rgba(240,198,116,.2);border-color:rgba(240,198,116,.4)}.vs{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin:2rem 0}.vs-card{background:var(--s);border:1px solid var(--b);border-radius:14px;padding:1.5rem}.vs-card.us{border-color:rgba(240,198,116,.2);background:rgba(240,198,116,.02)}.vs-card h3{font-size:.95rem;font-weight:700;margin-bottom:.8rem}.vs-items{font-size:.8rem;color:var(--sv);line-height:1.8}.cta{text-align:center;padding:4rem 2rem;margin:2rem 4%;background:linear-gradient(135deg,var(--s),rgba(240,198,116,.04));border:1px solid rgba(240,198,116,.1);border-radius:20px}.cta p{color:var(--sv);max-width:500px;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,.g2,.vs,.stats{grid-template-columns:1fr}footer{flex-direction:column;gap:.5rem;text-align:center}}input,select,textarea{background:#0b0d14!important;color:#e2e8f0!important;border:1px solid #1e293b!important;border-radius:8px!important}input::placeholder{color:#475569!important}</style><style>/* Hide nav in iframe */
|
||||
@media all{.in-iframe nav{display:none!important}.in-iframe .hero{padding-top:3rem!important;min-height:auto!important}.in-iframe footer{display:none!important}.in-iframe .cta{display:none!important}.in-iframe .wv-links{display:none!important}.wv-links{display:none!important}}</style>
|
||||
<script>if(window!==window.top)document.documentElement.classList.add('in-iframe');</script>
|
||||
<link rel="canonical" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<meta property="og:title" content="Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Repor">
|
||||
<meta property="og:description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<meta property="og:url" content="https://weval-consulting.com/products/arsenal.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="Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Repor">
|
||||
<meta name="twitter:description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<link rel="alternate" hreflang="fr" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<link rel="alternate" hreflang="x-default" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<link rel="stylesheet" href="/assets/dark-iframe.css"></head><body>
|
||||
<nav><div class="logo" style="display:flex;align-items:center;gap:8px"><img src="/assets/logo-arsenal.svg" alt="" style="width:32px;height:32px">Arsenal<span>.</span></div><a href="#cta" class="btn-n">Demander une démo →</a></nav>
|
||||
|
||||
<section class="hero">
|
||||
<div class="badge">Framework ERP Intelligence — En production</div>
|
||||
<h1>Votre ERP fait 80%.<br>Arsenal fait les <em>20% manquants</em></h1>
|
||||
<p class="sub">150+ écrans modulaires, Brain Engine IA, reporting temps réel. Se branche sur n'importe quel ERP (SAP, Odoo, Oracle, Salesforce, custom) pour combler les gaps fonctionnels sans remplacer l'existant.</p>
|
||||
<div class="btns"><a href="#modules" class="btn-p">Explorer les modules →</a><a href="#cta" class="btn-o">Demander une demo</a></div></section>
|
||||
|
||||
<div class="sec"><div class="stats">
|
||||
<div class="stat"><div class="stat-n">150+</div><div class="stat-l">Écrans HTML</div></div>
|
||||
<div class="stat"><div class="stat-n">38</div><div class="stat-l">Crons automatiques</div></div>
|
||||
<div class="stat"><div class="stat-n">6</div><div class="stat-l">APIs core sync</div></div>
|
||||
<div class="stat"><div class="stat-n">500+</div><div class="stat-l">Brain configs IA</div></div>
|
||||
<div class="stat"><div class="stat-n">7.3M</div><div class="stat-l">Contacts gérés</div></div>
|
||||
<div class="stat"><div class="stat-n">0</div><div class="stat-l">Pages cassées</div></div></div></div>
|
||||
|
||||
<section class="sec"><div class="stag">ERP compatibles</div><h2>Se branche sur tout</h2>
|
||||
<p class="sd">Arsenal n'est pas un ERP. C'est la couche d'intelligence qui se greffe sur votre ERP existant. Plug-and-play, zéro migration.</p>
|
||||
<div class="erps">
|
||||
<span class="erp active">WEVADS ✓ Prouvé</span>
|
||||
<span class="erp">SAP S/4HANA</span>
|
||||
<span class="erp">SAP ECC</span>
|
||||
<span class="erp">Oracle EBS</span>
|
||||
<span class="erp">Oracle Fusion</span>
|
||||
<span class="erp">Odoo</span>
|
||||
<span class="erp">Sage X3</span>
|
||||
<span class="erp">Microsoft Dynamics</span>
|
||||
<span class="erp">Salesforce</span>
|
||||
<span class="erp">JD Edwards</span>
|
||||
<span class="erp">Custom ERP</span>
|
||||
<span class="erp">Legacy Systems</span></div></section>
|
||||
|
||||
<section class="sec" id="modules"><div class="stag">Modules</div><h2>10 catégories de modules</h2>
|
||||
<p class="sd">Chaque module est un écran autonome avec API, données temps réel et IA intégrée. Activez uniquement ce dont vous avez besoin.</p>
|
||||
<div class="g3">
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Brain Engine IA</h3><p>centaines de configurations IA, 9 winners sacrés, smart failover 11 providers. Optimisation automatique des processus par machine learning. Prédiction, scoring, anomaly detection.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Data Intelligence</h3><p>Data Manager, Drill-down API, cross-database queries via connecteur. Connecte et agrège les données de toutes vos sources : ERP, CRM, fichiers, APIs externes.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><circle cx="6" cy="6" r="1" fill="currentColor"/><circle cx="6" cy="18" r="1" fill="currentColor"/></svg></div><h3>Reporting Avancé</h3><p>Dashboards temps réel, KPIs customisables, alertes automatiques. Ce que votre ERP ne montre pas — Arsenal le visualise.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Pipeline Automation</h3><p>38 crons orchestrés, workflows E2E, queue workers multi-provider. Automatisez les processus que votre ERP ne gère pas nativement.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Data Intelligence Factory</h3><p>Extraction de données web automatisée. Veille concurrentielle, enrichissement CRM, monitoring prix. 6+ sources prouvées.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15 15 0 014 10 15 15 0 01-4 10 15 15 0 01-4-10A15 15 0 0112 2z"/></svg></div><h3>Account Factory</h3><p>Création automatisée de comptes multi-providers (Exchange, cloud, DNS). centaines de comptes Exchange, 47 cloud, 191 FreeDNS gérés.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Offer Engine</h3><p>Gestion des offres, sponsors, payouts. Séparation multi-source, drill-down par offre. 85 offres actives, $265 max payout.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Scout Intelligence</h3><p>Reconnaissance et analyse d'infrastructure. Hostname mapping, IP tracking, target identification. Lookalike engine 178 personas.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div><h3>Sentinel Security</h3><p>Monitoring sécurité, exec API, commande à distance sécurisée. Cyber scanner score 73/100, OWASP, fail2ban intégré.</p></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Use Cases</div><h2>Arsenal sur le terrain</h2>
|
||||
<div class="g2">
|
||||
<div class="cd" style="border-left:3px solid var(--a)"><h3>Arsenal × Marketing Digital (WEVADS)</h3><p>150+ écrans déployés. processus complet send→open→click→conversion. Brain Engine optimisé les configs par ISP. Optimisation automatique milliers de comptes. Résultat : système complet là où l'ERP natif ne gère pas le marketing digital.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--p)"><h3>Arsenal × Manufacturing (SAP)</h3><p>Fill-gap reporting production : OEE temps réel, prédiction pannes IA, tableau de bord qualité, alertes seuils automatiques. Ce que SAP PP ne montre pas nativement.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--t)"><h3>Arsenal × Retail (Odoo)</h3><p>Intelligence commerciale : scoring client IA, prédiction stock, analytics promotion, heatmap ventes géographique. Complète Odoo Sales/Inventory.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--bl)"><h3>Arsenal × Finance (Oracle)</h3><p>Reporting financier augmenté : consolidation multi-entités, prévision trésorerie IA, alertes anomalies comptables, dashboards CFO temps réel.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--r)"><h3>Arsenal × Supply Chain</h3><p>Visibilité E2E : tracking temps réel, optimisation routes IA, prédiction délais, alertes rupture stock. Complète n'importe quel WMS/TMS.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--a)"><h3>Arsenal × RH (Dynamics)</h3><p>Analytics RH avancés : prédiction turnover, scoring candidats IA, dashboard compétences, planning formation automatisé.</p></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Différenciation</div><h2>Pourquoi pas un intégrateur classique ?</h2>
|
||||
<div class="vs">
|
||||
<div class="vs-card us"><h3 style="color:var(--a)">Arsenal (WEVAL)</h3><div class="vs-items"> Framework réutilisable — déployé en semaines, pas en mois<br> 150+ écrans prêts à brancher<br> IA native (Brain Engine centaines de configs)<br> Se greffe sur l'ERP existant — zéro migration<br> Coût 10-50x inférieur au custom SAP<br> Mises à jour continues incluses<br> Cloud souverain — vos données chez vous</div></div>
|
||||
<div class="vs-card"><h3 style="color:var(--sv)">Intégrateurs classiques (développement sur mesure)</h3><div class="vs-items"> Custom dev from scratch — 6-18 mois<br> Chaque écran facturé séparément<br> Pas d'IA intégrée nativement<br> Souvent impose une migration ERP<br> Budget 100K-500K$+<br> Maintenance facturée en plus<br> Cloud US — données hors contrôle</div></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Architecture</div><h2>Stack technique</h2>
|
||||
<div class="g3">
|
||||
<div class="cd"><h3>Frontend</h3><p>150+ écrans HTML5 standalone. Responsive. Arsenal-common.js (25KB, 6 modules partagés). Zéro framework lourd — performance maximale.</p></div>
|
||||
<div class="cd"><h3>Backend</h3><p>PHP APIs + PostgreSQL. Dual vhosts Apache (5821 + 5890). connecteur bridge cross-databases. 38 crons orchestrés.</p></div>
|
||||
<div class="cd"><h3>IA Layer</h3><p>Brain Engine : 11 providers IA (Cloud Tier 1, Cloud Tier 2, WEVIA, Gemini, WEVIA...) avec smart failover. Cloud souverain GPU dédié 20GB.</p></div></div></section>
|
||||
|
||||
<div class="cta" id="cta"><div class="stag">Deploy</div><h2>Arsenal sur votre ERP en 2 semaines</h2><p>Audit gratuit de votre ERP. On identifié les gaps et on déploie les modules Arsenal adaptés. Aucune migration nécessaire.</p><a href="#cta" class="btn-p">Demander l'audit gratuit →</a></div>
|
||||
<footer><div><strong>Arsenal</strong> · <a href="/products/">WEVAL Products</a></div><div>France · Maroc · États-Unis · International</div></footer><!-- WEVAL Product Assistant Chatbot Widget -->
|
||||
<div id="weval-bot-widget" style="position:fixed;bottom:20px;right:20px;z-index:9999;font-family:'Inter',system-ui,sans-serif">
|
||||
<style>
|
||||
#weval-bot-btn{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;cursor:pointer;box-shadow:0 4px 24px rgba(99,102,241,.4);display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s}
|
||||
#weval-bot-btn:hover{transform:scale(1.08);box-shadow:0 6px 32px rgba(99,102,241,.5)}
|
||||
#weval-bot-btn svg{width:28px;height:28px;fill:#fff}
|
||||
#weval-bot-badge{position:absolute;top:-2px;right:-2px;width:14px;height:14px;background:#22c55e;border-radius:50%;border:2px solid #fff;animation:pulse-badge 2s infinite}
|
||||
@keyframes pulse-badge{0%,100%{opacity:1}50%{opacity:.5}}
|
||||
#weval-bot-panel{display:none;position:fixed;bottom:90px;right:20px;width:380px;max-height:520px;background:#0f1629;border:1px solid rgba(99,102,241,.2);border-radius:16px;box-shadow:0 12px 48px rgba(0,0,0,.5);overflow:hidden;flex-direction:column}
|
||||
#weval-bot-panel.open{display:flex}
|
||||
#weval-bot-head{background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:14px 18px;display:flex;align-items:center;gap:10px}
|
||||
#weval-bot-head .avatar{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:18px}
|
||||
#weval-bot-head .info{flex:1;color:#fff}
|
||||
#weval-bot-head .info .name{font-weight:600;font-size:14px}
|
||||
#weval-bot-head .info .status{font-size:11px;opacity:.8}
|
||||
#weval-bot-close{background:none;border:none;color:rgba(255,255,255,.7);cursor:pointer;font-size:20px;padding:4px}
|
||||
#weval-bot-msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;min-height:280px;max-height:360px}
|
||||
.bot-msg{max-width:85%;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.5;word-wrap:break-word}
|
||||
.bot-msg.bot{background:rgba(99,102,241,.12);color:#e2e8f0;border-bottom-left-radius:4px;align-self:flex-start}
|
||||
.bot-msg.user{background:#6366f1;color:#fff;border-bottom-right-radius:4px;align-self:flex-end}
|
||||
.bot-msg a{color:#818cf8;text-decoration:underline}
|
||||
.bot-typing{display:flex;gap:4px;padding:10px 14px;align-self:flex-start}
|
||||
.bot-typing span{width:6px;height:6px;background:#6366f1;border-radius:50%;animation:bounce .6s infinite alternate}
|
||||
.bot-typing span:nth-child(2){animation-delay:.2s}
|
||||
.bot-typing span:nth-child(3){animation-delay:.4s}
|
||||
@keyframes bounce{to{opacity:.3;transform:translateY(-4px)}}
|
||||
#weval-bot-input-area{padding:10px 14px;border-top:1px solid rgba(255,255,255,.06);display:flex;gap:8px}
|
||||
#weval-bot-input{flex:1;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:8px 12px;color:#e2e8f0;font-size:13px;outline:none}
|
||||
#weval-bot-input::placeholder{color:rgba(255,255,255,.3)}
|
||||
#weval-bot-send{background:#6366f1;border:none;border-radius:8px;padding:8px 12px;color:#fff;cursor:pointer;font-size:13px;font-weight:600}
|
||||
#weval-bot-send:hover{background:#5558e6}
|
||||
.quick-btns{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
|
||||
.quick-btn{background:rgba(99,102,241,.15);border:1px solid rgba(99,102,241,.25);color:#a5b4fc;padding:5px 10px;border-radius:6px;font-size:11px;cursor:pointer;transition:all .15s}
|
||||
.quick-btn:hover{background:rgba(99,102,241,.3);color:#fff}
|
||||
</style>
|
||||
|
||||
<button id="weval-bot-btn" onclick="toggleBot()">
|
||||
<svg viewBox="0 0 24 24"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z"/></svg>
|
||||
<div id="weval-bot-badge"></div>
|
||||
</button>
|
||||
|
||||
<div id="weval-bot-panel">
|
||||
<div id="weval-bot-head">
|
||||
<div class="avatar">W</div>
|
||||
<div class="info">
|
||||
<div class="name">WEVAL Assistant</div>
|
||||
<div class="status">En ligne - 62 produits</div>
|
||||
</div>
|
||||
<button id="weval-bot-close" onclick="toggleBot()">×</button>
|
||||
</div>
|
||||
<div id="weval-bot-msgs"></div>
|
||||
<div id="weval-bot-input-area">
|
||||
<input id="weval-bot-input" placeholder="Posez une question sur nos produits..." onkeypress="if(event.key==='Enter')sendBot()">
|
||||
<button id="weval-bot-send" onclick="sendBot()">Envoyer</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const PRODUCTS_KB = {
|
||||
deliVerscore: {name:'DeliverScore',desc:'Audit délivrabilité email - SPF/DKIM/DMARC/listes de blocage. Score + recommandations IA.',price:'Gratuit + Pro $49/mo',url:'/products/deliverscore.html',category:'Email Intelligence'},
|
||||
medreach: {name:'MedReach API',desc:'Base de 18596+ professionnels de santé vérifiés (Afrique, Europe, Moyen-Orient, Asie, Europe). API REST + export.',price:'Gratuit + Pro $299/mo',url:'/products/medreach.html',category:'Data'},
|
||||
gpu: {name:'WEVIA Inference',desc:'IA-as-a-Service. WEVIA Deep, WEVIA sur GPU dédié. API IA Cloud-compatible.',price:'Gratuit + Pro $99/mo',url:'/products/gpu-inference.html',category:'IA'},
|
||||
contentfactory: {name:'AI Content Factory',desc:'Génération de contenu IA - articles, fiches produits, LinkedIn. 6 templates.',price:'Gratuit + Pro $29/mo',url:'/products/content-factory.html',category:'IA'},
|
||||
proposalai: {name:'ProposalAI',desc:'Generateur de propositions commerciales qualité Big4. Brief -> propale en 30 sec.',price:'Gratuit + Pro $19/mo',url:'/products/proposalai.html',category:'IA'},
|
||||
blueprintai: {name:'BlueprintAI',desc:'Process docs, BPMN, CDC, blueprints L1/L2/L3, 8D, RACI.',price:'$25/mo',url:'/products/blueprintai.html',category:'IA'},
|
||||
storeforge: {name:'StoreForge',desc:'E-commerce IA. Boutique en 5 min. Descriptions IA, chatbot WEVIA, paiement Maroc.',price:'0-$29/mo',url:'/products/storeforge.html',category:'Commerce'},
|
||||
leadforge: {name:'LeadForge',desc:'B2B Lead Intelligence sur mesure. Leads vérifiés tous secteurs. 0.30-0.$50/lead.',price:'0.30-0.$49/lead',url:'/products/workspace.html',category:'Data'},
|
||||
mailwarm: {name:'MailWarm',desc:'Optimisation email automatique. 500+ seeds. Inbox 90%+ en 4-6 semaines.',price:'$29/compte/mo',url:'/products/workspace.html',category:'Email'},
|
||||
sentinel: {name:'Sentinel Monitor',desc:'Cyber monitoring PME - SSL, ports, DNS, OWASP. Alertes Telegram.',price:'Gratuit + Pro $49/mo',url:'/products/workspace.html',category:'Security'},
|
||||
outreachai: {name:'OutreachAI',desc:'Cold outreach IA. Upload leads -> IA personnalisé, envoi -> tracking.',price:'$199/mo',url:'/products/workspace.html',category:'Email'},
|
||||
wevia: {name:'WEVIA White-Label',desc:'Chatbot IA clé en main. Widget embed 5 min. KB custom, memoire, vision.',price:'100-$299/mo',url:'/products/wevia-whitelabel.html',category:'IA'},
|
||||
emailverify: {name:'EmailVerify',desc:'Validation email temps réel MX+SMTP+disposable.',price:'$49/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
blacklistguard: {name:'BlacklistGuard',desc:'Monitoring 100+ listes de blocage RBL + alertes.',price:'$29/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
reputationai: {name:'RéputationAI',desc:'Score réputation domaine + historique.',price:'$39/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
copyai: {name:'CopyAI WEVAL',desc:'Copywriting IA - emails, sujets, CTA. Cloud souveraine.',price:'$39/mo',url:'/products/workspace.html',category:'IA'},
|
||||
dataharvest: {name:'DataInsight',desc:'Intelligence d\'enrichissement de donn\u00e9es B2B.',price:'$99/mo',url:'/products/workspace.html',category:'Data'},
|
||||
smsforge: {name:'SMSForge',desc:'SMS marketing international (190+ pays).',price:'$49/mo',url:'/products/workspace.html',category:'Marketing'},
|
||||
adscontrol: {name:'AdsControl',desc:'Multi-channel ads FB/Google/LinkedIn/TikTok.',price:'$99/mo',url:'/products/workspace.html',category:'Marketing'},
|
||||
wevalcrm: {name:'WEVAL CRM',desc:'CRM leger pipeline + contacts + IA.',price:'Gratuit + Pro $29/mo',url:'/products/workspace.html',category:'Business'},
|
||||
canvasai: {name:'CanvasAI',desc:'Design IA - visuels, bannieres, logos.',price:'$29/mo',url:'/products/workspace.html',category:'IA'},
|
||||
devforge: {name:'DevForge AI',desc:'12 modules dev: specs, tests, code gen, API design, security review.',price:'$199/mo',url:'/products/workspace.html',category:'Dev'},
|
||||
ethica: {name:'Ethica B2B',desc:'Plateforme HCP internationale. 5775+ medecins vérifiés.',price:'$299/mo',url:'/products/workspace.html',category:'Data'},
|
||||
arsenal: {name:'Arsenal Framework',desc:'150+ ecrans. ERP Intelligence, Brain Engine, MTA. Enterprise.',price:'2000-$9,999/mo',url:'/products/arsenal.html',category:'Flagship'},
|
||||
wevads: {name:'WEVADS Platform',desc:'Infrastructure email complete. Brain Engine centaines de configs. 6.65M contacts.',price:'Enterprise',url:'/products/wevads.html',category:'Flagship'},
|
||||
};
|
||||
|
||||
function getProductList() {
|
||||
return Object.values(PRODUCTS_KB).map(p => `<b>${p.name}</b> - ${p.desc} (<a href="${p.url}">${p.price}</a>)`).join('<br><br>');
|
||||
}
|
||||
|
||||
function findProducts(query) {
|
||||
const q = query.toLowerCase();
|
||||
const matches = [];
|
||||
const keywords = {
|
||||
email: ['deliVerscore','emailverify','blacklistguard','reputationai','mailwarm','outreachai'],
|
||||
ia: ['gpu','contentfactory','proposalai','blueprintai','copyai','canvasai','devforge','wevia'],
|
||||
data: ['medreach','leadforge','dataharvest','ethica'],
|
||||
security: ['sentinel','blacklistguard'],
|
||||
ecommerce: ['storeforge'],
|
||||
marketing: ['smsforge','adscontrol','outreachai'],
|
||||
crm: ['wevalcrm'],
|
||||
sap: ['arsenal'],
|
||||
enterprise: ['arsenal','wevads','wevia'],
|
||||
gratuit: [],
|
||||
prix: [],
|
||||
maroc: ['medreach','ethica','smsforge','storeforge'],
|
||||
};
|
||||
|
||||
for (const [kw, ids] of Object.entries(keywords)) {
|
||||
if (q.includes(kw)) ids.forEach(id => { if (!matches.includes(id)) matches.push(id); });
|
||||
}
|
||||
|
||||
// Also search in product names and descriptions
|
||||
for (const [id, p] of Object.entries(PRODUCTS_KB)) {
|
||||
if (p.name.toLowerCase().includes(q) || p.desc.toLowerCase().includes(q) || p.category.toLowerCase().includes(q)) {
|
||||
if (!matches.includes(id)) matches.push(id);
|
||||
}
|
||||
}
|
||||
|
||||
return matches.map(id => PRODUCTS_KB[id]).filter(Boolean);
|
||||
}
|
||||
|
||||
function botReply(userMsg) {
|
||||
const q = userMsg.toLowerCase();
|
||||
|
||||
// Greetings
|
||||
if (/^(bonjour|salut|hello|hi|hey|coucou)/.test(q)) {
|
||||
return `Bonjour ! Je suis l'assistant WEVAL. Nous avons <b>62 produits SaaS</b> en production. Comment puis-je vous aider ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Quels sont vos produits?')">Voir les produits</span><span class="quick-btn" onclick="askBot('email délivrabilité')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
|
||||
}
|
||||
|
||||
// List all
|
||||
if (/tous|tout|liste|produit|service|catalogue|quoi/.test(q)) {
|
||||
const cats = {};
|
||||
Object.values(PRODUCTS_KB).forEach(p => { if (!cats[p.category]) cats[p.category]=[]; cats[p.category].push(p); });
|
||||
let html = `Voici nos <b>${Object.keys(PRODUCTS_KB).length} produits</b> par categorie :<br><br>`;
|
||||
for (const [cat, prods] of Object.entries(cats)) {
|
||||
html += `<b>${cat}</b><br>`;
|
||||
prods.forEach(p => { html += `• <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='/booking.html'">Nous contacter</span></div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
// Demo / essai
|
||||
if (/demo|essai|tester|try|commencer|start/.test(q)) {
|
||||
return `Pour commencer gratuitement :<br><br>1. <a href="/products/workspace.html">Ouvrir le Workspace</a> et créer un compte<br>2. Vous aurez acces a tous les produits gratuits<br>3. Testez DeliverScore, WEVIA Inference, Content Factory...<br><br>Ou <a href="#cta">contactez-nous</a> pour une demo personnalisée !<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Ouvrir Workspace</span></div>`;
|
||||
}
|
||||
|
||||
// Specific product search
|
||||
const matches = findProducts(q);
|
||||
if (matches.length > 0) {
|
||||
let html = `J'ai trouve <b>${matches.length} produit(s)</b> correspondant :<br><br>`;
|
||||
matches.slice(0, 6).forEach(p => {
|
||||
html += `<b><a href="${p.url}">${p.name}</a></b><br>${p.desc}<br><i>${p.price}</i><br><br>`;
|
||||
});
|
||||
if (matches.length > 6) html += `...et ${matches.length - 6} autres.<br>`;
|
||||
html += `<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='${matches[0].url}'">Voir ${matches[0].name}</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
// Default - suggest contacting or browsing
|
||||
return `Je n'ai pas trouve de produit spécifique pour "${userMsg}". Nos 62 produits couvrent : Email Intelligence, IA/GPU, Data, Security, Marketing, E-commerce et Dev.<br><br><div class="quick-btns"><span class="quick-btn" onclick="askBot('tous les produits')">Voir tout</span><span class="quick-btn" onclick="window.location.href='/booking.html'">Contacter WEVAL</span><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Workspace</span></div>`;
|
||||
}
|
||||
|
||||
function toggleBot() {
|
||||
const p = document.getElementById('weval-bot-panel');
|
||||
p.classList.toggle('open');
|
||||
if (p.classList.contains('open') && document.getElementById('weval-bot-msgs').children.length === 0) {
|
||||
addMsg('bot', `Bonjour ! Je suis l'assistant produits WEVAL. Nous proposons <b>37 SaaS</b> en production. Que recherchez-vous ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Tous les produits')">Catalogue</span><span class="quick-btn" onclick="askBot('email')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('gratuit')">Gratuit</span><span class="quick-btn" onclick="askBot('demo')">Demo</span></div>`);
|
||||
}
|
||||
document.getElementById('weval-bot-badge').style.display = 'none';
|
||||
}
|
||||
|
||||
function addMsg(type, html) {
|
||||
const msgs = document.getElementById('weval-bot-msgs');
|
||||
const div = document.createElement('div');
|
||||
div.className = 'bot-msg ' + type;
|
||||
div.innerHTML = html;
|
||||
msgs.appendChild(div);
|
||||
msgs.scrollTop = msgs.scrollHeight;
|
||||
}
|
||||
|
||||
function askBot(q) {
|
||||
document.getElementById('weval-bot-input').value = q;
|
||||
sendBot();
|
||||
}
|
||||
|
||||
function sendBot() {
|
||||
const input = document.getElementById('weval-bot-input');
|
||||
const msg = input.value.trim();
|
||||
if (!msg) return;
|
||||
input.value = '';
|
||||
addMsg('user', msg);
|
||||
|
||||
// Show typing
|
||||
const msgs = document.getElementById('weval-bot-msgs');
|
||||
const typing = document.createElement('div');
|
||||
typing.className = 'bot-typing';
|
||||
typing.innerHTML = '<span></span><span></span><span></span>';
|
||||
msgs.appendChild(typing);
|
||||
msgs.scrollTop = msgs.scrollHeight;
|
||||
|
||||
setTimeout(() => {
|
||||
typing.remove();
|
||||
addMsg('bot', botReply(msg));
|
||||
}, 400 + Math.random() * 600);
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div style="display:flex;gap:2rem;justify-content:center;flex-wrap:wrap;padding:1.5rem 4%;background:rgba(255,255,255,.02);border-top:1px solid rgba(255,255,255,.04);margin:2rem 0"><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">44</strong> produits SaaS</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">Cloud</strong> souverain</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">API</strong> REST</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">RGPD</strong> conforme</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">France</strong> · Maroc · États-Unis · International</div></div>
|
||||
<style>.dm-box{background:#0c1222;border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:1.5rem;margin:2rem auto;max-width:800px}.dm-box h3{font-size:1rem;font-weight:600;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.dm-row{display:flex;gap:.6rem;margin-bottom:1rem}.dm-row input{flex:1;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:.6rem .8rem;color:#edf2f7;font-family:Outfit;font-size:.85rem;outline:none}.dm-row button{background:var(--a,#7c5cfc);color:#05080f;border:none;border-radius:8px;padding:.6rem 1.2rem;font-weight:700;cursor:pointer;font-family:Outfit;font-size:.85rem;white-space:nowrap}.dm-out{min-height:80px;padding:1rem;background:rgba(0,0,0,.2);border-radius:8px;font-size:.82rem;color:#edf2f7;line-height:1.6}.dm-out strong{color:#fff}.dm-out pre{background:rgba(0,0,0,.3);padding:.5rem;border-radius:6px;font-size:.75rem;margin:.4rem 0;overflow-x:auto}.dm-ld{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--a,#7c5cfc);margin:0 2px;animation:dmp .8s infinite}.dm-ld:nth-child(2){animation-delay:.2s}.dm-ld:nth-child(3){animation-delay:.4s}@keyframes dmp{0%,100%{opacity:1}50%{opacity:.3}}</style>
|
||||
<div class="dm-box" id="demo"><h3>⚡ Arsenal Framework — Demo Live</h3>
|
||||
<div class="dm-row"><input id="dm-arsenal" placeholder="Décrivez votre besoin ERP" onkeydown="if(event.key==='Enter')dm_arsenal()"><button onclick="dm_arsenal()">Tester</button></div>
|
||||
<div class="dm-out" id="dmo-arsenal">Testez Arsenal Framework en direct — aucune inscription.</div></div>
|
||||
<script>
|
||||
async function dm_arsenal(){var q=document.getElementById("dm-arsenal").value.trim();if(!q)return;var o=document.getElementById("dmo-arsenal");o.innerHTML='<span class="dm-ld"></span><span class="dm-ld"></span><span class="dm-ld"></span>';try{var r=await fetch("/api/weval-ia-fast.php",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:"[INSTRUCTION SYSTEME: Reponds de facon structurée et professionnelle.]\n\nDemande utilisateur: Analyse le besoin ERP et propose une solution Arsenal: "+q,mode:"full"})});var j=await r.json();o.innerHTML=(j.response||"Erreur").replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\n\n/g,"<br><br>");}catch(e){o.innerHTML="Erreur: "+e.message}}
|
||||
</script>
|
||||
<script defer src=/assets/dm-enhance.js></script></body></html>
|
||||
<!-- WEVAL Self-Service Inject -->
|
||||
<script>
|
||||
if(window===window.top){
|
||||
// Replace all contact mailto links with signup portal
|
||||
document.querySelectorAll('a[href*="mailto:"]').forEach(a => {
|
||||
if(a.classList.contains('btn-p') || a.classList.contains('btn-f') || a.classList.contains('btn-n') || a.classList.contains('btn-nav') || a.classList.contains('btn-primary') || a.classList.contains('btn-price-fill') || a.textContent.includes('Commencer') || a.textContent.includes('Commander') || a.textContent.includes('Essayer') || a.textContent.includes('Souscrire') || a.textContent.includes('Créer') || a.textContent.includes('Obtenir') || a.textContent.includes('Démarrer') || a.textContent.includes('Rejoindre')) {
|
||||
a.href = '/products/workspace.html';
|
||||
a.removeAttribute('target');
|
||||
}
|
||||
});
|
||||
// Add floating CTA
|
||||
const bar = document.createElement('div');
|
||||
bar.innerHTML = '<div style="position:fixed;bottom:0;left:0;right:0;z-index:999;background:rgba(5,8,15,0.95);backdrop-filter:blur(10px);border-top:1px solid rgba(0,201,167,0.15);padding:0.6rem 4%;display:flex;justify-content:space-between;align-items:center"><div style="font-size:0.82rem;color:#7a8ba5"><strong style="color:#edf2f7">WEVAL Products</strong> · <span style="color:#00c9a7">Self-service</span> · Inscription en 30 secondes</div><a href="/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>';
|
||||
if(window.self===window.top){document.body.appendChild(bar);}
|
||||
document.body.style.paddingBottom = '52px';
|
||||
}
|
||||
</script>
|
||||
336
arsenal-history/arsenal-110313.html
Normal file
336
arsenal-history/arsenal-110313.html
Normal file
@@ -0,0 +1,336 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr"><head>
|
||||
<link rel="icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Reporting</title>
|
||||
<meta name="description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
<style>:root{--bg:#05080f;--s:#0c1222;--a:#f0c674;--a15:rgba(240,198,116,.15);--p:#7c5cfc;--t:#00c9a7;--r:#ff6b6b;--bl:#4ea8de;--sv:#7a8ba5;--w:#edf2f7;--b:rgba(240,198,116,.08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:'Outfit',sans-serif;background:var(--bg);color:var(--w);overflow-x:hidden}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.5rem}.logo span{color:var(--a)}.btn-n{background:var(--a);color:var(--bg);padding:.55rem 1.3rem;border-radius:7px;font-weight:700;font-size:.82rem;text-decoration:none}.hero{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:7rem 4% 4rem;position:relative}.hero::after{content:'';position:absolute;top:5%;left:50%;transform:translateX(-50%);width:700px;height:700px;background:radial-gradient(circle,rgba(240,198,116,.06) 0%,transparent 70%);border-radius:50%;pointer-events:none}.badge{display:inline-flex;align-items:center;gap:.5rem;background:var(--a15);border:1px solid rgba(240,198,116,.2);border-radius:100px;padding:.35rem 1rem;font-size:.75rem;font-weight:600;color:var(--a);margin-bottom:2rem}h1{font-size:3.4rem;font-weight:800;line-height:1.08;letter-spacing:-.04em;margin-bottom:1.2rem;max-width:800px}h1 em{font-style:normal;color:var(--a)}.sub{font-size:1.05rem;color:var(--sv);max-width:600px;line-height:1.7;margin-bottom:2rem}.btns{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center}.btn-p{background:var(--a);color:var(--bg);padding:.85rem 2rem;border-radius:8px;font-weight:700;text-decoration:none;transition:all .3s}.btn-p:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(240,198,116,.25)}.btn-o{background:transparent;color:var(--w);padding:.85rem 2rem;border-radius:8px;text-decoration:none;border:1px solid rgba(255,255,255,.12)}.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;letter-spacing:-.03em;margin-bottom:.8rem}.sd{color:var(--sv);font-size:.95rem;line-height:1.7;max-width:560px;margin-bottom:2.5rem}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:rgba(240,198,116,.06);border-radius:14px;overflow:hidden;margin:2rem 0}.stat{padding:1.3rem;text-align:center;background:rgba(12,18,34,.95)}.stat-n{font-family:'Space Mono',monospace;font-size:1.6rem;font-weight:700;color:var(--a)}.stat-l{font-size:.68rem;color:var(--sv);margin-top:.15rem}.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.g2{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}.cd{background:var(--s);border:1px solid var(--b);border-radius:14px;padding:1.5rem;transition:all .3s}.cd:hover{border-color:rgba(240,198,116,.25);transform:translateY(-2px)}.cd h3{font-size:.95rem;font-weight:600;margin:.6rem 0 .3rem}.cd p{font-size:.8rem;color:var(--sv);line-height:1.55}.erps{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0}.erp{font-family:'Space Mono',monospace;font-size:.72rem;font-weight:700;padding:.4rem .8rem;border-radius:8px;background:rgba(240,198,116,.08);color:var(--a);border:1px solid rgba(240,198,116,.12);transition:all .2s}.erp:hover{background:rgba(240,198,116,.2)}.erp.active{background:rgba(240,198,116,.2);border-color:rgba(240,198,116,.4)}.vs{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin:2rem 0}.vs-card{background:var(--s);border:1px solid var(--b);border-radius:14px;padding:1.5rem}.vs-card.us{border-color:rgba(240,198,116,.2);background:rgba(240,198,116,.02)}.vs-card h3{font-size:.95rem;font-weight:700;margin-bottom:.8rem}.vs-items{font-size:.8rem;color:var(--sv);line-height:1.8}.cta{text-align:center;padding:4rem 2rem;margin:2rem 4%;background:linear-gradient(135deg,var(--s),rgba(240,198,116,.04));border:1px solid rgba(240,198,116,.1);border-radius:20px}.cta p{color:var(--sv);max-width:500px;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,.g2,.vs,.stats{grid-template-columns:1fr}footer{flex-direction:column;gap:.5rem;text-align:center}}input,select,textarea{background:#0b0d14!important;color:#e2e8f0!important;border:1px solid #1e293b!important;border-radius:8px!important}input::placeholder{color:#475569!important}</style><style>/* Hide nav in iframe */
|
||||
@media all{.in-iframe nav{display:none!important}.in-iframe .hero{padding-top:3rem!important;min-height:auto!important}.in-iframe footer{display:none!important}.in-iframe .cta{display:none!important}.in-iframe .wv-links{display:none!important}.wv-links{display:none!important}}</style>
|
||||
<script>if(window!==window.top)document.documentElement.classList.add('in-iframe');</script>
|
||||
<link rel="canonical" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<meta property="og:title" content="Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Repor">
|
||||
<meta property="og:description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<meta property="og:url" content="https://weval-consulting.com/products/arsenal.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="Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Repor">
|
||||
<meta name="twitter:description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<link rel="alternate" hreflang="fr" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<link rel="alternate" hreflang="x-default" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<link rel="stylesheet" href="/assets/dark-iframe.css"></head><body>
|
||||
<nav><div class="logo" style="display:flex;align-items:center;gap:8px"><img src="/assets/logo-arsenal.svg" alt="" style="width:32px;height:32px">Arsenal<span>.</span></div><a href="#cta" class="btn-n">Demander une démo →</a></nav>
|
||||
|
||||
<section class="hero">
|
||||
<div class="badge">Framework ERP Intelligence — En production</div>
|
||||
<h1>Votre ERP fait 80%.<br>Arsenal fait les <em>20% manquants</em></h1>
|
||||
<p class="sub">150+ écrans modulaires, Brain Engine IA, reporting temps réel. Se branche sur n'importe quel ERP (SAP, Odoo, Oracle, Salesforce, custom) pour combler les gaps fonctionnels sans remplacer l'existant.</p>
|
||||
<div class="btns"><a href="#modules" class="btn-p">Explorer les modules →</a><a href="#cta" class="btn-o">Demander une demo</a></div></section>
|
||||
|
||||
<div class="sec"><div class="stats">
|
||||
<div class="stat"><div class="stat-n">150+</div><div class="stat-l">Écrans HTML</div></div>
|
||||
<div class="stat"><div class="stat-n">38</div><div class="stat-l">Crons automatiques</div></div>
|
||||
<div class="stat"><div class="stat-n">6</div><div class="stat-l">APIs core sync</div></div>
|
||||
<div class="stat"><div class="stat-n">500+</div><div class="stat-l">Brain configs IA</div></div>
|
||||
<div class="stat"><div class="stat-n">7.3M</div><div class="stat-l">Contacts gérés</div></div>
|
||||
<div class="stat"><div class="stat-n">0</div><div class="stat-l">Pages cassées</div></div></div></div>
|
||||
|
||||
<section class="sec"><div class="stag">ERP compatibles</div><h2>Se branche sur tout</h2>
|
||||
<p class="sd">Arsenal n'est pas un ERP. C'est la couche d'intelligence qui se greffe sur votre ERP existant. Plug-and-play, zéro migration.</p>
|
||||
<div class="erps">
|
||||
<span class="erp active">WEVADS ✓ Prouvé</span>
|
||||
<span class="erp">SAP S/4HANA</span>
|
||||
<span class="erp">SAP ECC</span>
|
||||
<span class="erp">Oracle EBS</span>
|
||||
<span class="erp">Oracle Fusion</span>
|
||||
<span class="erp">Odoo</span>
|
||||
<span class="erp">Sage X3</span>
|
||||
<span class="erp">Microsoft Dynamics</span>
|
||||
<span class="erp">Salesforce</span>
|
||||
<span class="erp">JD Edwards</span>
|
||||
<span class="erp">Custom ERP</span>
|
||||
<span class="erp">Legacy Systems</span></div></section>
|
||||
|
||||
<section class="sec" id="modules"><div class="stag">Modules</div><h2>10 catégories de modules</h2>
|
||||
<p class="sd">Chaque module est un écran autonome avec API, données temps réel et IA intégrée. Activez uniquement ce dont vous avez besoin.</p>
|
||||
<div class="g3">
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Brain Engine IA</h3><p>centaines de configurations IA, 9 winners sacrés, smart failover 11 providers. Optimisation automatique des processus par machine learning. Prédiction, scoring, anomaly detection.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Data Intelligence</h3><p>Data Manager, Drill-down API, cross-database queries via connecteur. Connecte et agrège les données de toutes vos sources : ERP, CRM, fichiers, APIs externes.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><circle cx="6" cy="6" r="1" fill="currentColor"/><circle cx="6" cy="18" r="1" fill="currentColor"/></svg></div><h3>Reporting Avancé</h3><p>Dashboards temps réel, KPIs customisables, alertes automatiques. Ce que votre ERP ne montre pas — Arsenal le visualise.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Pipeline Automation</h3><p>38 crons orchestrés, workflows E2E, queue workers multi-provider. Automatisez les processus que votre ERP ne gère pas nativement.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Data Intelligence Factory</h3><p>Extraction de données web automatisée. Veille concurrentielle, enrichissement CRM, monitoring prix. 6+ sources prouvées.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15 15 0 014 10 15 15 0 01-4 10 15 15 0 01-4-10A15 15 0 0112 2z"/></svg></div><h3>Account Factory</h3><p>Création automatisée de comptes multi-providers (Exchange, cloud, DNS). centaines de comptes Exchange, 47 cloud, 191 FreeDNS gérés.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Offer Engine</h3><p>Gestion des offres, sponsors, payouts. Séparation multi-source, drill-down par offre. 85 offres actives, $265 max payout.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Scout Intelligence</h3><p>Reconnaissance et analyse d'infrastructure. Hostname mapping, IP tracking, target identification. Lookalike engine 178 personas.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div><h3>Sentinel Security</h3><p>Monitoring sécurité, exec API, commande à distance sécurisée. Cyber scanner score 73/100, OWASP, fail2ban intégré.</p></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Use Cases</div><h2>Arsenal sur le terrain</h2>
|
||||
<div class="g2">
|
||||
<div class="cd" style="border-left:3px solid var(--a)"><h3>Arsenal × Marketing Digital (WEVADS)</h3><p>150+ écrans déployés. processus complet send→open→click→conversion. Brain Engine optimisé les configs par ISP. Optimisation automatique milliers de comptes. Résultat : système complet là où l'ERP natif ne gère pas le marketing digital.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--p)"><h3>Arsenal × Manufacturing (SAP)</h3><p>Fill-gap reporting production : OEE temps réel, prédiction pannes IA, tableau de bord qualité, alertes seuils automatiques. Ce que SAP PP ne montre pas nativement.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--t)"><h3>Arsenal × Retail (Odoo)</h3><p>Intelligence commerciale : scoring client IA, prédiction stock, analytics promotion, heatmap ventes géographique. Complète Odoo Sales/Inventory.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--bl)"><h3>Arsenal × Finance (Oracle)</h3><p>Reporting financier augmenté : consolidation multi-entités, prévision trésorerie IA, alertes anomalies comptables, dashboards CFO temps réel.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--r)"><h3>Arsenal × Supply Chain</h3><p>Visibilité E2E : tracking temps réel, optimisation routes IA, prédiction délais, alertes rupture stock. Complète n'importe quel WMS/TMS.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--a)"><h3>Arsenal × RH (Dynamics)</h3><p>Analytics RH avancés : prédiction turnover, scoring candidats IA, dashboard compétences, planning formation automatisé.</p></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Différenciation</div><h2>Pourquoi pas un intégrateur classique ?</h2>
|
||||
<div class="vs">
|
||||
<div class="vs-card us"><h3 style="color:var(--a)">Arsenal (WEVAL)</h3><div class="vs-items"> Framework réutilisable — déployé en semaines, pas en mois<br> 150+ écrans prêts à brancher<br> IA native (Brain Engine centaines de configs)<br> Se greffe sur l'ERP existant — zéro migration<br> Coût 10-50x inférieur au custom SAP<br> Mises à jour continues incluses<br> Cloud souverain — vos données chez vous</div></div>
|
||||
<div class="vs-card"><h3 style="color:var(--sv)">Intégrateurs classiques (développement sur mesure)</h3><div class="vs-items"> Custom dev from scratch — 6-18 mois<br> Chaque écran facturé séparément<br> Pas d'IA intégrée nativement<br> Souvent impose une migration ERP<br> Budget 100K-500K$+<br> Maintenance facturée en plus<br> Cloud US — données hors contrôle</div></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Architecture</div><h2>Stack technique</h2>
|
||||
<div class="g3">
|
||||
<div class="cd"><h3>Frontend</h3><p>150+ écrans HTML5 standalone. Responsive. Arsenal-common.js (25KB, 6 modules partagés). Zéro framework lourd — performance maximale.</p></div>
|
||||
<div class="cd"><h3>Backend</h3><p>PHP APIs + PostgreSQL. Dual vhosts Apache (5821 + 5890). connecteur bridge cross-databases. 38 crons orchestrés.</p></div>
|
||||
<div class="cd"><h3>IA Layer</h3><p>Brain Engine : 11 providers IA (Cloud Tier 1, Cloud Tier 2, WEVIA, Gemini, WEVIA...) avec smart failover. Cloud souverain GPU dédié 20GB.</p></div></div></section>
|
||||
|
||||
<div class="cta" id="cta"><div class="stag">Deploy</div><h2>Arsenal sur votre ERP en 2 semaines</h2><p>Audit gratuit de votre ERP. On identifié les gaps et on déploie les modules Arsenal adaptés. Aucune migration nécessaire.</p><a href="#cta" class="btn-p">Demander l'audit gratuit →</a></div>
|
||||
<footer><div><strong>Arsenal</strong> · <a href="/products/">WEVAL Products</a></div><div>France · Maroc · États-Unis · International</div></footer><!-- WEVAL Product Assistant Chatbot Widget -->
|
||||
<div id="weval-bot-widget" style="position:fixed;bottom:20px;right:20px;z-index:9999;font-family:'Inter',system-ui,sans-serif">
|
||||
<style>
|
||||
#weval-bot-btn{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;cursor:pointer;box-shadow:0 4px 24px rgba(99,102,241,.4);display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s}
|
||||
#weval-bot-btn:hover{transform:scale(1.08);box-shadow:0 6px 32px rgba(99,102,241,.5)}
|
||||
#weval-bot-btn svg{width:28px;height:28px;fill:#fff}
|
||||
#weval-bot-badge{position:absolute;top:-2px;right:-2px;width:14px;height:14px;background:#22c55e;border-radius:50%;border:2px solid #fff;animation:pulse-badge 2s infinite}
|
||||
@keyframes pulse-badge{0%,100%{opacity:1}50%{opacity:.5}}
|
||||
#weval-bot-panel{display:none;position:fixed;bottom:90px;right:20px;width:380px;max-height:520px;background:#0f1629;border:1px solid rgba(99,102,241,.2);border-radius:16px;box-shadow:0 12px 48px rgba(0,0,0,.5);overflow:hidden;flex-direction:column}
|
||||
#weval-bot-panel.open{display:flex}
|
||||
#weval-bot-head{background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:14px 18px;display:flex;align-items:center;gap:10px}
|
||||
#weval-bot-head .avatar{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:18px}
|
||||
#weval-bot-head .info{flex:1;color:#fff}
|
||||
#weval-bot-head .info .name{font-weight:600;font-size:14px}
|
||||
#weval-bot-head .info .status{font-size:11px;opacity:.8}
|
||||
#weval-bot-close{background:none;border:none;color:rgba(255,255,255,.7);cursor:pointer;font-size:20px;padding:4px}
|
||||
#weval-bot-msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;min-height:280px;max-height:360px}
|
||||
.bot-msg{max-width:85%;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.5;word-wrap:break-word}
|
||||
.bot-msg.bot{background:rgba(99,102,241,.12);color:#e2e8f0;border-bottom-left-radius:4px;align-self:flex-start}
|
||||
.bot-msg.user{background:#6366f1;color:#fff;border-bottom-right-radius:4px;align-self:flex-end}
|
||||
.bot-msg a{color:#818cf8;text-decoration:underline}
|
||||
.bot-typing{display:flex;gap:4px;padding:10px 14px;align-self:flex-start}
|
||||
.bot-typing span{width:6px;height:6px;background:#6366f1;border-radius:50%;animation:bounce .6s infinite alternate}
|
||||
.bot-typing span:nth-child(2){animation-delay:.2s}
|
||||
.bot-typing span:nth-child(3){animation-delay:.4s}
|
||||
@keyframes bounce{to{opacity:.3;transform:translateY(-4px)}}
|
||||
#weval-bot-input-area{padding:10px 14px;border-top:1px solid rgba(255,255,255,.06);display:flex;gap:8px}
|
||||
#weval-bot-input{flex:1;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:8px 12px;color:#e2e8f0;font-size:13px;outline:none}
|
||||
#weval-bot-input::placeholder{color:rgba(255,255,255,.3)}
|
||||
#weval-bot-send{background:#6366f1;border:none;border-radius:8px;padding:8px 12px;color:#fff;cursor:pointer;font-size:13px;font-weight:600}
|
||||
#weval-bot-send:hover{background:#5558e6}
|
||||
.quick-btns{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
|
||||
.quick-btn{background:rgba(99,102,241,.15);border:1px solid rgba(99,102,241,.25);color:#a5b4fc;padding:5px 10px;border-radius:6px;font-size:11px;cursor:pointer;transition:all .15s}
|
||||
.quick-btn:hover{background:rgba(99,102,241,.3);color:#fff}
|
||||
</style>
|
||||
|
||||
<button id="weval-bot-btn" onclick="toggleBot()">
|
||||
<svg viewBox="0 0 24 24"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z"/></svg>
|
||||
<div id="weval-bot-badge"></div>
|
||||
</button>
|
||||
|
||||
<div id="weval-bot-panel">
|
||||
<div id="weval-bot-head">
|
||||
<div class="avatar">W</div>
|
||||
<div class="info">
|
||||
<div class="name">WEVAL Assistant</div>
|
||||
<div class="status">En ligne - 62 produits</div>
|
||||
</div>
|
||||
<button id="weval-bot-close" onclick="toggleBot()">×</button>
|
||||
</div>
|
||||
<div id="weval-bot-msgs"></div>
|
||||
<div id="weval-bot-input-area">
|
||||
<input id="weval-bot-input" placeholder="Posez une question sur nos produits..." onkeypress="if(event.key==='Enter')sendBot()">
|
||||
<button id="weval-bot-send" onclick="sendBot()">Envoyer</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const PRODUCTS_KB = {
|
||||
deliVerscore: {name:'DeliverScore',desc:'Audit délivrabilité email - SPF/DKIM/DMARC/listes de blocage. Score + recommandations IA.',price:'Gratuit + Pro $49/mo',url:'/products/deliverscore.html',category:'Email Intelligence'},
|
||||
medreach: {name:'MedReach API',desc:'Base de 18596+ professionnels de santé vérifiés (Afrique, Europe, Moyen-Orient, Asie, Europe). API REST + export.',price:'Gratuit + Pro $299/mo',url:'/products/medreach.html',category:'Data'},
|
||||
gpu: {name:'WEVIA Inference',desc:'IA-as-a-Service. WEVIA Deep, WEVIA sur GPU dédié. API IA Cloud-compatible.',price:'Gratuit + Pro $99/mo',url:'/products/gpu-inference.html',category:'IA'},
|
||||
contentfactory: {name:'AI Content Factory',desc:'Génération de contenu IA - articles, fiches produits, LinkedIn. 6 templates.',price:'Gratuit + Pro $29/mo',url:'/products/content-factory.html',category:'IA'},
|
||||
proposalai: {name:'ProposalAI',desc:'Generateur de propositions commerciales qualité Big4. Brief -> propale en 30 sec.',price:'Gratuit + Pro $19/mo',url:'/products/proposalai.html',category:'IA'},
|
||||
blueprintai: {name:'BlueprintAI',desc:'Process docs, BPMN, CDC, blueprints L1/L2/L3, 8D, RACI.',price:'$25/mo',url:'/products/blueprintai.html',category:'IA'},
|
||||
storeforge: {name:'StoreForge',desc:'E-commerce IA. Boutique en 5 min. Descriptions IA, chatbot WEVIA, paiement Maroc.',price:'0-$29/mo',url:'/products/storeforge.html',category:'Commerce'},
|
||||
leadforge: {name:'LeadForge',desc:'B2B Lead Intelligence sur mesure. Leads vérifiés tous secteurs. 0.30-0.$50/lead.',price:'0.30-0.$49/lead',url:'/products/workspace.html',category:'Data'},
|
||||
mailwarm: {name:'MailWarm',desc:'Optimisation email automatique. 500+ seeds. Inbox 90%+ en 4-6 semaines.',price:'$29/compte/mo',url:'/products/workspace.html',category:'Email'},
|
||||
sentinel: {name:'Sentinel Monitor',desc:'Cyber monitoring PME - SSL, ports, DNS, OWASP. Alertes Telegram.',price:'Gratuit + Pro $49/mo',url:'/products/workspace.html',category:'Security'},
|
||||
outreachai: {name:'OutreachAI',desc:'Cold outreach IA. Upload leads -> IA personnalisé, envoi -> tracking.',price:'$199/mo',url:'/products/workspace.html',category:'Email'},
|
||||
wevia: {name:'WEVIA White-Label',desc:'Chatbot IA clé en main. Widget embed 5 min. KB custom, memoire, vision.',price:'100-$299/mo',url:'/products/wevia-whitelabel.html',category:'IA'},
|
||||
emailverify: {name:'EmailVerify',desc:'Validation email temps réel MX+SMTP+disposable.',price:'$49/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
blacklistguard: {name:'BlacklistGuard',desc:'Monitoring 100+ listes de blocage RBL + alertes.',price:'$29/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
reputationai: {name:'RéputationAI',desc:'Score réputation domaine + historique.',price:'$39/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
copyai: {name:'CopyAI WEVAL',desc:'Copywriting IA - emails, sujets, CTA. Cloud souveraine.',price:'$39/mo',url:'/products/workspace.html',category:'IA'},
|
||||
dataharvest: {name:'DataInsight',desc:'Intelligence d\'enrichissement de donn\u00e9es B2B.',price:'$99/mo',url:'/products/workspace.html',category:'Data'},
|
||||
smsforge: {name:'SMSForge',desc:'SMS marketing international (190+ pays).',price:'$49/mo',url:'/products/workspace.html',category:'Marketing'},
|
||||
adscontrol: {name:'AdsControl',desc:'Multi-channel ads FB/Google/LinkedIn/TikTok.',price:'$99/mo',url:'/products/workspace.html',category:'Marketing'},
|
||||
wevalcrm: {name:'WEVAL CRM',desc:'CRM leger pipeline + contacts + IA.',price:'Gratuit + Pro $29/mo',url:'/products/workspace.html',category:'Business'},
|
||||
canvasai: {name:'CanvasAI',desc:'Design IA - visuels, bannieres, logos.',price:'$29/mo',url:'/products/workspace.html',category:'IA'},
|
||||
devforge: {name:'DevForge AI',desc:'12 modules dev: specs, tests, code gen, API design, security review.',price:'$199/mo',url:'/products/workspace.html',category:'Dev'},
|
||||
ethica: {name:'Ethica B2B',desc:'Plateforme HCP internationale. 5775+ medecins vérifiés.',price:'$299/mo',url:'/products/workspace.html',category:'Data'},
|
||||
arsenal: {name:'Arsenal Framework',desc:'150+ ecrans. ERP Intelligence, Brain Engine, MTA. Enterprise.',price:'2000-$9,999/mo',url:'/products/arsenal.html',category:'Flagship'},
|
||||
wevads: {name:'WEVADS Platform',desc:'Infrastructure email complete. Brain Engine centaines de configs. 6.65M contacts.',price:'Enterprise',url:'/products/wevads.html',category:'Flagship'},
|
||||
};
|
||||
|
||||
function getProductList() {
|
||||
return Object.values(PRODUCTS_KB).map(p => `<b>${p.name}</b> - ${p.desc} (<a href="${p.url}">${p.price}</a>)`).join('<br><br>');
|
||||
}
|
||||
|
||||
function findProducts(query) {
|
||||
const q = query.toLowerCase();
|
||||
const matches = [];
|
||||
const keywords = {
|
||||
email: ['deliVerscore','emailverify','blacklistguard','reputationai','mailwarm','outreachai'],
|
||||
ia: ['gpu','contentfactory','proposalai','blueprintai','copyai','canvasai','devforge','wevia'],
|
||||
data: ['medreach','leadforge','dataharvest','ethica'],
|
||||
security: ['sentinel','blacklistguard'],
|
||||
ecommerce: ['storeforge'],
|
||||
marketing: ['smsforge','adscontrol','outreachai'],
|
||||
crm: ['wevalcrm'],
|
||||
sap: ['arsenal'],
|
||||
enterprise: ['arsenal','wevads','wevia'],
|
||||
gratuit: [],
|
||||
prix: [],
|
||||
maroc: ['medreach','ethica','smsforge','storeforge'],
|
||||
};
|
||||
|
||||
for (const [kw, ids] of Object.entries(keywords)) {
|
||||
if (q.includes(kw)) ids.forEach(id => { if (!matches.includes(id)) matches.push(id); });
|
||||
}
|
||||
|
||||
// Also search in product names and descriptions
|
||||
for (const [id, p] of Object.entries(PRODUCTS_KB)) {
|
||||
if (p.name.toLowerCase().includes(q) || p.desc.toLowerCase().includes(q) || p.category.toLowerCase().includes(q)) {
|
||||
if (!matches.includes(id)) matches.push(id);
|
||||
}
|
||||
}
|
||||
|
||||
return matches.map(id => PRODUCTS_KB[id]).filter(Boolean);
|
||||
}
|
||||
|
||||
function botReply(userMsg) {
|
||||
const q = userMsg.toLowerCase();
|
||||
|
||||
// Greetings
|
||||
if (/^(bonjour|salut|hello|hi|hey|coucou)/.test(q)) {
|
||||
return `Bonjour ! Je suis l'assistant WEVAL. Nous avons <b>62 produits SaaS</b> en production. Comment puis-je vous aider ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Quels sont vos produits?')">Voir les produits</span><span class="quick-btn" onclick="askBot('email délivrabilité')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
|
||||
}
|
||||
|
||||
// List all
|
||||
if (/tous|tout|liste|produit|service|catalogue|quoi/.test(q)) {
|
||||
const cats = {};
|
||||
Object.values(PRODUCTS_KB).forEach(p => { if (!cats[p.category]) cats[p.category]=[]; cats[p.category].push(p); });
|
||||
let html = `Voici nos <b>${Object.keys(PRODUCTS_KB).length} produits</b> par categorie :<br><br>`;
|
||||
for (const [cat, prods] of Object.entries(cats)) {
|
||||
html += `<b>${cat}</b><br>`;
|
||||
prods.forEach(p => { html += `• <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='/booking.html'">Nous contacter</span></div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
// Demo / essai
|
||||
if (/demo|essai|tester|try|commencer|start/.test(q)) {
|
||||
return `Pour commencer gratuitement :<br><br>1. <a href="/products/workspace.html">Ouvrir le Workspace</a> et créer un compte<br>2. Vous aurez acces a tous les produits gratuits<br>3. Testez DeliverScore, WEVIA Inference, Content Factory...<br><br>Ou <a href="#cta">contactez-nous</a> pour une demo personnalisée !<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Ouvrir Workspace</span></div>`;
|
||||
}
|
||||
|
||||
// Specific product search
|
||||
const matches = findProducts(q);
|
||||
if (matches.length > 0) {
|
||||
let html = `J'ai trouve <b>${matches.length} produit(s)</b> correspondant :<br><br>`;
|
||||
matches.slice(0, 6).forEach(p => {
|
||||
html += `<b><a href="${p.url}">${p.name}</a></b><br>${p.desc}<br><i>${p.price}</i><br><br>`;
|
||||
});
|
||||
if (matches.length > 6) html += `...et ${matches.length - 6} autres.<br>`;
|
||||
html += `<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='${matches[0].url}'">Voir ${matches[0].name}</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
// Default - suggest contacting or browsing
|
||||
return `Je n'ai pas trouve de produit spécifique pour "${userMsg}". Nos 62 produits couvrent : Email Intelligence, IA/GPU, Data, Security, Marketing, E-commerce et Dev.<br><br><div class="quick-btns"><span class="quick-btn" onclick="askBot('tous les produits')">Voir tout</span><span class="quick-btn" onclick="window.location.href='/booking.html'">Contacter WEVAL</span><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Workspace</span></div>`;
|
||||
}
|
||||
|
||||
function toggleBot() {
|
||||
const p = document.getElementById('weval-bot-panel');
|
||||
p.classList.toggle('open');
|
||||
if (p.classList.contains('open') && document.getElementById('weval-bot-msgs').children.length === 0) {
|
||||
addMsg('bot', `Bonjour ! Je suis l'assistant produits WEVAL. Nous proposons <b>37 SaaS</b> en production. Que recherchez-vous ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Tous les produits')">Catalogue</span><span class="quick-btn" onclick="askBot('email')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('gratuit')">Gratuit</span><span class="quick-btn" onclick="askBot('demo')">Demo</span></div>`);
|
||||
}
|
||||
document.getElementById('weval-bot-badge').style.display = 'none';
|
||||
}
|
||||
|
||||
function addMsg(type, html) {
|
||||
const msgs = document.getElementById('weval-bot-msgs');
|
||||
const div = document.createElement('div');
|
||||
div.className = 'bot-msg ' + type;
|
||||
div.innerHTML = html;
|
||||
msgs.appendChild(div);
|
||||
msgs.scrollTop = msgs.scrollHeight;
|
||||
}
|
||||
|
||||
function askBot(q) {
|
||||
document.getElementById('weval-bot-input').value = q;
|
||||
sendBot();
|
||||
}
|
||||
|
||||
function sendBot() {
|
||||
const input = document.getElementById('weval-bot-input');
|
||||
const msg = input.value.trim();
|
||||
if (!msg) return;
|
||||
input.value = '';
|
||||
addMsg('user', msg);
|
||||
|
||||
// Show typing
|
||||
const msgs = document.getElementById('weval-bot-msgs');
|
||||
const typing = document.createElement('div');
|
||||
typing.className = 'bot-typing';
|
||||
typing.innerHTML = '<span></span><span></span><span></span>';
|
||||
msgs.appendChild(typing);
|
||||
msgs.scrollTop = msgs.scrollHeight;
|
||||
|
||||
setTimeout(() => {
|
||||
typing.remove();
|
||||
addMsg('bot', botReply(msg));
|
||||
}, 400 + Math.random() * 600);
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div style="display:flex;gap:2rem;justify-content:center;flex-wrap:wrap;padding:1.5rem 4%;background:rgba(255,255,255,.02);border-top:1px solid rgba(255,255,255,.04);margin:2rem 0"><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">44</strong> produits SaaS</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">Cloud</strong> souverain</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">API</strong> REST</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">RGPD</strong> conforme</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">France</strong> · Maroc · États-Unis · International</div></div>
|
||||
<style>.dm-box{background:#0c1222;border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:1.5rem;margin:2rem auto;max-width:800px}.dm-box h3{font-size:1rem;font-weight:600;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.dm-row{display:flex;gap:.6rem;margin-bottom:1rem}.dm-row input{flex:1;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:.6rem .8rem;color:#edf2f7;font-family:Outfit;font-size:.85rem;outline:none}.dm-row button{background:var(--a,#7c5cfc);color:#05080f;border:none;border-radius:8px;padding:.6rem 1.2rem;font-weight:700;cursor:pointer;font-family:Outfit;font-size:.85rem;white-space:nowrap}.dm-out{min-height:80px;padding:1rem;background:rgba(0,0,0,.2);border-radius:8px;font-size:.82rem;color:#edf2f7;line-height:1.6}.dm-out strong{color:#fff}.dm-out pre{background:rgba(0,0,0,.3);padding:.5rem;border-radius:6px;font-size:.75rem;margin:.4rem 0;overflow-x:auto}.dm-ld{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--a,#7c5cfc);margin:0 2px;animation:dmp .8s infinite}.dm-ld:nth-child(2){animation-delay:.2s}.dm-ld:nth-child(3){animation-delay:.4s}@keyframes dmp{0%,100%{opacity:1}50%{opacity:.3}}</style>
|
||||
<div class="dm-box" id="demo"><h3>⚡ Arsenal Framework — Demo Live</h3>
|
||||
<div class="dm-row"><input id="dm-arsenal" placeholder="Décrivez votre besoin ERP" onkeydown="if(event.key==='Enter')dm_arsenal()"><button onclick="dm_arsenal()">Tester</button></div>
|
||||
<div class="dm-out" id="dmo-arsenal">Testez Arsenal Framework en direct — aucune inscription.</div></div>
|
||||
<script>
|
||||
async function dm_arsenal(){var q=document.getElementById("dm-arsenal").value.trim();if(!q)return;var o=document.getElementById("dmo-arsenal");o.innerHTML='<span class="dm-ld"></span><span class="dm-ld"></span><span class="dm-ld"></span>';try{var r=await fetch("/api/weval-ia-fast.php",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:"[INSTRUCTION SYSTEME: Reponds de facon structurée et professionnelle.]\n\nDemande utilisateur: Analyse le besoin ERP et propose une solution Arsenal: "+q,mode:"full"})});var j=await r.json();o.innerHTML=(j.response||"Erreur").replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\n\n/g,"<br><br>");}catch(e){o.innerHTML="Erreur: "+e.message}}
|
||||
</script>
|
||||
<script defer src=/assets/dm-enhance.js></script></body></html>
|
||||
<!-- WEVAL Self-Service Inject -->
|
||||
<script>
|
||||
if(window===window.top){
|
||||
// Replace all contact mailto links with signup portal
|
||||
document.querySelectorAll('a[href*="mailto:"]').forEach(a => {
|
||||
if(a.classList.contains('btn-p') || a.classList.contains('btn-f') || a.classList.contains('btn-n') || a.classList.contains('btn-nav') || a.classList.contains('btn-primary') || a.classList.contains('btn-price-fill') || a.textContent.includes('Commencer') || a.textContent.includes('Commander') || a.textContent.includes('Essayer') || a.textContent.includes('Souscrire') || a.textContent.includes('Créer') || a.textContent.includes('Obtenir') || a.textContent.includes('Démarrer') || a.textContent.includes('Rejoindre')) {
|
||||
a.href = '/products/workspace.html';
|
||||
a.removeAttribute('target');
|
||||
}
|
||||
});
|
||||
// Add floating CTA
|
||||
const bar = document.createElement('div');
|
||||
bar.innerHTML = '<div style="position:fixed;bottom:0;left:0;right:0;z-index:999;background:rgba(5,8,15,0.95);backdrop-filter:blur(10px);border-top:1px solid rgba(0,201,167,0.15);padding:0.6rem 4%;display:flex;justify-content:space-between;align-items:center"><div style="font-size:0.82rem;color:#7a8ba5"><strong style="color:#edf2f7">WEVAL Products</strong> · <span style="color:#00c9a7">Self-service</span> · Inscription en 30 secondes</div><a href="/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>';
|
||||
if(window.self===window.top){document.body.appendChild(bar);}
|
||||
document.body.style.paddingBottom = '52px';
|
||||
}
|
||||
</script>
|
||||
336
arsenal-history/arsenal-111023.html
Normal file
336
arsenal-history/arsenal-111023.html
Normal file
@@ -0,0 +1,336 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr"><head>
|
||||
<link rel="icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Reporting</title>
|
||||
<meta name="description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
<style>:root{--bg:#05080f;--s:#0c1222;--a:#f0c674;--a15:rgba(240,198,116,.15);--p:#7c5cfc;--t:#00c9a7;--r:#ff6b6b;--bl:#4ea8de;--sv:#7a8ba5;--w:#edf2f7;--b:rgba(240,198,116,.08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:'Outfit',sans-serif;background:var(--bg);color:var(--w);overflow-x:hidden}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.5rem}.logo span{color:var(--a)}.btn-n{background:var(--a);color:var(--bg);padding:.55rem 1.3rem;border-radius:7px;font-weight:700;font-size:.82rem;text-decoration:none}.hero{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:7rem 4% 4rem;position:relative}.hero::after{content:'';position:absolute;top:5%;left:50%;transform:translateX(-50%);width:700px;height:700px;background:radial-gradient(circle,rgba(240,198,116,.06) 0%,transparent 70%);border-radius:50%;pointer-events:none}.badge{display:inline-flex;align-items:center;gap:.5rem;background:var(--a15);border:1px solid rgba(240,198,116,.2);border-radius:100px;padding:.35rem 1rem;font-size:.75rem;font-weight:600;color:var(--a);margin-bottom:2rem}h1{font-size:3.4rem;font-weight:800;line-height:1.08;letter-spacing:-.04em;margin-bottom:1.2rem;max-width:800px}h1 em{font-style:normal;color:var(--a)}.sub{font-size:1.05rem;color:var(--sv);max-width:600px;line-height:1.7;margin-bottom:2rem}.btns{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center}.btn-p{background:var(--a);color:var(--bg);padding:.85rem 2rem;border-radius:8px;font-weight:700;text-decoration:none;transition:all .3s}.btn-p:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(240,198,116,.25)}.btn-o{background:transparent;color:var(--w);padding:.85rem 2rem;border-radius:8px;text-decoration:none;border:1px solid rgba(255,255,255,.12)}.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;letter-spacing:-.03em;margin-bottom:.8rem}.sd{color:var(--sv);font-size:.95rem;line-height:1.7;max-width:560px;margin-bottom:2.5rem}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:rgba(240,198,116,.06);border-radius:14px;overflow:hidden;margin:2rem 0}.stat{padding:1.3rem;text-align:center;background:rgba(12,18,34,.95)}.stat-n{font-family:'Space Mono',monospace;font-size:1.6rem;font-weight:700;color:var(--a)}.stat-l{font-size:.68rem;color:var(--sv);margin-top:.15rem}.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.g2{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}.cd{background:var(--s);border:1px solid var(--b);border-radius:14px;padding:1.5rem;transition:all .3s}.cd:hover{border-color:rgba(240,198,116,.25);transform:translateY(-2px)}.cd h3{font-size:.95rem;font-weight:600;margin:.6rem 0 .3rem}.cd p{font-size:.8rem;color:var(--sv);line-height:1.55}.erps{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0}.erp{font-family:'Space Mono',monospace;font-size:.72rem;font-weight:700;padding:.4rem .8rem;border-radius:8px;background:rgba(240,198,116,.08);color:var(--a);border:1px solid rgba(240,198,116,.12);transition:all .2s}.erp:hover{background:rgba(240,198,116,.2)}.erp.active{background:rgba(240,198,116,.2);border-color:rgba(240,198,116,.4)}.vs{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin:2rem 0}.vs-card{background:var(--s);border:1px solid var(--b);border-radius:14px;padding:1.5rem}.vs-card.us{border-color:rgba(240,198,116,.2);background:rgba(240,198,116,.02)}.vs-card h3{font-size:.95rem;font-weight:700;margin-bottom:.8rem}.vs-items{font-size:.8rem;color:var(--sv);line-height:1.8}.cta{text-align:center;padding:4rem 2rem;margin:2rem 4%;background:linear-gradient(135deg,var(--s),rgba(240,198,116,.04));border:1px solid rgba(240,198,116,.1);border-radius:20px}.cta p{color:var(--sv);max-width:500px;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,.g2,.vs,.stats{grid-template-columns:1fr}footer{flex-direction:column;gap:.5rem;text-align:center}}input,select,textarea{background:#0b0d14!important;color:#e2e8f0!important;border:1px solid #1e293b!important;border-radius:8px!important}input::placeholder{color:#475569!important}</style><style>/* Hide nav in iframe */
|
||||
@media all{.in-iframe nav{display:none!important}.in-iframe .hero{padding-top:3rem!important;min-height:auto!important}.in-iframe footer{display:none!important}.in-iframe .cta{display:none!important}.in-iframe .wv-links{display:none!important}.wv-links{display:none!important}}</style>
|
||||
<script>if(window!==window.top)document.documentElement.classList.add('in-iframe');</script>
|
||||
<link rel="canonical" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<meta property="og:title" content="Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Repor">
|
||||
<meta property="og:description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<meta property="og:url" content="https://weval-consulting.com/products/arsenal.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="Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Repor">
|
||||
<meta name="twitter:description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<link rel="alternate" hreflang="fr" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<link rel="alternate" hreflang="x-default" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<link rel="stylesheet" href="/assets/dark-iframe.css"></head><body>
|
||||
<nav><div class="logo" style="display:flex;align-items:center;gap:8px"><img src="/assets/logo-arsenal.svg" alt="" style="width:32px;height:32px">Arsenal<span>.</span></div><a href="#cta" class="btn-n">Demander une démo →</a></nav>
|
||||
|
||||
<section class="hero">
|
||||
<div class="badge">Framework ERP Intelligence — En production</div>
|
||||
<h1>Votre ERP fait 80%.<br>Arsenal fait les <em>20% manquants</em></h1>
|
||||
<p class="sub">150+ écrans modulaires, Brain Engine IA, reporting temps réel. Se branche sur n'importe quel ERP (SAP, Odoo, Oracle, Salesforce, custom) pour combler les gaps fonctionnels sans remplacer l'existant.</p>
|
||||
<div class="btns"><a href="#modules" class="btn-p">Explorer les modules →</a><a href="#cta" class="btn-o">Demander une demo</a></div></section>
|
||||
|
||||
<div class="sec"><div class="stats">
|
||||
<div class="stat"><div class="stat-n">150+</div><div class="stat-l">Écrans HTML</div></div>
|
||||
<div class="stat"><div class="stat-n">38</div><div class="stat-l">Crons automatiques</div></div>
|
||||
<div class="stat"><div class="stat-n">6</div><div class="stat-l">APIs core sync</div></div>
|
||||
<div class="stat"><div class="stat-n">500+</div><div class="stat-l">Brain configs IA</div></div>
|
||||
<div class="stat"><div class="stat-n">7.3M</div><div class="stat-l">Contacts gérés</div></div>
|
||||
<div class="stat"><div class="stat-n">0</div><div class="stat-l">Pages cassées</div></div></div></div>
|
||||
|
||||
<section class="sec"><div class="stag">ERP compatibles</div><h2>Se branche sur tout</h2>
|
||||
<p class="sd">Arsenal n'est pas un ERP. C'est la couche d'intelligence qui se greffe sur votre ERP existant. Plug-and-play, zéro migration.</p>
|
||||
<div class="erps">
|
||||
<span class="erp active">WEVADS ✓ Prouvé</span>
|
||||
<span class="erp">SAP S/4HANA</span>
|
||||
<span class="erp">SAP ECC</span>
|
||||
<span class="erp">Oracle EBS</span>
|
||||
<span class="erp">Oracle Fusion</span>
|
||||
<span class="erp">Odoo</span>
|
||||
<span class="erp">Sage X3</span>
|
||||
<span class="erp">Microsoft Dynamics</span>
|
||||
<span class="erp">Salesforce</span>
|
||||
<span class="erp">JD Edwards</span>
|
||||
<span class="erp">Custom ERP</span>
|
||||
<span class="erp">Legacy Systems</span></div></section>
|
||||
|
||||
<section class="sec" id="modules"><div class="stag">Modules</div><h2>10 catégories de modules</h2>
|
||||
<p class="sd">Chaque module est un écran autonome avec API, données temps réel et IA intégrée. Activez uniquement ce dont vous avez besoin.</p>
|
||||
<div class="g3">
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Brain Engine IA</h3><p>centaines de configurations IA, 9 winners sacrés, smart failover 11 providers. Optimisation automatique des processus par machine learning. Prédiction, scoring, anomaly detection.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Data Intelligence</h3><p>Data Manager, Drill-down API, cross-database queries via connecteur. Connecte et agrège les données de toutes vos sources : ERP, CRM, fichiers, APIs externes.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><circle cx="6" cy="6" r="1" fill="currentColor"/><circle cx="6" cy="18" r="1" fill="currentColor"/></svg></div><h3>Reporting Avancé</h3><p>Dashboards temps réel, KPIs customisables, alertes automatiques. Ce que votre ERP ne montre pas — Arsenal le visualise.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Pipeline Automation</h3><p>38 crons orchestrés, workflows E2E, queue workers multi-provider. Automatisez les processus que votre ERP ne gère pas nativement.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Data Intelligence Factory</h3><p>Extraction de données web automatisée. Veille concurrentielle, enrichissement CRM, monitoring prix. 6+ sources prouvées.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15 15 0 014 10 15 15 0 01-4 10 15 15 0 01-4-10A15 15 0 0112 2z"/></svg></div><h3>Account Factory</h3><p>Création automatisée de comptes multi-providers (Exchange, cloud, DNS). centaines de comptes Exchange, 47 cloud, 191 FreeDNS gérés.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Offer Engine</h3><p>Gestion des offres, sponsors, payouts. Séparation multi-source, drill-down par offre. 85 offres actives, $265 max payout.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Scout Intelligence</h3><p>Reconnaissance et analyse d'infrastructure. Hostname mapping, IP tracking, target identification. Lookalike engine 178 personas.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div><h3>Sentinel Security</h3><p>Monitoring sécurité, exec API, commande à distance sécurisée. Cyber scanner score 73/100, OWASP, fail2ban intégré.</p></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Use Cases</div><h2>Arsenal sur le terrain</h2>
|
||||
<div class="g2">
|
||||
<div class="cd" style="border-left:3px solid var(--a)"><h3>Arsenal × Marketing Digital (WEVADS)</h3><p>150+ écrans déployés. processus complet send→open→click→conversion. Brain Engine optimisé les configs par ISP. Optimisation automatique milliers de comptes. Résultat : système complet là où l'ERP natif ne gère pas le marketing digital.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--p)"><h3>Arsenal × Manufacturing (SAP)</h3><p>Fill-gap reporting production : OEE temps réel, prédiction pannes IA, tableau de bord qualité, alertes seuils automatiques. Ce que SAP PP ne montre pas nativement.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--t)"><h3>Arsenal × Retail (Odoo)</h3><p>Intelligence commerciale : scoring client IA, prédiction stock, analytics promotion, heatmap ventes géographique. Complète Odoo Sales/Inventory.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--bl)"><h3>Arsenal × Finance (Oracle)</h3><p>Reporting financier augmenté : consolidation multi-entités, prévision trésorerie IA, alertes anomalies comptables, dashboards CFO temps réel.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--r)"><h3>Arsenal × Supply Chain</h3><p>Visibilité E2E : tracking temps réel, optimisation routes IA, prédiction délais, alertes rupture stock. Complète n'importe quel WMS/TMS.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--a)"><h3>Arsenal × RH (Dynamics)</h3><p>Analytics RH avancés : prédiction turnover, scoring candidats IA, dashboard compétences, planning formation automatisé.</p></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Différenciation</div><h2>Pourquoi pas un intégrateur classique ?</h2>
|
||||
<div class="vs">
|
||||
<div class="vs-card us"><h3 style="color:var(--a)">Arsenal (WEVAL)</h3><div class="vs-items"> Framework réutilisable — déployé en semaines, pas en mois<br> 150+ écrans prêts à brancher<br> IA native (Brain Engine centaines de configs)<br> Se greffe sur l'ERP existant — zéro migration<br> Coût 10-50x inférieur au custom SAP<br> Mises à jour continues incluses<br> Cloud souverain — vos données chez vous</div></div>
|
||||
<div class="vs-card"><h3 style="color:var(--sv)">Intégrateurs classiques (développement sur mesure)</h3><div class="vs-items"> Custom dev from scratch — 6-18 mois<br> Chaque écran facturé séparément<br> Pas d'IA intégrée nativement<br> Souvent impose une migration ERP<br> Budget 100K-500K$+<br> Maintenance facturée en plus<br> Cloud US — données hors contrôle</div></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Architecture</div><h2>Stack technique</h2>
|
||||
<div class="g3">
|
||||
<div class="cd"><h3>Frontend</h3><p>150+ écrans HTML5 standalone. Responsive. Arsenal-common.js (25KB, 6 modules partagés). Zéro framework lourd — performance maximale.</p></div>
|
||||
<div class="cd"><h3>Backend</h3><p>PHP APIs + PostgreSQL. Dual vhosts Apache (5821 + 5890). connecteur bridge cross-databases. 38 crons orchestrés.</p></div>
|
||||
<div class="cd"><h3>IA Layer</h3><p>Brain Engine : 11 providers IA (Cloud Tier 1, Cloud Tier 2, WEVIA, Gemini, WEVIA...) avec smart failover. Cloud souverain GPU dédié 20GB.</p></div></div></section>
|
||||
|
||||
<div class="cta" id="cta"><div class="stag">Deploy</div><h2>Arsenal sur votre ERP en 2 semaines</h2><p>Audit gratuit de votre ERP. On identifié les gaps et on déploie les modules Arsenal adaptés. Aucune migration nécessaire.</p><a href="#cta" class="btn-p">Demander l'audit gratuit →</a></div>
|
||||
<footer><div><strong>Arsenal</strong> · <a href="/products/">WEVAL Products</a></div><div>France · Maroc · États-Unis · International</div></footer><!-- WEVAL Product Assistant Chatbot Widget -->
|
||||
<div id="weval-bot-widget" style="position:fixed;bottom:20px;right:20px;z-index:9999;font-family:'Inter',system-ui,sans-serif">
|
||||
<style>
|
||||
#weval-bot-btn{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;cursor:pointer;box-shadow:0 4px 24px rgba(99,102,241,.4);display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s}
|
||||
#weval-bot-btn:hover{transform:scale(1.08);box-shadow:0 6px 32px rgba(99,102,241,.5)}
|
||||
#weval-bot-btn svg{width:28px;height:28px;fill:#fff}
|
||||
#weval-bot-badge{position:absolute;top:-2px;right:-2px;width:14px;height:14px;background:#22c55e;border-radius:50%;border:2px solid #fff;animation:pulse-badge 2s infinite}
|
||||
@keyframes pulse-badge{0%,100%{opacity:1}50%{opacity:.5}}
|
||||
#weval-bot-panel{display:none;position:fixed;bottom:90px;right:20px;width:380px;max-height:520px;background:#0f1629;border:1px solid rgba(99,102,241,.2);border-radius:16px;box-shadow:0 12px 48px rgba(0,0,0,.5);overflow:hidden;flex-direction:column}
|
||||
#weval-bot-panel.open{display:flex}
|
||||
#weval-bot-head{background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:14px 18px;display:flex;align-items:center;gap:10px}
|
||||
#weval-bot-head .avatar{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:18px}
|
||||
#weval-bot-head .info{flex:1;color:#fff}
|
||||
#weval-bot-head .info .name{font-weight:600;font-size:14px}
|
||||
#weval-bot-head .info .status{font-size:11px;opacity:.8}
|
||||
#weval-bot-close{background:none;border:none;color:rgba(255,255,255,.7);cursor:pointer;font-size:20px;padding:4px}
|
||||
#weval-bot-msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;min-height:280px;max-height:360px}
|
||||
.bot-msg{max-width:85%;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.5;word-wrap:break-word}
|
||||
.bot-msg.bot{background:rgba(99,102,241,.12);color:#e2e8f0;border-bottom-left-radius:4px;align-self:flex-start}
|
||||
.bot-msg.user{background:#6366f1;color:#fff;border-bottom-right-radius:4px;align-self:flex-end}
|
||||
.bot-msg a{color:#818cf8;text-decoration:underline}
|
||||
.bot-typing{display:flex;gap:4px;padding:10px 14px;align-self:flex-start}
|
||||
.bot-typing span{width:6px;height:6px;background:#6366f1;border-radius:50%;animation:bounce .6s infinite alternate}
|
||||
.bot-typing span:nth-child(2){animation-delay:.2s}
|
||||
.bot-typing span:nth-child(3){animation-delay:.4s}
|
||||
@keyframes bounce{to{opacity:.3;transform:translateY(-4px)}}
|
||||
#weval-bot-input-area{padding:10px 14px;border-top:1px solid rgba(255,255,255,.06);display:flex;gap:8px}
|
||||
#weval-bot-input{flex:1;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:8px 12px;color:#e2e8f0;font-size:13px;outline:none}
|
||||
#weval-bot-input::placeholder{color:rgba(255,255,255,.3)}
|
||||
#weval-bot-send{background:#6366f1;border:none;border-radius:8px;padding:8px 12px;color:#fff;cursor:pointer;font-size:13px;font-weight:600}
|
||||
#weval-bot-send:hover{background:#5558e6}
|
||||
.quick-btns{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
|
||||
.quick-btn{background:rgba(99,102,241,.15);border:1px solid rgba(99,102,241,.25);color:#a5b4fc;padding:5px 10px;border-radius:6px;font-size:11px;cursor:pointer;transition:all .15s}
|
||||
.quick-btn:hover{background:rgba(99,102,241,.3);color:#fff}
|
||||
</style>
|
||||
|
||||
<button id="weval-bot-btn" onclick="toggleBot()">
|
||||
<svg viewBox="0 0 24 24"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z"/></svg>
|
||||
<div id="weval-bot-badge"></div>
|
||||
</button>
|
||||
|
||||
<div id="weval-bot-panel">
|
||||
<div id="weval-bot-head">
|
||||
<div class="avatar">W</div>
|
||||
<div class="info">
|
||||
<div class="name">WEVAL Assistant</div>
|
||||
<div class="status">En ligne - 62 produits</div>
|
||||
</div>
|
||||
<button id="weval-bot-close" onclick="toggleBot()">×</button>
|
||||
</div>
|
||||
<div id="weval-bot-msgs"></div>
|
||||
<div id="weval-bot-input-area">
|
||||
<input id="weval-bot-input" placeholder="Posez une question sur nos produits..." onkeypress="if(event.key==='Enter')sendBot()">
|
||||
<button id="weval-bot-send" onclick="sendBot()">Envoyer</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const PRODUCTS_KB = {
|
||||
deliVerscore: {name:'DeliverScore',desc:'Audit délivrabilité email - SPF/DKIM/DMARC/listes de blocage. Score + recommandations IA.',price:'Gratuit + Pro $49/mo',url:'/products/deliverscore.html',category:'Email Intelligence'},
|
||||
medreach: {name:'MedReach API',desc:'Base de 18596+ professionnels de santé vérifiés (Afrique, Europe, Moyen-Orient, Asie, Europe). API REST + export.',price:'Gratuit + Pro $299/mo',url:'/products/medreach.html',category:'Data'},
|
||||
gpu: {name:'WEVIA Inference',desc:'IA-as-a-Service. WEVIA Deep, WEVIA sur GPU dédié. API IA Cloud-compatible.',price:'Gratuit + Pro $99/mo',url:'/products/gpu-inference.html',category:'IA'},
|
||||
contentfactory: {name:'AI Content Factory',desc:'Génération de contenu IA - articles, fiches produits, LinkedIn. 6 templates.',price:'Gratuit + Pro $29/mo',url:'/products/content-factory.html',category:'IA'},
|
||||
proposalai: {name:'ProposalAI',desc:'Generateur de propositions commerciales qualité Big4. Brief -> propale en 30 sec.',price:'Gratuit + Pro $19/mo',url:'/products/proposalai.html',category:'IA'},
|
||||
blueprintai: {name:'BlueprintAI',desc:'Process docs, BPMN, CDC, blueprints L1/L2/L3, 8D, RACI.',price:'$25/mo',url:'/products/blueprintai.html',category:'IA'},
|
||||
storeforge: {name:'StoreForge',desc:'E-commerce IA. Boutique en 5 min. Descriptions IA, chatbot WEVIA, paiement Maroc.',price:'0-$29/mo',url:'/products/storeforge.html',category:'Commerce'},
|
||||
leadforge: {name:'LeadForge',desc:'B2B Lead Intelligence sur mesure. Leads vérifiés tous secteurs. 0.30-0.$50/lead.',price:'0.30-0.$49/lead',url:'/products/workspace.html',category:'Data'},
|
||||
mailwarm: {name:'MailWarm',desc:'Optimisation email automatique. 500+ seeds. Inbox 90%+ en 4-6 semaines.',price:'$29/compte/mo',url:'/products/workspace.html',category:'Email'},
|
||||
sentinel: {name:'Sentinel Monitor',desc:'Cyber monitoring PME - SSL, ports, DNS, OWASP. Alertes Telegram.',price:'Gratuit + Pro $49/mo',url:'/products/workspace.html',category:'Security'},
|
||||
outreachai: {name:'OutreachAI',desc:'Cold outreach IA. Upload leads -> IA personnalisé, envoi -> tracking.',price:'$199/mo',url:'/products/workspace.html',category:'Email'},
|
||||
wevia: {name:'WEVIA White-Label',desc:'Chatbot IA clé en main. Widget embed 5 min. KB custom, memoire, vision.',price:'100-$299/mo',url:'/products/wevia-whitelabel.html',category:'IA'},
|
||||
emailverify: {name:'EmailVerify',desc:'Validation email temps réel MX+SMTP+disposable.',price:'$49/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
blacklistguard: {name:'BlacklistGuard',desc:'Monitoring 100+ listes de blocage RBL + alertes.',price:'$29/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
reputationai: {name:'RéputationAI',desc:'Score réputation domaine + historique.',price:'$39/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
copyai: {name:'CopyAI WEVAL',desc:'Copywriting IA - emails, sujets, CTA. Cloud souveraine.',price:'$39/mo',url:'/products/workspace.html',category:'IA'},
|
||||
dataharvest: {name:'DataInsight',desc:'Intelligence d\'enrichissement de donn\u00e9es B2B.',price:'$99/mo',url:'/products/workspace.html',category:'Data'},
|
||||
smsforge: {name:'SMSForge',desc:'SMS marketing international (190+ pays).',price:'$49/mo',url:'/products/workspace.html',category:'Marketing'},
|
||||
adscontrol: {name:'AdsControl',desc:'Multi-channel ads FB/Google/LinkedIn/TikTok.',price:'$99/mo',url:'/products/workspace.html',category:'Marketing'},
|
||||
wevalcrm: {name:'WEVAL CRM',desc:'CRM leger pipeline + contacts + IA.',price:'Gratuit + Pro $29/mo',url:'/products/workspace.html',category:'Business'},
|
||||
canvasai: {name:'CanvasAI',desc:'Design IA - visuels, bannieres, logos.',price:'$29/mo',url:'/products/workspace.html',category:'IA'},
|
||||
devforge: {name:'DevForge AI',desc:'12 modules dev: specs, tests, code gen, API design, security review.',price:'$199/mo',url:'/products/workspace.html',category:'Dev'},
|
||||
ethica: {name:'Ethica B2B',desc:'Plateforme HCP internationale. 5775+ medecins vérifiés.',price:'$299/mo',url:'/products/workspace.html',category:'Data'},
|
||||
arsenal: {name:'Arsenal Framework',desc:'150+ ecrans. ERP Intelligence, Brain Engine, MTA. Enterprise.',price:'2000-$9,999/mo',url:'/products/arsenal.html',category:'Flagship'},
|
||||
wevads: {name:'WEVADS Platform',desc:'Infrastructure email complete. Brain Engine centaines de configs. 6.65M contacts.',price:'Enterprise',url:'/products/wevads.html',category:'Flagship'},
|
||||
};
|
||||
|
||||
function getProductList() {
|
||||
return Object.values(PRODUCTS_KB).map(p => `<b>${p.name}</b> - ${p.desc} (<a href="${p.url}">${p.price}</a>)`).join('<br><br>');
|
||||
}
|
||||
|
||||
function findProducts(query) {
|
||||
const q = query.toLowerCase();
|
||||
const matches = [];
|
||||
const keywords = {
|
||||
email: ['deliVerscore','emailverify','blacklistguard','reputationai','mailwarm','outreachai'],
|
||||
ia: ['gpu','contentfactory','proposalai','blueprintai','copyai','canvasai','devforge','wevia'],
|
||||
data: ['medreach','leadforge','dataharvest','ethica'],
|
||||
security: ['sentinel','blacklistguard'],
|
||||
ecommerce: ['storeforge'],
|
||||
marketing: ['smsforge','adscontrol','outreachai'],
|
||||
crm: ['wevalcrm'],
|
||||
sap: ['arsenal'],
|
||||
enterprise: ['arsenal','wevads','wevia'],
|
||||
gratuit: [],
|
||||
prix: [],
|
||||
maroc: ['medreach','ethica','smsforge','storeforge'],
|
||||
};
|
||||
|
||||
for (const [kw, ids] of Object.entries(keywords)) {
|
||||
if (q.includes(kw)) ids.forEach(id => { if (!matches.includes(id)) matches.push(id); });
|
||||
}
|
||||
|
||||
// Also search in product names and descriptions
|
||||
for (const [id, p] of Object.entries(PRODUCTS_KB)) {
|
||||
if (p.name.toLowerCase().includes(q) || p.desc.toLowerCase().includes(q) || p.category.toLowerCase().includes(q)) {
|
||||
if (!matches.includes(id)) matches.push(id);
|
||||
}
|
||||
}
|
||||
|
||||
return matches.map(id => PRODUCTS_KB[id]).filter(Boolean);
|
||||
}
|
||||
|
||||
function botReply(userMsg) {
|
||||
const q = userMsg.toLowerCase();
|
||||
|
||||
// Greetings
|
||||
if (/^(bonjour|salut|hello|hi|hey|coucou)/.test(q)) {
|
||||
return `Bonjour ! Je suis l'assistant WEVAL. Nous avons <b>62 produits SaaS</b> en production. Comment puis-je vous aider ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Quels sont vos produits?')">Voir les produits</span><span class="quick-btn" onclick="askBot('email délivrabilité')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
|
||||
}
|
||||
|
||||
// List all
|
||||
if (/tous|tout|liste|produit|service|catalogue|quoi/.test(q)) {
|
||||
const cats = {};
|
||||
Object.values(PRODUCTS_KB).forEach(p => { if (!cats[p.category]) cats[p.category]=[]; cats[p.category].push(p); });
|
||||
let html = `Voici nos <b>${Object.keys(PRODUCTS_KB).length} produits</b> par categorie :<br><br>`;
|
||||
for (const [cat, prods] of Object.entries(cats)) {
|
||||
html += `<b>${cat}</b><br>`;
|
||||
prods.forEach(p => { html += `• <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='/booking.html'">Nous contacter</span></div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
// Demo / essai
|
||||
if (/demo|essai|tester|try|commencer|start/.test(q)) {
|
||||
return `Pour commencer gratuitement :<br><br>1. <a href="/products/workspace.html">Ouvrir le Workspace</a> et créer un compte<br>2. Vous aurez acces a tous les produits gratuits<br>3. Testez DeliverScore, WEVIA Inference, Content Factory...<br><br>Ou <a href="#cta">contactez-nous</a> pour une demo personnalisée !<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Ouvrir Workspace</span></div>`;
|
||||
}
|
||||
|
||||
// Specific product search
|
||||
const matches = findProducts(q);
|
||||
if (matches.length > 0) {
|
||||
let html = `J'ai trouve <b>${matches.length} produit(s)</b> correspondant :<br><br>`;
|
||||
matches.slice(0, 6).forEach(p => {
|
||||
html += `<b><a href="${p.url}">${p.name}</a></b><br>${p.desc}<br><i>${p.price}</i><br><br>`;
|
||||
});
|
||||
if (matches.length > 6) html += `...et ${matches.length - 6} autres.<br>`;
|
||||
html += `<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='${matches[0].url}'">Voir ${matches[0].name}</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
// Default - suggest contacting or browsing
|
||||
return `Je n'ai pas trouve de produit spécifique pour "${userMsg}". Nos 62 produits couvrent : Email Intelligence, IA/GPU, Data, Security, Marketing, E-commerce et Dev.<br><br><div class="quick-btns"><span class="quick-btn" onclick="askBot('tous les produits')">Voir tout</span><span class="quick-btn" onclick="window.location.href='/booking.html'">Contacter WEVAL</span><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Workspace</span></div>`;
|
||||
}
|
||||
|
||||
function toggleBot() {
|
||||
const p = document.getElementById('weval-bot-panel');
|
||||
p.classList.toggle('open');
|
||||
if (p.classList.contains('open') && document.getElementById('weval-bot-msgs').children.length === 0) {
|
||||
addMsg('bot', `Bonjour ! Je suis l'assistant produits WEVAL. Nous proposons <b>37 SaaS</b> en production. Que recherchez-vous ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Tous les produits')">Catalogue</span><span class="quick-btn" onclick="askBot('email')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('gratuit')">Gratuit</span><span class="quick-btn" onclick="askBot('demo')">Demo</span></div>`);
|
||||
}
|
||||
document.getElementById('weval-bot-badge').style.display = 'none';
|
||||
}
|
||||
|
||||
function addMsg(type, html) {
|
||||
const msgs = document.getElementById('weval-bot-msgs');
|
||||
const div = document.createElement('div');
|
||||
div.className = 'bot-msg ' + type;
|
||||
div.innerHTML = html;
|
||||
msgs.appendChild(div);
|
||||
msgs.scrollTop = msgs.scrollHeight;
|
||||
}
|
||||
|
||||
function askBot(q) {
|
||||
document.getElementById('weval-bot-input').value = q;
|
||||
sendBot();
|
||||
}
|
||||
|
||||
function sendBot() {
|
||||
const input = document.getElementById('weval-bot-input');
|
||||
const msg = input.value.trim();
|
||||
if (!msg) return;
|
||||
input.value = '';
|
||||
addMsg('user', msg);
|
||||
|
||||
// Show typing
|
||||
const msgs = document.getElementById('weval-bot-msgs');
|
||||
const typing = document.createElement('div');
|
||||
typing.className = 'bot-typing';
|
||||
typing.innerHTML = '<span></span><span></span><span></span>';
|
||||
msgs.appendChild(typing);
|
||||
msgs.scrollTop = msgs.scrollHeight;
|
||||
|
||||
setTimeout(() => {
|
||||
typing.remove();
|
||||
addMsg('bot', botReply(msg));
|
||||
}, 400 + Math.random() * 600);
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div style="display:flex;gap:2rem;justify-content:center;flex-wrap:wrap;padding:1.5rem 4%;background:rgba(255,255,255,.02);border-top:1px solid rgba(255,255,255,.04);margin:2rem 0"><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">44</strong> produits SaaS</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">Cloud</strong> souverain</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">API</strong> REST</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">RGPD</strong> conforme</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">France</strong> · Maroc · États-Unis · International</div></div>
|
||||
<style>.dm-box{background:#0c1222;border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:1.5rem;margin:2rem auto;max-width:800px}.dm-box h3{font-size:1rem;font-weight:600;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.dm-row{display:flex;gap:.6rem;margin-bottom:1rem}.dm-row input{flex:1;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:.6rem .8rem;color:#edf2f7;font-family:Outfit;font-size:.85rem;outline:none}.dm-row button{background:var(--a,#7c5cfc);color:#05080f;border:none;border-radius:8px;padding:.6rem 1.2rem;font-weight:700;cursor:pointer;font-family:Outfit;font-size:.85rem;white-space:nowrap}.dm-out{min-height:80px;padding:1rem;background:rgba(0,0,0,.2);border-radius:8px;font-size:.82rem;color:#edf2f7;line-height:1.6}.dm-out strong{color:#fff}.dm-out pre{background:rgba(0,0,0,.3);padding:.5rem;border-radius:6px;font-size:.75rem;margin:.4rem 0;overflow-x:auto}.dm-ld{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--a,#7c5cfc);margin:0 2px;animation:dmp .8s infinite}.dm-ld:nth-child(2){animation-delay:.2s}.dm-ld:nth-child(3){animation-delay:.4s}@keyframes dmp{0%,100%{opacity:1}50%{opacity:.3}}</style>
|
||||
<div class="dm-box" id="demo"><h3>⚡ Arsenal Framework — Demo Live</h3>
|
||||
<div class="dm-row"><input id="dm-arsenal" placeholder="Décrivez votre besoin ERP" onkeydown="if(event.key==='Enter')dm_arsenal()"><button onclick="dm_arsenal()">Tester</button></div>
|
||||
<div class="dm-out" id="dmo-arsenal">Testez Arsenal Framework en direct — aucune inscription.</div></div>
|
||||
<script>
|
||||
async function dm_arsenal(){var q=document.getElementById("dm-arsenal").value.trim();if(!q)return;var o=document.getElementById("dmo-arsenal");o.innerHTML='<span class="dm-ld"></span><span class="dm-ld"></span><span class="dm-ld"></span>';try{var r=await fetch("/api/weval-ia-fast.php",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:"[INSTRUCTION SYSTEME: Reponds de facon structurée et professionnelle.]\n\nDemande utilisateur: Analyse le besoin ERP et propose une solution Arsenal: "+q,mode:"full"})});var j=await r.json();o.innerHTML=(j.response||"Erreur").replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\n\n/g,"<br><br>");}catch(e){o.innerHTML="Erreur: "+e.message}}
|
||||
</script>
|
||||
<script defer src=/assets/dm-enhance.js></script></body></html>
|
||||
<!-- WEVAL Self-Service Inject -->
|
||||
<script>
|
||||
if(window===window.top){
|
||||
// Replace all contact mailto links with signup portal
|
||||
document.querySelectorAll('a[href*="mailto:"]').forEach(a => {
|
||||
if(a.classList.contains('btn-p') || a.classList.contains('btn-f') || a.classList.contains('btn-n') || a.classList.contains('btn-nav') || a.classList.contains('btn-primary') || a.classList.contains('btn-price-fill') || a.textContent.includes('Commencer') || a.textContent.includes('Commander') || a.textContent.includes('Essayer') || a.textContent.includes('Souscrire') || a.textContent.includes('Créer') || a.textContent.includes('Obtenir') || a.textContent.includes('Démarrer') || a.textContent.includes('Rejoindre')) {
|
||||
a.href = '/products/workspace.html';
|
||||
a.removeAttribute('target');
|
||||
}
|
||||
});
|
||||
// Add floating CTA
|
||||
const bar = document.createElement('div');
|
||||
bar.innerHTML = '<div style="position:fixed;bottom:0;left:0;right:0;z-index:999;background:rgba(5,8,15,0.95);backdrop-filter:blur(10px);border-top:1px solid rgba(0,201,167,0.15);padding:0.6rem 4%;display:flex;justify-content:space-between;align-items:center"><div style="font-size:0.82rem;color:#7a8ba5"><strong style="color:#edf2f7">WEVAL Products</strong> · <span style="color:#00c9a7">Self-service</span> · Inscription en 30 secondes</div><a href="/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>';
|
||||
if(window.self===window.top){document.body.appendChild(bar);}
|
||||
document.body.style.paddingBottom = '52px';
|
||||
}
|
||||
</script>
|
||||
336
arsenal-history/arsenal-112401.html
Normal file
336
arsenal-history/arsenal-112401.html
Normal file
@@ -0,0 +1,336 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr"><head>
|
||||
<link rel="icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Reporting</title>
|
||||
<meta name="description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
<style>:root{--bg:#05080f;--s:#0c1222;--a:#f0c674;--a15:rgba(240,198,116,.15);--p:#7c5cfc;--t:#00c9a7;--r:#ff6b6b;--bl:#4ea8de;--sv:#7a8ba5;--w:#edf2f7;--b:rgba(240,198,116,.08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:'Outfit',sans-serif;background:var(--bg);color:var(--w);overflow-x:hidden}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.5rem}.logo span{color:var(--a)}.btn-n{background:var(--a);color:var(--bg);padding:.55rem 1.3rem;border-radius:7px;font-weight:700;font-size:.82rem;text-decoration:none}.hero{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:7rem 4% 4rem;position:relative}.hero::after{content:'';position:absolute;top:5%;left:50%;transform:translateX(-50%);width:700px;height:700px;background:radial-gradient(circle,rgba(240,198,116,.06) 0%,transparent 70%);border-radius:50%;pointer-events:none}.badge{display:inline-flex;align-items:center;gap:.5rem;background:var(--a15);border:1px solid rgba(240,198,116,.2);border-radius:100px;padding:.35rem 1rem;font-size:.75rem;font-weight:600;color:var(--a);margin-bottom:2rem}h1{font-size:3.4rem;font-weight:800;line-height:1.08;letter-spacing:-.04em;margin-bottom:1.2rem;max-width:800px}h1 em{font-style:normal;color:var(--a)}.sub{font-size:1.05rem;color:var(--sv);max-width:600px;line-height:1.7;margin-bottom:2rem}.btns{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center}.btn-p{background:var(--a);color:var(--bg);padding:.85rem 2rem;border-radius:8px;font-weight:700;text-decoration:none;transition:all .3s}.btn-p:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(240,198,116,.25)}.btn-o{background:transparent;color:var(--w);padding:.85rem 2rem;border-radius:8px;text-decoration:none;border:1px solid rgba(255,255,255,.12)}.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;letter-spacing:-.03em;margin-bottom:.8rem}.sd{color:var(--sv);font-size:.95rem;line-height:1.7;max-width:560px;margin-bottom:2.5rem}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:rgba(240,198,116,.06);border-radius:14px;overflow:hidden;margin:2rem 0}.stat{padding:1.3rem;text-align:center;background:rgba(12,18,34,.95)}.stat-n{font-family:'Space Mono',monospace;font-size:1.6rem;font-weight:700;color:var(--a)}.stat-l{font-size:.68rem;color:var(--sv);margin-top:.15rem}.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.g2{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}.cd{background:var(--s);border:1px solid var(--b);border-radius:14px;padding:1.5rem;transition:all .3s}.cd:hover{border-color:rgba(240,198,116,.25);transform:translateY(-2px)}.cd h3{font-size:.95rem;font-weight:600;margin:.6rem 0 .3rem}.cd p{font-size:.8rem;color:var(--sv);line-height:1.55}.erps{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0}.erp{font-family:'Space Mono',monospace;font-size:.72rem;font-weight:700;padding:.4rem .8rem;border-radius:8px;background:rgba(240,198,116,.08);color:var(--a);border:1px solid rgba(240,198,116,.12);transition:all .2s}.erp:hover{background:rgba(240,198,116,.2)}.erp.active{background:rgba(240,198,116,.2);border-color:rgba(240,198,116,.4)}.vs{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin:2rem 0}.vs-card{background:var(--s);border:1px solid var(--b);border-radius:14px;padding:1.5rem}.vs-card.us{border-color:rgba(240,198,116,.2);background:rgba(240,198,116,.02)}.vs-card h3{font-size:.95rem;font-weight:700;margin-bottom:.8rem}.vs-items{font-size:.8rem;color:var(--sv);line-height:1.8}.cta{text-align:center;padding:4rem 2rem;margin:2rem 4%;background:linear-gradient(135deg,var(--s),rgba(240,198,116,.04));border:1px solid rgba(240,198,116,.1);border-radius:20px}.cta p{color:var(--sv);max-width:500px;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,.g2,.vs,.stats{grid-template-columns:1fr}footer{flex-direction:column;gap:.5rem;text-align:center}}input,select,textarea{background:#0b0d14!important;color:#e2e8f0!important;border:1px solid #1e293b!important;border-radius:8px!important}input::placeholder{color:#475569!important}</style><style>/* Hide nav in iframe */
|
||||
@media all{.in-iframe nav{display:none!important}.in-iframe .hero{padding-top:3rem!important;min-height:auto!important}.in-iframe footer{display:none!important}.in-iframe .cta{display:none!important}.in-iframe .wv-links{display:none!important}.wv-links{display:none!important}}</style>
|
||||
<script>if(window!==window.top)document.documentElement.classList.add('in-iframe');</script>
|
||||
<link rel="canonical" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<meta property="og:title" content="Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Repor">
|
||||
<meta property="og:description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<meta property="og:url" content="https://weval-consulting.com/products/arsenal.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="Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Repor">
|
||||
<meta name="twitter:description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<link rel="alternate" hreflang="fr" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<link rel="alternate" hreflang="x-default" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<link rel="stylesheet" href="/assets/dark-iframe.css"></head><body>
|
||||
<nav><div class="logo" style="display:flex;align-items:center;gap:8px"><img src="/assets/logo-arsenal.svg" alt="" style="width:32px;height:32px">Arsenal<span>.</span></div><a href="#cta" class="btn-n">Demander une démo →</a></nav>
|
||||
|
||||
<section class="hero">
|
||||
<div class="badge">Framework ERP Intelligence — En production</div>
|
||||
<h1>Votre ERP fait 80%.<br>Arsenal fait les <em>20% manquants</em></h1>
|
||||
<p class="sub">150+ écrans modulaires, Brain Engine IA, reporting temps réel. Se branche sur n'importe quel ERP (SAP, Odoo, Oracle, Salesforce, custom) pour combler les gaps fonctionnels sans remplacer l'existant.</p>
|
||||
<div class="btns"><a href="#modules" class="btn-p">Explorer les modules →</a><a href="#cta" class="btn-o">Demander une demo</a></div></section>
|
||||
|
||||
<div class="sec"><div class="stats">
|
||||
<div class="stat"><div class="stat-n">150+</div><div class="stat-l">Écrans HTML</div></div>
|
||||
<div class="stat"><div class="stat-n">38</div><div class="stat-l">Crons automatiques</div></div>
|
||||
<div class="stat"><div class="stat-n">6</div><div class="stat-l">APIs core sync</div></div>
|
||||
<div class="stat"><div class="stat-n">500+</div><div class="stat-l">Brain configs IA</div></div>
|
||||
<div class="stat"><div class="stat-n">7.3M</div><div class="stat-l">Contacts gérés</div></div>
|
||||
<div class="stat"><div class="stat-n">0</div><div class="stat-l">Pages cassées</div></div></div></div>
|
||||
|
||||
<section class="sec"><div class="stag">ERP compatibles</div><h2>Se branche sur tout</h2>
|
||||
<p class="sd">Arsenal n'est pas un ERP. C'est la couche d'intelligence qui se greffe sur votre ERP existant. Plug-and-play, zéro migration.</p>
|
||||
<div class="erps">
|
||||
<span class="erp active">WEVADS ✓ Prouvé</span>
|
||||
<span class="erp">SAP S/4HANA</span>
|
||||
<span class="erp">SAP ECC</span>
|
||||
<span class="erp">Oracle EBS</span>
|
||||
<span class="erp">Oracle Fusion</span>
|
||||
<span class="erp">Odoo</span>
|
||||
<span class="erp">Sage X3</span>
|
||||
<span class="erp">Microsoft Dynamics</span>
|
||||
<span class="erp">Salesforce</span>
|
||||
<span class="erp">JD Edwards</span>
|
||||
<span class="erp">Custom ERP</span>
|
||||
<span class="erp">Legacy Systems</span></div></section>
|
||||
|
||||
<section class="sec" id="modules"><div class="stag">Modules</div><h2>10 catégories de modules</h2>
|
||||
<p class="sd">Chaque module est un écran autonome avec API, données temps réel et IA intégrée. Activez uniquement ce dont vous avez besoin.</p>
|
||||
<div class="g3">
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Brain Engine IA</h3><p>centaines de configurations IA, 9 winners sacrés, smart failover 11 providers. Optimisation automatique des processus par machine learning. Prédiction, scoring, anomaly detection.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Data Intelligence</h3><p>Data Manager, Drill-down API, cross-database queries via connecteur. Connecte et agrège les données de toutes vos sources : ERP, CRM, fichiers, APIs externes.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><circle cx="6" cy="6" r="1" fill="currentColor"/><circle cx="6" cy="18" r="1" fill="currentColor"/></svg></div><h3>Reporting Avancé</h3><p>Dashboards temps réel, KPIs customisables, alertes automatiques. Ce que votre ERP ne montre pas — Arsenal le visualise.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Pipeline Automation</h3><p>38 crons orchestrés, workflows E2E, queue workers multi-provider. Automatisez les processus que votre ERP ne gère pas nativement.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Data Intelligence Factory</h3><p>Extraction de données web automatisée. Veille concurrentielle, enrichissement CRM, monitoring prix. 6+ sources prouvées.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15 15 0 014 10 15 15 0 01-4 10 15 15 0 01-4-10A15 15 0 0112 2z"/></svg></div><h3>Account Factory</h3><p>Création automatisée de comptes multi-providers (Exchange, cloud, DNS). centaines de comptes Exchange, 47 cloud, 191 FreeDNS gérés.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Offer Engine</h3><p>Gestion des offres, sponsors, payouts. Séparation multi-source, drill-down par offre. 85 offres actives, $265 max payout.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Scout Intelligence</h3><p>Reconnaissance et analyse d'infrastructure. Hostname mapping, IP tracking, target identification. Lookalike engine 178 personas.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div><h3>Sentinel Security</h3><p>Monitoring sécurité, exec API, commande à distance sécurisée. Cyber scanner score 73/100, OWASP, fail2ban intégré.</p></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Use Cases</div><h2>Arsenal sur le terrain</h2>
|
||||
<div class="g2">
|
||||
<div class="cd" style="border-left:3px solid var(--a)"><h3>Arsenal × Marketing Digital (WEVADS)</h3><p>150+ écrans déployés. processus complet send→open→click→conversion. Brain Engine optimisé les configs par ISP. Optimisation automatique milliers de comptes. Résultat : système complet là où l'ERP natif ne gère pas le marketing digital.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--p)"><h3>Arsenal × Manufacturing (SAP)</h3><p>Fill-gap reporting production : OEE temps réel, prédiction pannes IA, tableau de bord qualité, alertes seuils automatiques. Ce que SAP PP ne montre pas nativement.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--t)"><h3>Arsenal × Retail (Odoo)</h3><p>Intelligence commerciale : scoring client IA, prédiction stock, analytics promotion, heatmap ventes géographique. Complète Odoo Sales/Inventory.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--bl)"><h3>Arsenal × Finance (Oracle)</h3><p>Reporting financier augmenté : consolidation multi-entités, prévision trésorerie IA, alertes anomalies comptables, dashboards CFO temps réel.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--r)"><h3>Arsenal × Supply Chain</h3><p>Visibilité E2E : tracking temps réel, optimisation routes IA, prédiction délais, alertes rupture stock. Complète n'importe quel WMS/TMS.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--a)"><h3>Arsenal × RH (Dynamics)</h3><p>Analytics RH avancés : prédiction turnover, scoring candidats IA, dashboard compétences, planning formation automatisé.</p></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Différenciation</div><h2>Pourquoi pas un intégrateur classique ?</h2>
|
||||
<div class="vs">
|
||||
<div class="vs-card us"><h3 style="color:var(--a)">Arsenal (WEVAL)</h3><div class="vs-items"> Framework réutilisable — déployé en semaines, pas en mois<br> 150+ écrans prêts à brancher<br> IA native (Brain Engine centaines de configs)<br> Se greffe sur l'ERP existant — zéro migration<br> Coût 10-50x inférieur au custom SAP<br> Mises à jour continues incluses<br> Cloud souverain — vos données chez vous</div></div>
|
||||
<div class="vs-card"><h3 style="color:var(--sv)">Intégrateurs classiques (développement sur mesure)</h3><div class="vs-items"> Custom dev from scratch — 6-18 mois<br> Chaque écran facturé séparément<br> Pas d'IA intégrée nativement<br> Souvent impose une migration ERP<br> Budget 100K-500K$+<br> Maintenance facturée en plus<br> Cloud US — données hors contrôle</div></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Architecture</div><h2>Stack technique</h2>
|
||||
<div class="g3">
|
||||
<div class="cd"><h3>Frontend</h3><p>150+ écrans HTML5 standalone. Responsive. Arsenal-common.js (25KB, 6 modules partagés). Zéro framework lourd — performance maximale.</p></div>
|
||||
<div class="cd"><h3>Backend</h3><p>PHP APIs + PostgreSQL. Dual vhosts Apache (5821 + 5890). connecteur bridge cross-databases. 38 crons orchestrés.</p></div>
|
||||
<div class="cd"><h3>IA Layer</h3><p>Brain Engine : 11 providers IA (Cloud Tier 1, Cloud Tier 2, WEVIA, Gemini, WEVIA...) avec smart failover. Cloud souverain GPU dédié 20GB.</p></div></div></section>
|
||||
|
||||
<div class="cta" id="cta"><div class="stag">Deploy</div><h2>Arsenal sur votre ERP en 2 semaines</h2><p>Audit gratuit de votre ERP. On identifié les gaps et on déploie les modules Arsenal adaptés. Aucune migration nécessaire.</p><a href="#cta" class="btn-p">Demander l'audit gratuit →</a></div>
|
||||
<footer><div><strong>Arsenal</strong> · <a href="/products/">WEVAL Products</a></div><div>France · Maroc · États-Unis · International</div></footer><!-- WEVAL Product Assistant Chatbot Widget -->
|
||||
<div id="weval-bot-widget" style="position:fixed;bottom:20px;right:20px;z-index:9999;font-family:'Inter',system-ui,sans-serif">
|
||||
<style>
|
||||
#weval-bot-btn{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;cursor:pointer;box-shadow:0 4px 24px rgba(99,102,241,.4);display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s}
|
||||
#weval-bot-btn:hover{transform:scale(1.08);box-shadow:0 6px 32px rgba(99,102,241,.5)}
|
||||
#weval-bot-btn svg{width:28px;height:28px;fill:#fff}
|
||||
#weval-bot-badge{position:absolute;top:-2px;right:-2px;width:14px;height:14px;background:#22c55e;border-radius:50%;border:2px solid #fff;animation:pulse-badge 2s infinite}
|
||||
@keyframes pulse-badge{0%,100%{opacity:1}50%{opacity:.5}}
|
||||
#weval-bot-panel{display:none;position:fixed;bottom:90px;right:20px;width:380px;max-height:520px;background:#0f1629;border:1px solid rgba(99,102,241,.2);border-radius:16px;box-shadow:0 12px 48px rgba(0,0,0,.5);overflow:hidden;flex-direction:column}
|
||||
#weval-bot-panel.open{display:flex}
|
||||
#weval-bot-head{background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:14px 18px;display:flex;align-items:center;gap:10px}
|
||||
#weval-bot-head .avatar{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:18px}
|
||||
#weval-bot-head .info{flex:1;color:#fff}
|
||||
#weval-bot-head .info .name{font-weight:600;font-size:14px}
|
||||
#weval-bot-head .info .status{font-size:11px;opacity:.8}
|
||||
#weval-bot-close{background:none;border:none;color:rgba(255,255,255,.7);cursor:pointer;font-size:20px;padding:4px}
|
||||
#weval-bot-msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;min-height:280px;max-height:360px}
|
||||
.bot-msg{max-width:85%;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.5;word-wrap:break-word}
|
||||
.bot-msg.bot{background:rgba(99,102,241,.12);color:#e2e8f0;border-bottom-left-radius:4px;align-self:flex-start}
|
||||
.bot-msg.user{background:#6366f1;color:#fff;border-bottom-right-radius:4px;align-self:flex-end}
|
||||
.bot-msg a{color:#818cf8;text-decoration:underline}
|
||||
.bot-typing{display:flex;gap:4px;padding:10px 14px;align-self:flex-start}
|
||||
.bot-typing span{width:6px;height:6px;background:#6366f1;border-radius:50%;animation:bounce .6s infinite alternate}
|
||||
.bot-typing span:nth-child(2){animation-delay:.2s}
|
||||
.bot-typing span:nth-child(3){animation-delay:.4s}
|
||||
@keyframes bounce{to{opacity:.3;transform:translateY(-4px)}}
|
||||
#weval-bot-input-area{padding:10px 14px;border-top:1px solid rgba(255,255,255,.06);display:flex;gap:8px}
|
||||
#weval-bot-input{flex:1;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:8px 12px;color:#e2e8f0;font-size:13px;outline:none}
|
||||
#weval-bot-input::placeholder{color:rgba(255,255,255,.3)}
|
||||
#weval-bot-send{background:#6366f1;border:none;border-radius:8px;padding:8px 12px;color:#fff;cursor:pointer;font-size:13px;font-weight:600}
|
||||
#weval-bot-send:hover{background:#5558e6}
|
||||
.quick-btns{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
|
||||
.quick-btn{background:rgba(99,102,241,.15);border:1px solid rgba(99,102,241,.25);color:#a5b4fc;padding:5px 10px;border-radius:6px;font-size:11px;cursor:pointer;transition:all .15s}
|
||||
.quick-btn:hover{background:rgba(99,102,241,.3);color:#fff}
|
||||
</style>
|
||||
|
||||
<button id="weval-bot-btn" onclick="toggleBot()">
|
||||
<svg viewBox="0 0 24 24"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z"/></svg>
|
||||
<div id="weval-bot-badge"></div>
|
||||
</button>
|
||||
|
||||
<div id="weval-bot-panel">
|
||||
<div id="weval-bot-head">
|
||||
<div class="avatar">W</div>
|
||||
<div class="info">
|
||||
<div class="name">WEVAL Assistant</div>
|
||||
<div class="status">En ligne - 62 produits</div>
|
||||
</div>
|
||||
<button id="weval-bot-close" onclick="toggleBot()">×</button>
|
||||
</div>
|
||||
<div id="weval-bot-msgs"></div>
|
||||
<div id="weval-bot-input-area">
|
||||
<input id="weval-bot-input" placeholder="Posez une question sur nos produits..." onkeypress="if(event.key==='Enter')sendBot()">
|
||||
<button id="weval-bot-send" onclick="sendBot()">Envoyer</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const PRODUCTS_KB = {
|
||||
deliVerscore: {name:'DeliverScore',desc:'Audit délivrabilité email - SPF/DKIM/DMARC/listes de blocage. Score + recommandations IA.',price:'Gratuit + Pro $49/mo',url:'/products/deliverscore.html',category:'Email Intelligence'},
|
||||
medreach: {name:'MedReach API',desc:'Base de 18596+ professionnels de santé vérifiés (Afrique, Europe, Moyen-Orient, Asie, Europe). API REST + export.',price:'Gratuit + Pro $299/mo',url:'/products/medreach.html',category:'Data'},
|
||||
gpu: {name:'WEVIA Inference',desc:'IA-as-a-Service. WEVIA Deep, WEVIA sur GPU dédié. API IA Cloud-compatible.',price:'Gratuit + Pro $99/mo',url:'/products/gpu-inference.html',category:'IA'},
|
||||
contentfactory: {name:'AI Content Factory',desc:'Génération de contenu IA - articles, fiches produits, LinkedIn. 6 templates.',price:'Gratuit + Pro $29/mo',url:'/products/content-factory.html',category:'IA'},
|
||||
proposalai: {name:'ProposalAI',desc:'Generateur de propositions commerciales qualité Big4. Brief -> propale en 30 sec.',price:'Gratuit + Pro $19/mo',url:'/products/proposalai.html',category:'IA'},
|
||||
blueprintai: {name:'BlueprintAI',desc:'Process docs, BPMN, CDC, blueprints L1/L2/L3, 8D, RACI.',price:'$25/mo',url:'/products/blueprintai.html',category:'IA'},
|
||||
storeforge: {name:'StoreForge',desc:'E-commerce IA. Boutique en 5 min. Descriptions IA, chatbot WEVIA, paiement Maroc.',price:'0-$29/mo',url:'/products/storeforge.html',category:'Commerce'},
|
||||
leadforge: {name:'LeadForge',desc:'B2B Lead Intelligence sur mesure. Leads vérifiés tous secteurs. 0.30-0.$50/lead.',price:'0.30-0.$49/lead',url:'/products/workspace.html',category:'Data'},
|
||||
mailwarm: {name:'MailWarm',desc:'Optimisation email automatique. 500+ seeds. Inbox 90%+ en 4-6 semaines.',price:'$29/compte/mo',url:'/products/workspace.html',category:'Email'},
|
||||
sentinel: {name:'Sentinel Monitor',desc:'Cyber monitoring PME - SSL, ports, DNS, OWASP. Alertes Telegram.',price:'Gratuit + Pro $49/mo',url:'/products/workspace.html',category:'Security'},
|
||||
outreachai: {name:'OutreachAI',desc:'Cold outreach IA. Upload leads -> IA personnalisé, envoi -> tracking.',price:'$199/mo',url:'/products/workspace.html',category:'Email'},
|
||||
wevia: {name:'WEVIA White-Label',desc:'Chatbot IA clé en main. Widget embed 5 min. KB custom, memoire, vision.',price:'100-$299/mo',url:'/products/wevia-whitelabel.html',category:'IA'},
|
||||
emailverify: {name:'EmailVerify',desc:'Validation email temps réel MX+SMTP+disposable.',price:'$49/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
blacklistguard: {name:'BlacklistGuard',desc:'Monitoring 100+ listes de blocage RBL + alertes.',price:'$29/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
reputationai: {name:'RéputationAI',desc:'Score réputation domaine + historique.',price:'$39/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
copyai: {name:'CopyAI WEVAL',desc:'Copywriting IA - emails, sujets, CTA. Cloud souveraine.',price:'$39/mo',url:'/products/workspace.html',category:'IA'},
|
||||
dataharvest: {name:'DataInsight',desc:'Intelligence d\'enrichissement de donn\u00e9es B2B.',price:'$99/mo',url:'/products/workspace.html',category:'Data'},
|
||||
smsforge: {name:'SMSForge',desc:'SMS marketing international (190+ pays).',price:'$49/mo',url:'/products/workspace.html',category:'Marketing'},
|
||||
adscontrol: {name:'AdsControl',desc:'Multi-channel ads FB/Google/LinkedIn/TikTok.',price:'$99/mo',url:'/products/workspace.html',category:'Marketing'},
|
||||
wevalcrm: {name:'WEVAL CRM',desc:'CRM leger pipeline + contacts + IA.',price:'Gratuit + Pro $29/mo',url:'/products/workspace.html',category:'Business'},
|
||||
canvasai: {name:'CanvasAI',desc:'Design IA - visuels, bannieres, logos.',price:'$29/mo',url:'/products/workspace.html',category:'IA'},
|
||||
devforge: {name:'DevForge AI',desc:'12 modules dev: specs, tests, code gen, API design, security review.',price:'$199/mo',url:'/products/workspace.html',category:'Dev'},
|
||||
ethica: {name:'Ethica B2B',desc:'Plateforme HCP internationale. 5775+ medecins vérifiés.',price:'$299/mo',url:'/products/workspace.html',category:'Data'},
|
||||
arsenal: {name:'Arsenal Framework',desc:'150+ ecrans. ERP Intelligence, Brain Engine, MTA. Enterprise.',price:'2000-$9,999/mo',url:'/products/arsenal.html',category:'Flagship'},
|
||||
wevads: {name:'WEVADS Platform',desc:'Infrastructure email complete. Brain Engine centaines de configs. 6.65M contacts.',price:'Enterprise',url:'/products/wevads.html',category:'Flagship'},
|
||||
};
|
||||
|
||||
function getProductList() {
|
||||
return Object.values(PRODUCTS_KB).map(p => `<b>${p.name}</b> - ${p.desc} (<a href="${p.url}">${p.price}</a>)`).join('<br><br>');
|
||||
}
|
||||
|
||||
function findProducts(query) {
|
||||
const q = query.toLowerCase();
|
||||
const matches = [];
|
||||
const keywords = {
|
||||
email: ['deliVerscore','emailverify','blacklistguard','reputationai','mailwarm','outreachai'],
|
||||
ia: ['gpu','contentfactory','proposalai','blueprintai','copyai','canvasai','devforge','wevia'],
|
||||
data: ['medreach','leadforge','dataharvest','ethica'],
|
||||
security: ['sentinel','blacklistguard'],
|
||||
ecommerce: ['storeforge'],
|
||||
marketing: ['smsforge','adscontrol','outreachai'],
|
||||
crm: ['wevalcrm'],
|
||||
sap: ['arsenal'],
|
||||
enterprise: ['arsenal','wevads','wevia'],
|
||||
gratuit: [],
|
||||
prix: [],
|
||||
maroc: ['medreach','ethica','smsforge','storeforge'],
|
||||
};
|
||||
|
||||
for (const [kw, ids] of Object.entries(keywords)) {
|
||||
if (q.includes(kw)) ids.forEach(id => { if (!matches.includes(id)) matches.push(id); });
|
||||
}
|
||||
|
||||
// Also search in product names and descriptions
|
||||
for (const [id, p] of Object.entries(PRODUCTS_KB)) {
|
||||
if (p.name.toLowerCase().includes(q) || p.desc.toLowerCase().includes(q) || p.category.toLowerCase().includes(q)) {
|
||||
if (!matches.includes(id)) matches.push(id);
|
||||
}
|
||||
}
|
||||
|
||||
return matches.map(id => PRODUCTS_KB[id]).filter(Boolean);
|
||||
}
|
||||
|
||||
function botReply(userMsg) {
|
||||
const q = userMsg.toLowerCase();
|
||||
|
||||
// Greetings
|
||||
if (/^(bonjour|salut|hello|hi|hey|coucou)/.test(q)) {
|
||||
return `Bonjour ! Je suis l'assistant WEVAL. Nous avons <b>62 produits SaaS</b> en production. Comment puis-je vous aider ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Quels sont vos produits?')">Voir les produits</span><span class="quick-btn" onclick="askBot('email délivrabilité')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
|
||||
}
|
||||
|
||||
// List all
|
||||
if (/tous|tout|liste|produit|service|catalogue|quoi/.test(q)) {
|
||||
const cats = {};
|
||||
Object.values(PRODUCTS_KB).forEach(p => { if (!cats[p.category]) cats[p.category]=[]; cats[p.category].push(p); });
|
||||
let html = `Voici nos <b>${Object.keys(PRODUCTS_KB).length} produits</b> par categorie :<br><br>`;
|
||||
for (const [cat, prods] of Object.entries(cats)) {
|
||||
html += `<b>${cat}</b><br>`;
|
||||
prods.forEach(p => { html += `• <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='/booking.html'">Nous contacter</span></div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
// Demo / essai
|
||||
if (/demo|essai|tester|try|commencer|start/.test(q)) {
|
||||
return `Pour commencer gratuitement :<br><br>1. <a href="/products/workspace.html">Ouvrir le Workspace</a> et créer un compte<br>2. Vous aurez acces a tous les produits gratuits<br>3. Testez DeliverScore, WEVIA Inference, Content Factory...<br><br>Ou <a href="#cta">contactez-nous</a> pour une demo personnalisée !<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Ouvrir Workspace</span></div>`;
|
||||
}
|
||||
|
||||
// Specific product search
|
||||
const matches = findProducts(q);
|
||||
if (matches.length > 0) {
|
||||
let html = `J'ai trouve <b>${matches.length} produit(s)</b> correspondant :<br><br>`;
|
||||
matches.slice(0, 6).forEach(p => {
|
||||
html += `<b><a href="${p.url}">${p.name}</a></b><br>${p.desc}<br><i>${p.price}</i><br><br>`;
|
||||
});
|
||||
if (matches.length > 6) html += `...et ${matches.length - 6} autres.<br>`;
|
||||
html += `<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='${matches[0].url}'">Voir ${matches[0].name}</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
// Default - suggest contacting or browsing
|
||||
return `Je n'ai pas trouve de produit spécifique pour "${userMsg}". Nos 62 produits couvrent : Email Intelligence, IA/GPU, Data, Security, Marketing, E-commerce et Dev.<br><br><div class="quick-btns"><span class="quick-btn" onclick="askBot('tous les produits')">Voir tout</span><span class="quick-btn" onclick="window.location.href='/booking.html'">Contacter WEVAL</span><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Workspace</span></div>`;
|
||||
}
|
||||
|
||||
function toggleBot() {
|
||||
const p = document.getElementById('weval-bot-panel');
|
||||
p.classList.toggle('open');
|
||||
if (p.classList.contains('open') && document.getElementById('weval-bot-msgs').children.length === 0) {
|
||||
addMsg('bot', `Bonjour ! Je suis l'assistant produits WEVAL. Nous proposons <b>37 SaaS</b> en production. Que recherchez-vous ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Tous les produits')">Catalogue</span><span class="quick-btn" onclick="askBot('email')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('gratuit')">Gratuit</span><span class="quick-btn" onclick="askBot('demo')">Demo</span></div>`);
|
||||
}
|
||||
document.getElementById('weval-bot-badge').style.display = 'none';
|
||||
}
|
||||
|
||||
function addMsg(type, html) {
|
||||
const msgs = document.getElementById('weval-bot-msgs');
|
||||
const div = document.createElement('div');
|
||||
div.className = 'bot-msg ' + type;
|
||||
div.innerHTML = html;
|
||||
msgs.appendChild(div);
|
||||
msgs.scrollTop = msgs.scrollHeight;
|
||||
}
|
||||
|
||||
function askBot(q) {
|
||||
document.getElementById('weval-bot-input').value = q;
|
||||
sendBot();
|
||||
}
|
||||
|
||||
function sendBot() {
|
||||
const input = document.getElementById('weval-bot-input');
|
||||
const msg = input.value.trim();
|
||||
if (!msg) return;
|
||||
input.value = '';
|
||||
addMsg('user', msg);
|
||||
|
||||
// Show typing
|
||||
const msgs = document.getElementById('weval-bot-msgs');
|
||||
const typing = document.createElement('div');
|
||||
typing.className = 'bot-typing';
|
||||
typing.innerHTML = '<span></span><span></span><span></span>';
|
||||
msgs.appendChild(typing);
|
||||
msgs.scrollTop = msgs.scrollHeight;
|
||||
|
||||
setTimeout(() => {
|
||||
typing.remove();
|
||||
addMsg('bot', botReply(msg));
|
||||
}, 400 + Math.random() * 600);
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div style="display:flex;gap:2rem;justify-content:center;flex-wrap:wrap;padding:1.5rem 4%;background:rgba(255,255,255,.02);border-top:1px solid rgba(255,255,255,.04);margin:2rem 0"><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">44</strong> produits SaaS</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">Cloud</strong> souverain</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">API</strong> REST</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">RGPD</strong> conforme</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">France</strong> · Maroc · États-Unis · International</div></div>
|
||||
<style>.dm-box{background:#0c1222;border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:1.5rem;margin:2rem auto;max-width:800px}.dm-box h3{font-size:1rem;font-weight:600;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.dm-row{display:flex;gap:.6rem;margin-bottom:1rem}.dm-row input{flex:1;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:.6rem .8rem;color:#edf2f7;font-family:Outfit;font-size:.85rem;outline:none}.dm-row button{background:var(--a,#7c5cfc);color:#05080f;border:none;border-radius:8px;padding:.6rem 1.2rem;font-weight:700;cursor:pointer;font-family:Outfit;font-size:.85rem;white-space:nowrap}.dm-out{min-height:80px;padding:1rem;background:rgba(0,0,0,.2);border-radius:8px;font-size:.82rem;color:#edf2f7;line-height:1.6}.dm-out strong{color:#fff}.dm-out pre{background:rgba(0,0,0,.3);padding:.5rem;border-radius:6px;font-size:.75rem;margin:.4rem 0;overflow-x:auto}.dm-ld{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--a,#7c5cfc);margin:0 2px;animation:dmp .8s infinite}.dm-ld:nth-child(2){animation-delay:.2s}.dm-ld:nth-child(3){animation-delay:.4s}@keyframes dmp{0%,100%{opacity:1}50%{opacity:.3}}</style>
|
||||
<div class="dm-box" id="demo"><h3>⚡ Arsenal Framework — Demo Live</h3>
|
||||
<div class="dm-row"><input id="dm-arsenal" placeholder="Décrivez votre besoin ERP" onkeydown="if(event.key==='Enter')dm_arsenal()"><button onclick="dm_arsenal()">Tester</button></div>
|
||||
<div class="dm-out" id="dmo-arsenal">Testez Arsenal Framework en direct — aucune inscription.</div></div>
|
||||
<script>
|
||||
async function dm_arsenal(){var q=document.getElementById("dm-arsenal").value.trim();if(!q)return;var o=document.getElementById("dmo-arsenal");o.innerHTML='<span class="dm-ld"></span><span class="dm-ld"></span><span class="dm-ld"></span>';try{var r=await fetch("/api/weval-ia-fast.php",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:"[INSTRUCTION SYSTEME: Reponds de facon structurée et professionnelle.]\n\nDemande utilisateur: Analyse le besoin ERP et propose une solution Arsenal: "+q,mode:"full"})});var j=await r.json();o.innerHTML=(j.response||"Erreur").replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\n\n/g,"<br><br>");}catch(e){o.innerHTML="Erreur: "+e.message}}
|
||||
</script>
|
||||
<script defer src=/assets/dm-enhance.js></script></body></html>
|
||||
<!-- WEVAL Self-Service Inject -->
|
||||
<script>
|
||||
if(window===window.top){
|
||||
// Replace all contact mailto links with signup portal
|
||||
document.querySelectorAll('a[href*="mailto:"]').forEach(a => {
|
||||
if(a.classList.contains('btn-p') || a.classList.contains('btn-f') || a.classList.contains('btn-n') || a.classList.contains('btn-nav') || a.classList.contains('btn-primary') || a.classList.contains('btn-price-fill') || a.textContent.includes('Commencer') || a.textContent.includes('Commander') || a.textContent.includes('Essayer') || a.textContent.includes('Souscrire') || a.textContent.includes('Créer') || a.textContent.includes('Obtenir') || a.textContent.includes('Démarrer') || a.textContent.includes('Rejoindre')) {
|
||||
a.href = '/products/workspace.html';
|
||||
a.removeAttribute('target');
|
||||
}
|
||||
});
|
||||
// Add floating CTA
|
||||
const bar = document.createElement('div');
|
||||
bar.innerHTML = '<div style="position:fixed;bottom:0;left:0;right:0;z-index:999;background:rgba(5,8,15,0.95);backdrop-filter:blur(10px);border-top:1px solid rgba(0,201,167,0.15);padding:0.6rem 4%;display:flex;justify-content:space-between;align-items:center"><div style="font-size:0.82rem;color:#7a8ba5"><strong style="color:#edf2f7">WEVAL Products</strong> · <span style="color:#00c9a7">Self-service</span> · Inscription en 30 secondes</div><a href="/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>';
|
||||
if(window.self===window.top){document.body.appendChild(bar);}
|
||||
document.body.style.paddingBottom = '52px';
|
||||
}
|
||||
</script>
|
||||
336
arsenal-history/arsenal-112503.html
Normal file
336
arsenal-history/arsenal-112503.html
Normal file
@@ -0,0 +1,336 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr"><head>
|
||||
<link rel="icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Reporting</title>
|
||||
<meta name="description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
<style>:root{--bg:#05080f;--s:#0c1222;--a:#f0c674;--a15:rgba(240,198,116,.15);--p:#7c5cfc;--t:#00c9a7;--r:#ff6b6b;--bl:#4ea8de;--sv:#7a8ba5;--w:#edf2f7;--b:rgba(240,198,116,.08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:'Outfit',sans-serif;background:var(--bg);color:var(--w);overflow-x:hidden}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.5rem}.logo span{color:var(--a)}.btn-n{background:var(--a);color:var(--bg);padding:.55rem 1.3rem;border-radius:7px;font-weight:700;font-size:.82rem;text-decoration:none}.hero{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:7rem 4% 4rem;position:relative}.hero::after{content:'';position:absolute;top:5%;left:50%;transform:translateX(-50%);width:700px;height:700px;background:radial-gradient(circle,rgba(240,198,116,.06) 0%,transparent 70%);border-radius:50%;pointer-events:none}.badge{display:inline-flex;align-items:center;gap:.5rem;background:var(--a15);border:1px solid rgba(240,198,116,.2);border-radius:100px;padding:.35rem 1rem;font-size:.75rem;font-weight:600;color:var(--a);margin-bottom:2rem}h1{font-size:3.4rem;font-weight:800;line-height:1.08;letter-spacing:-.04em;margin-bottom:1.2rem;max-width:800px}h1 em{font-style:normal;color:var(--a)}.sub{font-size:1.05rem;color:var(--sv);max-width:600px;line-height:1.7;margin-bottom:2rem}.btns{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center}.btn-p{background:var(--a);color:var(--bg);padding:.85rem 2rem;border-radius:8px;font-weight:700;text-decoration:none;transition:all .3s}.btn-p:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(240,198,116,.25)}.btn-o{background:transparent;color:var(--w);padding:.85rem 2rem;border-radius:8px;text-decoration:none;border:1px solid rgba(255,255,255,.12)}.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;letter-spacing:-.03em;margin-bottom:.8rem}.sd{color:var(--sv);font-size:.95rem;line-height:1.7;max-width:560px;margin-bottom:2.5rem}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:rgba(240,198,116,.06);border-radius:14px;overflow:hidden;margin:2rem 0}.stat{padding:1.3rem;text-align:center;background:rgba(12,18,34,.95)}.stat-n{font-family:'Space Mono',monospace;font-size:1.6rem;font-weight:700;color:var(--a)}.stat-l{font-size:.68rem;color:var(--sv);margin-top:.15rem}.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.g2{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}.cd{background:var(--s);border:1px solid var(--b);border-radius:14px;padding:1.5rem;transition:all .3s}.cd:hover{border-color:rgba(240,198,116,.25);transform:translateY(-2px)}.cd h3{font-size:.95rem;font-weight:600;margin:.6rem 0 .3rem}.cd p{font-size:.8rem;color:var(--sv);line-height:1.55}.erps{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0}.erp{font-family:'Space Mono',monospace;font-size:.72rem;font-weight:700;padding:.4rem .8rem;border-radius:8px;background:rgba(240,198,116,.08);color:var(--a);border:1px solid rgba(240,198,116,.12);transition:all .2s}.erp:hover{background:rgba(240,198,116,.2)}.erp.active{background:rgba(240,198,116,.2);border-color:rgba(240,198,116,.4)}.vs{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin:2rem 0}.vs-card{background:var(--s);border:1px solid var(--b);border-radius:14px;padding:1.5rem}.vs-card.us{border-color:rgba(240,198,116,.2);background:rgba(240,198,116,.02)}.vs-card h3{font-size:.95rem;font-weight:700;margin-bottom:.8rem}.vs-items{font-size:.8rem;color:var(--sv);line-height:1.8}.cta{text-align:center;padding:4rem 2rem;margin:2rem 4%;background:linear-gradient(135deg,var(--s),rgba(240,198,116,.04));border:1px solid rgba(240,198,116,.1);border-radius:20px}.cta p{color:var(--sv);max-width:500px;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,.g2,.vs,.stats{grid-template-columns:1fr}footer{flex-direction:column;gap:.5rem;text-align:center}}input,select,textarea{background:#0b0d14!important;color:#e2e8f0!important;border:1px solid #1e293b!important;border-radius:8px!important}input::placeholder{color:#475569!important}</style><style>/* Hide nav in iframe */
|
||||
@media all{.in-iframe nav{display:none!important}.in-iframe .hero{padding-top:3rem!important;min-height:auto!important}.in-iframe footer{display:none!important}.in-iframe .cta{display:none!important}.in-iframe .wv-links{display:none!important}.wv-links{display:none!important}}</style>
|
||||
<script>if(window!==window.top)document.documentElement.classList.add('in-iframe');</script>
|
||||
<link rel="canonical" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<meta property="og:title" content="Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Repor">
|
||||
<meta property="og:description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<meta property="og:url" content="https://weval-consulting.com/products/arsenal.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="Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Repor">
|
||||
<meta name="twitter:description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<link rel="alternate" hreflang="fr" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<link rel="alternate" hreflang="x-default" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<link rel="stylesheet" href="/assets/dark-iframe.css"></head><body>
|
||||
<nav><div class="logo" style="display:flex;align-items:center;gap:8px"><img src="/assets/logo-arsenal.svg" alt="" style="width:32px;height:32px">Arsenal<span>.</span></div><a href="#cta" class="btn-n">Demander une démo →</a></nav>
|
||||
|
||||
<section class="hero">
|
||||
<div class="badge">Framework ERP Intelligence — En production</div>
|
||||
<h1>Votre ERP fait 80%.<br>Arsenal fait les <em>20% manquants</em></h1>
|
||||
<p class="sub">150+ écrans modulaires, Brain Engine IA, reporting temps réel. Se branche sur n'importe quel ERP (SAP, Odoo, Oracle, Salesforce, custom) pour combler les gaps fonctionnels sans remplacer l'existant.</p>
|
||||
<div class="btns"><a href="#modules" class="btn-p">Explorer les modules →</a><a href="#cta" class="btn-o">Demander une demo</a></div></section>
|
||||
|
||||
<div class="sec"><div class="stats">
|
||||
<div class="stat"><div class="stat-n">150+</div><div class="stat-l">Écrans HTML</div></div>
|
||||
<div class="stat"><div class="stat-n">38</div><div class="stat-l">Crons automatiques</div></div>
|
||||
<div class="stat"><div class="stat-n">6</div><div class="stat-l">APIs core sync</div></div>
|
||||
<div class="stat"><div class="stat-n">500+</div><div class="stat-l">Brain configs IA</div></div>
|
||||
<div class="stat"><div class="stat-n">7.3M</div><div class="stat-l">Contacts gérés</div></div>
|
||||
<div class="stat"><div class="stat-n">0</div><div class="stat-l">Pages cassées</div></div></div></div>
|
||||
|
||||
<section class="sec"><div class="stag">ERP compatibles</div><h2>Se branche sur tout</h2>
|
||||
<p class="sd">Arsenal n'est pas un ERP. C'est la couche d'intelligence qui se greffe sur votre ERP existant. Plug-and-play, zéro migration.</p>
|
||||
<div class="erps">
|
||||
<span class="erp active">WEVADS ✓ Prouvé</span>
|
||||
<span class="erp">SAP S/4HANA</span>
|
||||
<span class="erp">SAP ECC</span>
|
||||
<span class="erp">Oracle EBS</span>
|
||||
<span class="erp">Oracle Fusion</span>
|
||||
<span class="erp">Odoo</span>
|
||||
<span class="erp">Sage X3</span>
|
||||
<span class="erp">Microsoft Dynamics</span>
|
||||
<span class="erp">Salesforce</span>
|
||||
<span class="erp">JD Edwards</span>
|
||||
<span class="erp">Custom ERP</span>
|
||||
<span class="erp">Legacy Systems</span></div></section>
|
||||
|
||||
<section class="sec" id="modules"><div class="stag">Modules</div><h2>10 catégories de modules</h2>
|
||||
<p class="sd">Chaque module est un écran autonome avec API, données temps réel et IA intégrée. Activez uniquement ce dont vous avez besoin.</p>
|
||||
<div class="g3">
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Brain Engine IA</h3><p>centaines de configurations IA, 9 winners sacrés, smart failover 11 providers. Optimisation automatique des processus par machine learning. Prédiction, scoring, anomaly detection.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Data Intelligence</h3><p>Data Manager, Drill-down API, cross-database queries via connecteur. Connecte et agrège les données de toutes vos sources : ERP, CRM, fichiers, APIs externes.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><circle cx="6" cy="6" r="1" fill="currentColor"/><circle cx="6" cy="18" r="1" fill="currentColor"/></svg></div><h3>Reporting Avancé</h3><p>Dashboards temps réel, KPIs customisables, alertes automatiques. Ce que votre ERP ne montre pas — Arsenal le visualise.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Pipeline Automation</h3><p>38 crons orchestrés, workflows E2E, queue workers multi-provider. Automatisez les processus que votre ERP ne gère pas nativement.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Data Intelligence Factory</h3><p>Extraction de données web automatisée. Veille concurrentielle, enrichissement CRM, monitoring prix. 6+ sources prouvées.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15 15 0 014 10 15 15 0 01-4 10 15 15 0 01-4-10A15 15 0 0112 2z"/></svg></div><h3>Account Factory</h3><p>Création automatisée de comptes multi-providers (Exchange, cloud, DNS). centaines de comptes Exchange, 47 cloud, 191 FreeDNS gérés.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Offer Engine</h3><p>Gestion des offres, sponsors, payouts. Séparation multi-source, drill-down par offre. 85 offres actives, $265 max payout.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Scout Intelligence</h3><p>Reconnaissance et analyse d'infrastructure. Hostname mapping, IP tracking, target identification. Lookalike engine 178 personas.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div><h3>Sentinel Security</h3><p>Monitoring sécurité, exec API, commande à distance sécurisée. Cyber scanner score 73/100, OWASP, fail2ban intégré.</p></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Use Cases</div><h2>Arsenal sur le terrain</h2>
|
||||
<div class="g2">
|
||||
<div class="cd" style="border-left:3px solid var(--a)"><h3>Arsenal × Marketing Digital (WEVADS)</h3><p>150+ écrans déployés. processus complet send→open→click→conversion. Brain Engine optimisé les configs par ISP. Optimisation automatique milliers de comptes. Résultat : système complet là où l'ERP natif ne gère pas le marketing digital.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--p)"><h3>Arsenal × Manufacturing (SAP)</h3><p>Fill-gap reporting production : OEE temps réel, prédiction pannes IA, tableau de bord qualité, alertes seuils automatiques. Ce que SAP PP ne montre pas nativement.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--t)"><h3>Arsenal × Retail (Odoo)</h3><p>Intelligence commerciale : scoring client IA, prédiction stock, analytics promotion, heatmap ventes géographique. Complète Odoo Sales/Inventory.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--bl)"><h3>Arsenal × Finance (Oracle)</h3><p>Reporting financier augmenté : consolidation multi-entités, prévision trésorerie IA, alertes anomalies comptables, dashboards CFO temps réel.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--r)"><h3>Arsenal × Supply Chain</h3><p>Visibilité E2E : tracking temps réel, optimisation routes IA, prédiction délais, alertes rupture stock. Complète n'importe quel WMS/TMS.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--a)"><h3>Arsenal × RH (Dynamics)</h3><p>Analytics RH avancés : prédiction turnover, scoring candidats IA, dashboard compétences, planning formation automatisé.</p></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Différenciation</div><h2>Pourquoi pas un intégrateur classique ?</h2>
|
||||
<div class="vs">
|
||||
<div class="vs-card us"><h3 style="color:var(--a)">Arsenal (WEVAL)</h3><div class="vs-items"> Framework réutilisable — déployé en semaines, pas en mois<br> 150+ écrans prêts à brancher<br> IA native (Brain Engine centaines de configs)<br> Se greffe sur l'ERP existant — zéro migration<br> Coût 10-50x inférieur au custom SAP<br> Mises à jour continues incluses<br> Cloud souverain — vos données chez vous</div></div>
|
||||
<div class="vs-card"><h3 style="color:var(--sv)">Intégrateurs classiques (développement sur mesure)</h3><div class="vs-items"> Custom dev from scratch — 6-18 mois<br> Chaque écran facturé séparément<br> Pas d'IA intégrée nativement<br> Souvent impose une migration ERP<br> Budget 100K-500K$+<br> Maintenance facturée en plus<br> Cloud US — données hors contrôle</div></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Architecture</div><h2>Stack technique</h2>
|
||||
<div class="g3">
|
||||
<div class="cd"><h3>Frontend</h3><p>150+ écrans HTML5 standalone. Responsive. Arsenal-common.js (25KB, 6 modules partagés). Zéro framework lourd — performance maximale.</p></div>
|
||||
<div class="cd"><h3>Backend</h3><p>PHP APIs + PostgreSQL. Dual vhosts Apache (5821 + 5890). connecteur bridge cross-databases. 38 crons orchestrés.</p></div>
|
||||
<div class="cd"><h3>IA Layer</h3><p>Brain Engine : 11 providers IA (Cloud Tier 1, Cloud Tier 2, WEVIA, Gemini, WEVIA...) avec smart failover. Cloud souverain GPU dédié 20GB.</p></div></div></section>
|
||||
|
||||
<div class="cta" id="cta"><div class="stag">Deploy</div><h2>Arsenal sur votre ERP en 2 semaines</h2><p>Audit gratuit de votre ERP. On identifié les gaps et on déploie les modules Arsenal adaptés. Aucune migration nécessaire.</p><a href="#cta" class="btn-p">Demander l'audit gratuit →</a></div>
|
||||
<footer><div><strong>Arsenal</strong> · <a href="/products/">WEVAL Products</a></div><div>France · Maroc · États-Unis · International</div></footer><!-- WEVAL Product Assistant Chatbot Widget -->
|
||||
<div id="weval-bot-widget" style="position:fixed;bottom:20px;right:20px;z-index:9999;font-family:'Inter',system-ui,sans-serif">
|
||||
<style>
|
||||
#weval-bot-btn{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;cursor:pointer;box-shadow:0 4px 24px rgba(99,102,241,.4);display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s}
|
||||
#weval-bot-btn:hover{transform:scale(1.08);box-shadow:0 6px 32px rgba(99,102,241,.5)}
|
||||
#weval-bot-btn svg{width:28px;height:28px;fill:#fff}
|
||||
#weval-bot-badge{position:absolute;top:-2px;right:-2px;width:14px;height:14px;background:#22c55e;border-radius:50%;border:2px solid #fff;animation:pulse-badge 2s infinite}
|
||||
@keyframes pulse-badge{0%,100%{opacity:1}50%{opacity:.5}}
|
||||
#weval-bot-panel{display:none;position:fixed;bottom:90px;right:20px;width:380px;max-height:520px;background:#0f1629;border:1px solid rgba(99,102,241,.2);border-radius:16px;box-shadow:0 12px 48px rgba(0,0,0,.5);overflow:hidden;flex-direction:column}
|
||||
#weval-bot-panel.open{display:flex}
|
||||
#weval-bot-head{background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:14px 18px;display:flex;align-items:center;gap:10px}
|
||||
#weval-bot-head .avatar{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:18px}
|
||||
#weval-bot-head .info{flex:1;color:#fff}
|
||||
#weval-bot-head .info .name{font-weight:600;font-size:14px}
|
||||
#weval-bot-head .info .status{font-size:11px;opacity:.8}
|
||||
#weval-bot-close{background:none;border:none;color:rgba(255,255,255,.7);cursor:pointer;font-size:20px;padding:4px}
|
||||
#weval-bot-msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;min-height:280px;max-height:360px}
|
||||
.bot-msg{max-width:85%;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.5;word-wrap:break-word}
|
||||
.bot-msg.bot{background:rgba(99,102,241,.12);color:#e2e8f0;border-bottom-left-radius:4px;align-self:flex-start}
|
||||
.bot-msg.user{background:#6366f1;color:#fff;border-bottom-right-radius:4px;align-self:flex-end}
|
||||
.bot-msg a{color:#818cf8;text-decoration:underline}
|
||||
.bot-typing{display:flex;gap:4px;padding:10px 14px;align-self:flex-start}
|
||||
.bot-typing span{width:6px;height:6px;background:#6366f1;border-radius:50%;animation:bounce .6s infinite alternate}
|
||||
.bot-typing span:nth-child(2){animation-delay:.2s}
|
||||
.bot-typing span:nth-child(3){animation-delay:.4s}
|
||||
@keyframes bounce{to{opacity:.3;transform:translateY(-4px)}}
|
||||
#weval-bot-input-area{padding:10px 14px;border-top:1px solid rgba(255,255,255,.06);display:flex;gap:8px}
|
||||
#weval-bot-input{flex:1;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:8px 12px;color:#e2e8f0;font-size:13px;outline:none}
|
||||
#weval-bot-input::placeholder{color:rgba(255,255,255,.3)}
|
||||
#weval-bot-send{background:#6366f1;border:none;border-radius:8px;padding:8px 12px;color:#fff;cursor:pointer;font-size:13px;font-weight:600}
|
||||
#weval-bot-send:hover{background:#5558e6}
|
||||
.quick-btns{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
|
||||
.quick-btn{background:rgba(99,102,241,.15);border:1px solid rgba(99,102,241,.25);color:#a5b4fc;padding:5px 10px;border-radius:6px;font-size:11px;cursor:pointer;transition:all .15s}
|
||||
.quick-btn:hover{background:rgba(99,102,241,.3);color:#fff}
|
||||
</style>
|
||||
|
||||
<button id="weval-bot-btn" onclick="toggleBot()">
|
||||
<svg viewBox="0 0 24 24"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z"/></svg>
|
||||
<div id="weval-bot-badge"></div>
|
||||
</button>
|
||||
|
||||
<div id="weval-bot-panel">
|
||||
<div id="weval-bot-head">
|
||||
<div class="avatar">W</div>
|
||||
<div class="info">
|
||||
<div class="name">WEVAL Assistant</div>
|
||||
<div class="status">En ligne - 62 produits</div>
|
||||
</div>
|
||||
<button id="weval-bot-close" onclick="toggleBot()">×</button>
|
||||
</div>
|
||||
<div id="weval-bot-msgs"></div>
|
||||
<div id="weval-bot-input-area">
|
||||
<input id="weval-bot-input" placeholder="Posez une question sur nos produits..." onkeypress="if(event.key==='Enter')sendBot()">
|
||||
<button id="weval-bot-send" onclick="sendBot()">Envoyer</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const PRODUCTS_KB = {
|
||||
deliVerscore: {name:'DeliverScore',desc:'Audit délivrabilité email - SPF/DKIM/DMARC/listes de blocage. Score + recommandations IA.',price:'Gratuit + Pro $49/mo',url:'/products/deliverscore.html',category:'Email Intelligence'},
|
||||
medreach: {name:'MedReach API',desc:'Base de 18596+ professionnels de santé vérifiés (Afrique, Europe, Moyen-Orient, Asie, Europe). API REST + export.',price:'Gratuit + Pro $299/mo',url:'/products/medreach.html',category:'Data'},
|
||||
gpu: {name:'WEVIA Inference',desc:'IA-as-a-Service. WEVIA Deep, WEVIA sur GPU dédié. API IA Cloud-compatible.',price:'Gratuit + Pro $99/mo',url:'/products/gpu-inference.html',category:'IA'},
|
||||
contentfactory: {name:'AI Content Factory',desc:'Génération de contenu IA - articles, fiches produits, LinkedIn. 6 templates.',price:'Gratuit + Pro $29/mo',url:'/products/content-factory.html',category:'IA'},
|
||||
proposalai: {name:'ProposalAI',desc:'Generateur de propositions commerciales qualité Big4. Brief -> propale en 30 sec.',price:'Gratuit + Pro $19/mo',url:'/products/proposalai.html',category:'IA'},
|
||||
blueprintai: {name:'BlueprintAI',desc:'Process docs, BPMN, CDC, blueprints L1/L2/L3, 8D, RACI.',price:'$25/mo',url:'/products/blueprintai.html',category:'IA'},
|
||||
storeforge: {name:'StoreForge',desc:'E-commerce IA. Boutique en 5 min. Descriptions IA, chatbot WEVIA, paiement Maroc.',price:'0-$29/mo',url:'/products/storeforge.html',category:'Commerce'},
|
||||
leadforge: {name:'LeadForge',desc:'B2B Lead Intelligence sur mesure. Leads vérifiés tous secteurs. 0.30-0.$50/lead.',price:'0.30-0.$49/lead',url:'/products/workspace.html',category:'Data'},
|
||||
mailwarm: {name:'MailWarm',desc:'Optimisation email automatique. 500+ seeds. Inbox 90%+ en 4-6 semaines.',price:'$29/compte/mo',url:'/products/workspace.html',category:'Email'},
|
||||
sentinel: {name:'Sentinel Monitor',desc:'Cyber monitoring PME - SSL, ports, DNS, OWASP. Alertes Telegram.',price:'Gratuit + Pro $49/mo',url:'/products/workspace.html',category:'Security'},
|
||||
outreachai: {name:'OutreachAI',desc:'Cold outreach IA. Upload leads -> IA personnalisé, envoi -> tracking.',price:'$199/mo',url:'/products/workspace.html',category:'Email'},
|
||||
wevia: {name:'WEVIA White-Label',desc:'Chatbot IA clé en main. Widget embed 5 min. KB custom, memoire, vision.',price:'100-$299/mo',url:'/products/wevia-whitelabel.html',category:'IA'},
|
||||
emailverify: {name:'EmailVerify',desc:'Validation email temps réel MX+SMTP+disposable.',price:'$49/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
blacklistguard: {name:'BlacklistGuard',desc:'Monitoring 100+ listes de blocage RBL + alertes.',price:'$29/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
reputationai: {name:'RéputationAI',desc:'Score réputation domaine + historique.',price:'$39/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
copyai: {name:'CopyAI WEVAL',desc:'Copywriting IA - emails, sujets, CTA. Cloud souveraine.',price:'$39/mo',url:'/products/workspace.html',category:'IA'},
|
||||
dataharvest: {name:'DataInsight',desc:'Intelligence d\'enrichissement de donn\u00e9es B2B.',price:'$99/mo',url:'/products/workspace.html',category:'Data'},
|
||||
smsforge: {name:'SMSForge',desc:'SMS marketing international (190+ pays).',price:'$49/mo',url:'/products/workspace.html',category:'Marketing'},
|
||||
adscontrol: {name:'AdsControl',desc:'Multi-channel ads FB/Google/LinkedIn/TikTok.',price:'$99/mo',url:'/products/workspace.html',category:'Marketing'},
|
||||
wevalcrm: {name:'WEVAL CRM',desc:'CRM leger pipeline + contacts + IA.',price:'Gratuit + Pro $29/mo',url:'/products/workspace.html',category:'Business'},
|
||||
canvasai: {name:'CanvasAI',desc:'Design IA - visuels, bannieres, logos.',price:'$29/mo',url:'/products/workspace.html',category:'IA'},
|
||||
devforge: {name:'DevForge AI',desc:'12 modules dev: specs, tests, code gen, API design, security review.',price:'$199/mo',url:'/products/workspace.html',category:'Dev'},
|
||||
ethica: {name:'Ethica B2B',desc:'Plateforme HCP internationale. 5775+ medecins vérifiés.',price:'$299/mo',url:'/products/workspace.html',category:'Data'},
|
||||
arsenal: {name:'Arsenal Framework',desc:'150+ ecrans. ERP Intelligence, Brain Engine, MTA. Enterprise.',price:'2000-$9,999/mo',url:'/products/arsenal.html',category:'Flagship'},
|
||||
wevads: {name:'WEVADS Platform',desc:'Infrastructure email complete. Brain Engine centaines de configs. 6.65M contacts.',price:'Enterprise',url:'/products/wevads.html',category:'Flagship'},
|
||||
};
|
||||
|
||||
function getProductList() {
|
||||
return Object.values(PRODUCTS_KB).map(p => `<b>${p.name}</b> - ${p.desc} (<a href="${p.url}">${p.price}</a>)`).join('<br><br>');
|
||||
}
|
||||
|
||||
function findProducts(query) {
|
||||
const q = query.toLowerCase();
|
||||
const matches = [];
|
||||
const keywords = {
|
||||
email: ['deliVerscore','emailverify','blacklistguard','reputationai','mailwarm','outreachai'],
|
||||
ia: ['gpu','contentfactory','proposalai','blueprintai','copyai','canvasai','devforge','wevia'],
|
||||
data: ['medreach','leadforge','dataharvest','ethica'],
|
||||
security: ['sentinel','blacklistguard'],
|
||||
ecommerce: ['storeforge'],
|
||||
marketing: ['smsforge','adscontrol','outreachai'],
|
||||
crm: ['wevalcrm'],
|
||||
sap: ['arsenal'],
|
||||
enterprise: ['arsenal','wevads','wevia'],
|
||||
gratuit: [],
|
||||
prix: [],
|
||||
maroc: ['medreach','ethica','smsforge','storeforge'],
|
||||
};
|
||||
|
||||
for (const [kw, ids] of Object.entries(keywords)) {
|
||||
if (q.includes(kw)) ids.forEach(id => { if (!matches.includes(id)) matches.push(id); });
|
||||
}
|
||||
|
||||
// Also search in product names and descriptions
|
||||
for (const [id, p] of Object.entries(PRODUCTS_KB)) {
|
||||
if (p.name.toLowerCase().includes(q) || p.desc.toLowerCase().includes(q) || p.category.toLowerCase().includes(q)) {
|
||||
if (!matches.includes(id)) matches.push(id);
|
||||
}
|
||||
}
|
||||
|
||||
return matches.map(id => PRODUCTS_KB[id]).filter(Boolean);
|
||||
}
|
||||
|
||||
function botReply(userMsg) {
|
||||
const q = userMsg.toLowerCase();
|
||||
|
||||
// Greetings
|
||||
if (/^(bonjour|salut|hello|hi|hey|coucou)/.test(q)) {
|
||||
return `Bonjour ! Je suis l'assistant WEVAL. Nous avons <b>62 produits SaaS</b> en production. Comment puis-je vous aider ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Quels sont vos produits?')">Voir les produits</span><span class="quick-btn" onclick="askBot('email délivrabilité')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
|
||||
}
|
||||
|
||||
// List all
|
||||
if (/tous|tout|liste|produit|service|catalogue|quoi/.test(q)) {
|
||||
const cats = {};
|
||||
Object.values(PRODUCTS_KB).forEach(p => { if (!cats[p.category]) cats[p.category]=[]; cats[p.category].push(p); });
|
||||
let html = `Voici nos <b>${Object.keys(PRODUCTS_KB).length} produits</b> par categorie :<br><br>`;
|
||||
for (const [cat, prods] of Object.entries(cats)) {
|
||||
html += `<b>${cat}</b><br>`;
|
||||
prods.forEach(p => { html += `• <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='/booking.html'">Nous contacter</span></div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
// Demo / essai
|
||||
if (/demo|essai|tester|try|commencer|start/.test(q)) {
|
||||
return `Pour commencer gratuitement :<br><br>1. <a href="/products/workspace.html">Ouvrir le Workspace</a> et créer un compte<br>2. Vous aurez acces a tous les produits gratuits<br>3. Testez DeliverScore, WEVIA Inference, Content Factory...<br><br>Ou <a href="#cta">contactez-nous</a> pour une demo personnalisée !<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Ouvrir Workspace</span></div>`;
|
||||
}
|
||||
|
||||
// Specific product search
|
||||
const matches = findProducts(q);
|
||||
if (matches.length > 0) {
|
||||
let html = `J'ai trouve <b>${matches.length} produit(s)</b> correspondant :<br><br>`;
|
||||
matches.slice(0, 6).forEach(p => {
|
||||
html += `<b><a href="${p.url}">${p.name}</a></b><br>${p.desc}<br><i>${p.price}</i><br><br>`;
|
||||
});
|
||||
if (matches.length > 6) html += `...et ${matches.length - 6} autres.<br>`;
|
||||
html += `<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='${matches[0].url}'">Voir ${matches[0].name}</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
// Default - suggest contacting or browsing
|
||||
return `Je n'ai pas trouve de produit spécifique pour "${userMsg}". Nos 62 produits couvrent : Email Intelligence, IA/GPU, Data, Security, Marketing, E-commerce et Dev.<br><br><div class="quick-btns"><span class="quick-btn" onclick="askBot('tous les produits')">Voir tout</span><span class="quick-btn" onclick="window.location.href='/booking.html'">Contacter WEVAL</span><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Workspace</span></div>`;
|
||||
}
|
||||
|
||||
function toggleBot() {
|
||||
const p = document.getElementById('weval-bot-panel');
|
||||
p.classList.toggle('open');
|
||||
if (p.classList.contains('open') && document.getElementById('weval-bot-msgs').children.length === 0) {
|
||||
addMsg('bot', `Bonjour ! Je suis l'assistant produits WEVAL. Nous proposons <b>37 SaaS</b> en production. Que recherchez-vous ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Tous les produits')">Catalogue</span><span class="quick-btn" onclick="askBot('email')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('gratuit')">Gratuit</span><span class="quick-btn" onclick="askBot('demo')">Demo</span></div>`);
|
||||
}
|
||||
document.getElementById('weval-bot-badge').style.display = 'none';
|
||||
}
|
||||
|
||||
function addMsg(type, html) {
|
||||
const msgs = document.getElementById('weval-bot-msgs');
|
||||
const div = document.createElement('div');
|
||||
div.className = 'bot-msg ' + type;
|
||||
div.innerHTML = html;
|
||||
msgs.appendChild(div);
|
||||
msgs.scrollTop = msgs.scrollHeight;
|
||||
}
|
||||
|
||||
function askBot(q) {
|
||||
document.getElementById('weval-bot-input').value = q;
|
||||
sendBot();
|
||||
}
|
||||
|
||||
function sendBot() {
|
||||
const input = document.getElementById('weval-bot-input');
|
||||
const msg = input.value.trim();
|
||||
if (!msg) return;
|
||||
input.value = '';
|
||||
addMsg('user', msg);
|
||||
|
||||
// Show typing
|
||||
const msgs = document.getElementById('weval-bot-msgs');
|
||||
const typing = document.createElement('div');
|
||||
typing.className = 'bot-typing';
|
||||
typing.innerHTML = '<span></span><span></span><span></span>';
|
||||
msgs.appendChild(typing);
|
||||
msgs.scrollTop = msgs.scrollHeight;
|
||||
|
||||
setTimeout(() => {
|
||||
typing.remove();
|
||||
addMsg('bot', botReply(msg));
|
||||
}, 400 + Math.random() * 600);
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div style="display:flex;gap:2rem;justify-content:center;flex-wrap:wrap;padding:1.5rem 4%;background:rgba(255,255,255,.02);border-top:1px solid rgba(255,255,255,.04);margin:2rem 0"><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">44</strong> produits SaaS</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">Cloud</strong> souverain</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">API</strong> REST</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">RGPD</strong> conforme</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">France</strong> · Maroc · États-Unis · International</div></div>
|
||||
<style>.dm-box{background:#0c1222;border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:1.5rem;margin:2rem auto;max-width:800px}.dm-box h3{font-size:1rem;font-weight:600;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.dm-row{display:flex;gap:.6rem;margin-bottom:1rem}.dm-row input{flex:1;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:.6rem .8rem;color:#edf2f7;font-family:Outfit;font-size:.85rem;outline:none}.dm-row button{background:var(--a,#7c5cfc);color:#05080f;border:none;border-radius:8px;padding:.6rem 1.2rem;font-weight:700;cursor:pointer;font-family:Outfit;font-size:.85rem;white-space:nowrap}.dm-out{min-height:80px;padding:1rem;background:rgba(0,0,0,.2);border-radius:8px;font-size:.82rem;color:#edf2f7;line-height:1.6}.dm-out strong{color:#fff}.dm-out pre{background:rgba(0,0,0,.3);padding:.5rem;border-radius:6px;font-size:.75rem;margin:.4rem 0;overflow-x:auto}.dm-ld{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--a,#7c5cfc);margin:0 2px;animation:dmp .8s infinite}.dm-ld:nth-child(2){animation-delay:.2s}.dm-ld:nth-child(3){animation-delay:.4s}@keyframes dmp{0%,100%{opacity:1}50%{opacity:.3}}</style>
|
||||
<div class="dm-box" id="demo"><h3>⚡ Arsenal Framework — Demo Live</h3>
|
||||
<div class="dm-row"><input id="dm-arsenal" placeholder="Décrivez votre besoin ERP" onkeydown="if(event.key==='Enter')dm_arsenal()"><button onclick="dm_arsenal()">Tester</button></div>
|
||||
<div class="dm-out" id="dmo-arsenal">Testez Arsenal Framework en direct — aucune inscription.</div></div>
|
||||
<script>
|
||||
async function dm_arsenal(){var q=document.getElementById("dm-arsenal").value.trim();if(!q)return;var o=document.getElementById("dmo-arsenal");o.innerHTML='<span class="dm-ld"></span><span class="dm-ld"></span><span class="dm-ld"></span>';try{var r=await fetch("/api/weval-ia-fast.php",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:"[INSTRUCTION SYSTEME: Reponds de facon structurée et professionnelle.]\n\nDemande utilisateur: Analyse le besoin ERP et propose une solution Arsenal: "+q,mode:"full"})});var j=await r.json();o.innerHTML=(j.response||"Erreur").replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\n\n/g,"<br><br>");}catch(e){o.innerHTML="Erreur: "+e.message}}
|
||||
</script>
|
||||
<script defer src=/assets/dm-enhance.js></script></body></html>
|
||||
<!-- WEVAL Self-Service Inject -->
|
||||
<script>
|
||||
if(window===window.top){
|
||||
// Replace all contact mailto links with signup portal
|
||||
document.querySelectorAll('a[href*="mailto:"]').forEach(a => {
|
||||
if(a.classList.contains('btn-p') || a.classList.contains('btn-f') || a.classList.contains('btn-n') || a.classList.contains('btn-nav') || a.classList.contains('btn-primary') || a.classList.contains('btn-price-fill') || a.textContent.includes('Commencer') || a.textContent.includes('Commander') || a.textContent.includes('Essayer') || a.textContent.includes('Souscrire') || a.textContent.includes('Créer') || a.textContent.includes('Obtenir') || a.textContent.includes('Démarrer') || a.textContent.includes('Rejoindre')) {
|
||||
a.href = '/products/workspace.html';
|
||||
a.removeAttribute('target');
|
||||
}
|
||||
});
|
||||
// Add floating CTA
|
||||
const bar = document.createElement('div');
|
||||
bar.innerHTML = '<div style="position:fixed;bottom:0;left:0;right:0;z-index:999;background:rgba(5,8,15,0.95);backdrop-filter:blur(10px);border-top:1px solid rgba(0,201,167,0.15);padding:0.6rem 4%;display:flex;justify-content:space-between;align-items:center"><div style="font-size:0.82rem;color:#7a8ba5"><strong style="color:#edf2f7">WEVAL Products</strong> · <span style="color:#00c9a7">Self-service</span> · Inscription en 30 secondes</div><a href="/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>';
|
||||
if(window.self===window.top){document.body.appendChild(bar);}
|
||||
document.body.style.paddingBottom = '52px';
|
||||
}
|
||||
</script>
|
||||
336
arsenal-history/arsenal-112907.html
Normal file
336
arsenal-history/arsenal-112907.html
Normal file
@@ -0,0 +1,336 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr"><head>
|
||||
<link rel="icon" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Reporting</title>
|
||||
<meta name="description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
<style>:root{--bg:#05080f;--s:#0c1222;--a:#f0c674;--a15:rgba(240,198,116,.15);--p:#7c5cfc;--t:#00c9a7;--r:#ff6b6b;--bl:#4ea8de;--sv:#7a8ba5;--w:#edf2f7;--b:rgba(240,198,116,.08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:'Outfit',sans-serif;background:var(--bg);color:var(--w);overflow-x:hidden}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.5rem}.logo span{color:var(--a)}.btn-n{background:var(--a);color:var(--bg);padding:.55rem 1.3rem;border-radius:7px;font-weight:700;font-size:.82rem;text-decoration:none}.hero{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:7rem 4% 4rem;position:relative}.hero::after{content:'';position:absolute;top:5%;left:50%;transform:translateX(-50%);width:700px;height:700px;background:radial-gradient(circle,rgba(240,198,116,.06) 0%,transparent 70%);border-radius:50%;pointer-events:none}.badge{display:inline-flex;align-items:center;gap:.5rem;background:var(--a15);border:1px solid rgba(240,198,116,.2);border-radius:100px;padding:.35rem 1rem;font-size:.75rem;font-weight:600;color:var(--a);margin-bottom:2rem}h1{font-size:3.4rem;font-weight:800;line-height:1.08;letter-spacing:-.04em;margin-bottom:1.2rem;max-width:800px}h1 em{font-style:normal;color:var(--a)}.sub{font-size:1.05rem;color:var(--sv);max-width:600px;line-height:1.7;margin-bottom:2rem}.btns{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center}.btn-p{background:var(--a);color:var(--bg);padding:.85rem 2rem;border-radius:8px;font-weight:700;text-decoration:none;transition:all .3s}.btn-p:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(240,198,116,.25)}.btn-o{background:transparent;color:var(--w);padding:.85rem 2rem;border-radius:8px;text-decoration:none;border:1px solid rgba(255,255,255,.12)}.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;letter-spacing:-.03em;margin-bottom:.8rem}.sd{color:var(--sv);font-size:.95rem;line-height:1.7;max-width:560px;margin-bottom:2.5rem}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:rgba(240,198,116,.06);border-radius:14px;overflow:hidden;margin:2rem 0}.stat{padding:1.3rem;text-align:center;background:rgba(12,18,34,.95)}.stat-n{font-family:'Space Mono',monospace;font-size:1.6rem;font-weight:700;color:var(--a)}.stat-l{font-size:.68rem;color:var(--sv);margin-top:.15rem}.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.g2{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}.cd{background:var(--s);border:1px solid var(--b);border-radius:14px;padding:1.5rem;transition:all .3s}.cd:hover{border-color:rgba(240,198,116,.25);transform:translateY(-2px)}.cd h3{font-size:.95rem;font-weight:600;margin:.6rem 0 .3rem}.cd p{font-size:.8rem;color:var(--sv);line-height:1.55}.erps{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0}.erp{font-family:'Space Mono',monospace;font-size:.72rem;font-weight:700;padding:.4rem .8rem;border-radius:8px;background:rgba(240,198,116,.08);color:var(--a);border:1px solid rgba(240,198,116,.12);transition:all .2s}.erp:hover{background:rgba(240,198,116,.2)}.erp.active{background:rgba(240,198,116,.2);border-color:rgba(240,198,116,.4)}.vs{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin:2rem 0}.vs-card{background:var(--s);border:1px solid var(--b);border-radius:14px;padding:1.5rem}.vs-card.us{border-color:rgba(240,198,116,.2);background:rgba(240,198,116,.02)}.vs-card h3{font-size:.95rem;font-weight:700;margin-bottom:.8rem}.vs-items{font-size:.8rem;color:var(--sv);line-height:1.8}.cta{text-align:center;padding:4rem 2rem;margin:2rem 4%;background:linear-gradient(135deg,var(--s),rgba(240,198,116,.04));border:1px solid rgba(240,198,116,.1);border-radius:20px}.cta p{color:var(--sv);max-width:500px;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,.g2,.vs,.stats{grid-template-columns:1fr}footer{flex-direction:column;gap:.5rem;text-align:center}}input,select,textarea{background:#0b0d14!important;color:#e2e8f0!important;border:1px solid #1e293b!important;border-radius:8px!important}input::placeholder{color:#475569!important}</style><style>/* Hide nav in iframe */
|
||||
@media all{.in-iframe nav{display:none!important}.in-iframe .hero{padding-top:3rem!important;min-height:auto!important}.in-iframe footer{display:none!important}.in-iframe .cta{display:none!important}.in-iframe .wv-links{display:none!important}.wv-links{display:none!important}}</style>
|
||||
<script>if(window!==window.top)document.documentElement.classList.add('in-iframe');</script>
|
||||
<link rel="canonical" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<meta property="og:title" content="Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Repor">
|
||||
<meta property="og:description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<meta property="og:url" content="https://weval-consulting.com/products/arsenal.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="Arsenal — Framework ERP Intelligence | Fill-Gap + IA + Repor">
|
||||
<meta name="twitter:description" content="Arsenal — Framework ERP Intelligence - Solutions IA souveraines pour entreprises">
|
||||
<link rel="alternate" hreflang="fr" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<link rel="alternate" hreflang="x-default" href="https://weval-consulting.com/products/arsenal.html">
|
||||
<link rel="stylesheet" href="/assets/dark-iframe.css"></head><body>
|
||||
<nav><div class="logo" style="display:flex;align-items:center;gap:8px"><img src="/assets/logo-arsenal.svg" alt="" style="width:32px;height:32px">Arsenal<span>.</span></div><a href="#cta" class="btn-n">Demander une démo →</a></nav>
|
||||
|
||||
<section class="hero">
|
||||
<div class="badge">Framework ERP Intelligence — En production</div>
|
||||
<h1>Votre ERP fait 80%.<br>Arsenal fait les <em>20% manquants</em></h1>
|
||||
<p class="sub">150+ écrans modulaires, Brain Engine IA, reporting temps réel. Se branche sur n'importe quel ERP (SAP, Odoo, Oracle, Salesforce, custom) pour combler les gaps fonctionnels sans remplacer l'existant.</p>
|
||||
<div class="btns"><a href="#modules" class="btn-p">Explorer les modules →</a><a href="#cta" class="btn-o">Demander une demo</a></div></section>
|
||||
|
||||
<div class="sec"><div class="stats">
|
||||
<div class="stat"><div class="stat-n">150+</div><div class="stat-l">Écrans HTML</div></div>
|
||||
<div class="stat"><div class="stat-n">38</div><div class="stat-l">Crons automatiques</div></div>
|
||||
<div class="stat"><div class="stat-n">6</div><div class="stat-l">APIs core sync</div></div>
|
||||
<div class="stat"><div class="stat-n">500+</div><div class="stat-l">Brain configs IA</div></div>
|
||||
<div class="stat"><div class="stat-n">7.3M</div><div class="stat-l">Contacts gérés</div></div>
|
||||
<div class="stat"><div class="stat-n">0</div><div class="stat-l">Pages cassées</div></div></div></div>
|
||||
|
||||
<section class="sec"><div class="stag">ERP compatibles</div><h2>Se branche sur tout</h2>
|
||||
<p class="sd">Arsenal n'est pas un ERP. C'est la couche d'intelligence qui se greffe sur votre ERP existant. Plug-and-play, zéro migration.</p>
|
||||
<div class="erps">
|
||||
<span class="erp active">WEVADS ✓ Prouvé</span>
|
||||
<span class="erp">SAP S/4HANA</span>
|
||||
<span class="erp">SAP ECC</span>
|
||||
<span class="erp">Oracle EBS</span>
|
||||
<span class="erp">Oracle Fusion</span>
|
||||
<span class="erp">Odoo</span>
|
||||
<span class="erp">Sage X3</span>
|
||||
<span class="erp">Microsoft Dynamics</span>
|
||||
<span class="erp">Salesforce</span>
|
||||
<span class="erp">JD Edwards</span>
|
||||
<span class="erp">Custom ERP</span>
|
||||
<span class="erp">Legacy Systems</span></div></section>
|
||||
|
||||
<section class="sec" id="modules"><div class="stag">Modules</div><h2>10 catégories de modules</h2>
|
||||
<p class="sd">Chaque module est un écran autonome avec API, données temps réel et IA intégrée. Activez uniquement ce dont vous avez besoin.</p>
|
||||
<div class="g3">
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Brain Engine IA</h3><p>centaines de configurations IA, 9 winners sacrés, smart failover 11 providers. Optimisation automatique des processus par machine learning. Prédiction, scoring, anomaly detection.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Data Intelligence</h3><p>Data Manager, Drill-down API, cross-database queries via connecteur. Connecte et agrège les données de toutes vos sources : ERP, CRM, fichiers, APIs externes.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><circle cx="6" cy="6" r="1" fill="currentColor"/><circle cx="6" cy="18" r="1" fill="currentColor"/></svg></div><h3>Reporting Avancé</h3><p>Dashboards temps réel, KPIs customisables, alertes automatiques. Ce que votre ERP ne montre pas — Arsenal le visualise.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Pipeline Automation</h3><p>38 crons orchestrés, workflows E2E, queue workers multi-provider. Automatisez les processus que votre ERP ne gère pas nativement.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Data Intelligence Factory</h3><p>Extraction de données web automatisée. Veille concurrentielle, enrichissement CRM, monitoring prix. 6+ sources prouvées.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15 15 0 014 10 15 15 0 01-4 10 15 15 0 01-4-10A15 15 0 0112 2z"/></svg></div><h3>Account Factory</h3><p>Création automatisée de comptes multi-providers (Exchange, cloud, DNS). centaines de comptes Exchange, 47 cloud, 191 FreeDNS gérés.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Offer Engine</h3><p>Gestion des offres, sponsors, payouts. Séparation multi-source, drill-down par offre. 85 offres actives, $265 max payout.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><circle cx="12" cy="12" r="10"/></svg></div><h3>Scout Intelligence</h3><p>Reconnaissance et analyse d'infrastructure. Hostname mapping, IP tracking, target identification. Lookalike engine 178 personas.</p></div>
|
||||
<div class="cd"><div style="font-size:1.3rem"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div><h3>Sentinel Security</h3><p>Monitoring sécurité, exec API, commande à distance sécurisée. Cyber scanner score 73/100, OWASP, fail2ban intégré.</p></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Use Cases</div><h2>Arsenal sur le terrain</h2>
|
||||
<div class="g2">
|
||||
<div class="cd" style="border-left:3px solid var(--a)"><h3>Arsenal × Marketing Digital (WEVADS)</h3><p>150+ écrans déployés. processus complet send→open→click→conversion. Brain Engine optimisé les configs par ISP. Optimisation automatique milliers de comptes. Résultat : système complet là où l'ERP natif ne gère pas le marketing digital.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--p)"><h3>Arsenal × Manufacturing (SAP)</h3><p>Fill-gap reporting production : OEE temps réel, prédiction pannes IA, tableau de bord qualité, alertes seuils automatiques. Ce que SAP PP ne montre pas nativement.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--t)"><h3>Arsenal × Retail (Odoo)</h3><p>Intelligence commerciale : scoring client IA, prédiction stock, analytics promotion, heatmap ventes géographique. Complète Odoo Sales/Inventory.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--bl)"><h3>Arsenal × Finance (Oracle)</h3><p>Reporting financier augmenté : consolidation multi-entités, prévision trésorerie IA, alertes anomalies comptables, dashboards CFO temps réel.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--r)"><h3>Arsenal × Supply Chain</h3><p>Visibilité E2E : tracking temps réel, optimisation routes IA, prédiction délais, alertes rupture stock. Complète n'importe quel WMS/TMS.</p></div>
|
||||
<div class="cd" style="border-left:3px solid var(--a)"><h3>Arsenal × RH (Dynamics)</h3><p>Analytics RH avancés : prédiction turnover, scoring candidats IA, dashboard compétences, planning formation automatisé.</p></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Différenciation</div><h2>Pourquoi pas un intégrateur classique ?</h2>
|
||||
<div class="vs">
|
||||
<div class="vs-card us"><h3 style="color:var(--a)">Arsenal (WEVAL)</h3><div class="vs-items"> Framework réutilisable — déployé en semaines, pas en mois<br> 150+ écrans prêts à brancher<br> IA native (Brain Engine centaines de configs)<br> Se greffe sur l'ERP existant — zéro migration<br> Coût 10-50x inférieur au custom SAP<br> Mises à jour continues incluses<br> Cloud souverain — vos données chez vous</div></div>
|
||||
<div class="vs-card"><h3 style="color:var(--sv)">Intégrateurs classiques (développement sur mesure)</h3><div class="vs-items"> Custom dev from scratch — 6-18 mois<br> Chaque écran facturé séparément<br> Pas d'IA intégrée nativement<br> Souvent impose une migration ERP<br> Budget 100K-500K$+<br> Maintenance facturée en plus<br> Cloud US — données hors contrôle</div></div></div></section>
|
||||
|
||||
<section class="sec"><div class="stag">Architecture</div><h2>Stack technique</h2>
|
||||
<div class="g3">
|
||||
<div class="cd"><h3>Frontend</h3><p>150+ écrans HTML5 standalone. Responsive. Arsenal-common.js (25KB, 6 modules partagés). Zéro framework lourd — performance maximale.</p></div>
|
||||
<div class="cd"><h3>Backend</h3><p>PHP APIs + PostgreSQL. Dual vhosts Apache (5821 + 5890). connecteur bridge cross-databases. 38 crons orchestrés.</p></div>
|
||||
<div class="cd"><h3>IA Layer</h3><p>Brain Engine : 11 providers IA (Cloud Tier 1, Cloud Tier 2, WEVIA, Gemini, WEVIA...) avec smart failover. Cloud souverain GPU dédié 20GB.</p></div></div></section>
|
||||
|
||||
<div class="cta" id="cta"><div class="stag">Deploy</div><h2>Arsenal sur votre ERP en 2 semaines</h2><p>Audit gratuit de votre ERP. On identifié les gaps et on déploie les modules Arsenal adaptés. Aucune migration nécessaire.</p><a href="#cta" class="btn-p">Demander l'audit gratuit →</a></div>
|
||||
<footer><div><strong>Arsenal</strong> · <a href="/products/">WEVAL Products</a></div><div>France · Maroc · États-Unis · International</div></footer><!-- WEVAL Product Assistant Chatbot Widget -->
|
||||
<div id="weval-bot-widget" style="position:fixed;bottom:20px;right:20px;z-index:9999;font-family:'Inter',system-ui,sans-serif">
|
||||
<style>
|
||||
#weval-bot-btn{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;cursor:pointer;box-shadow:0 4px 24px rgba(99,102,241,.4);display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s}
|
||||
#weval-bot-btn:hover{transform:scale(1.08);box-shadow:0 6px 32px rgba(99,102,241,.5)}
|
||||
#weval-bot-btn svg{width:28px;height:28px;fill:#fff}
|
||||
#weval-bot-badge{position:absolute;top:-2px;right:-2px;width:14px;height:14px;background:#22c55e;border-radius:50%;border:2px solid #fff;animation:pulse-badge 2s infinite}
|
||||
@keyframes pulse-badge{0%,100%{opacity:1}50%{opacity:.5}}
|
||||
#weval-bot-panel{display:none;position:fixed;bottom:90px;right:20px;width:380px;max-height:520px;background:#0f1629;border:1px solid rgba(99,102,241,.2);border-radius:16px;box-shadow:0 12px 48px rgba(0,0,0,.5);overflow:hidden;flex-direction:column}
|
||||
#weval-bot-panel.open{display:flex}
|
||||
#weval-bot-head{background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:14px 18px;display:flex;align-items:center;gap:10px}
|
||||
#weval-bot-head .avatar{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:18px}
|
||||
#weval-bot-head .info{flex:1;color:#fff}
|
||||
#weval-bot-head .info .name{font-weight:600;font-size:14px}
|
||||
#weval-bot-head .info .status{font-size:11px;opacity:.8}
|
||||
#weval-bot-close{background:none;border:none;color:rgba(255,255,255,.7);cursor:pointer;font-size:20px;padding:4px}
|
||||
#weval-bot-msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;min-height:280px;max-height:360px}
|
||||
.bot-msg{max-width:85%;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.5;word-wrap:break-word}
|
||||
.bot-msg.bot{background:rgba(99,102,241,.12);color:#e2e8f0;border-bottom-left-radius:4px;align-self:flex-start}
|
||||
.bot-msg.user{background:#6366f1;color:#fff;border-bottom-right-radius:4px;align-self:flex-end}
|
||||
.bot-msg a{color:#818cf8;text-decoration:underline}
|
||||
.bot-typing{display:flex;gap:4px;padding:10px 14px;align-self:flex-start}
|
||||
.bot-typing span{width:6px;height:6px;background:#6366f1;border-radius:50%;animation:bounce .6s infinite alternate}
|
||||
.bot-typing span:nth-child(2){animation-delay:.2s}
|
||||
.bot-typing span:nth-child(3){animation-delay:.4s}
|
||||
@keyframes bounce{to{opacity:.3;transform:translateY(-4px)}}
|
||||
#weval-bot-input-area{padding:10px 14px;border-top:1px solid rgba(255,255,255,.06);display:flex;gap:8px}
|
||||
#weval-bot-input{flex:1;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:8px 12px;color:#e2e8f0;font-size:13px;outline:none}
|
||||
#weval-bot-input::placeholder{color:rgba(255,255,255,.3)}
|
||||
#weval-bot-send{background:#6366f1;border:none;border-radius:8px;padding:8px 12px;color:#fff;cursor:pointer;font-size:13px;font-weight:600}
|
||||
#weval-bot-send:hover{background:#5558e6}
|
||||
.quick-btns{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
|
||||
.quick-btn{background:rgba(99,102,241,.15);border:1px solid rgba(99,102,241,.25);color:#a5b4fc;padding:5px 10px;border-radius:6px;font-size:11px;cursor:pointer;transition:all .15s}
|
||||
.quick-btn:hover{background:rgba(99,102,241,.3);color:#fff}
|
||||
</style>
|
||||
|
||||
<button id="weval-bot-btn" onclick="toggleBot()">
|
||||
<svg viewBox="0 0 24 24"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z"/></svg>
|
||||
<div id="weval-bot-badge"></div>
|
||||
</button>
|
||||
|
||||
<div id="weval-bot-panel">
|
||||
<div id="weval-bot-head">
|
||||
<div class="avatar">W</div>
|
||||
<div class="info">
|
||||
<div class="name">WEVAL Assistant</div>
|
||||
<div class="status">En ligne - 62 produits</div>
|
||||
</div>
|
||||
<button id="weval-bot-close" onclick="toggleBot()">×</button>
|
||||
</div>
|
||||
<div id="weval-bot-msgs"></div>
|
||||
<div id="weval-bot-input-area">
|
||||
<input id="weval-bot-input" placeholder="Posez une question sur nos produits..." onkeypress="if(event.key==='Enter')sendBot()">
|
||||
<button id="weval-bot-send" onclick="sendBot()">Envoyer</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const PRODUCTS_KB = {
|
||||
deliVerscore: {name:'DeliverScore',desc:'Audit délivrabilité email - SPF/DKIM/DMARC/listes de blocage. Score + recommandations IA.',price:'Gratuit + Pro $49/mo',url:'/products/deliverscore.html',category:'Email Intelligence'},
|
||||
medreach: {name:'MedReach API',desc:'Base de 18596+ professionnels de santé vérifiés (Afrique, Europe, Moyen-Orient, Asie, Europe). API REST + export.',price:'Gratuit + Pro $299/mo',url:'/products/medreach.html',category:'Data'},
|
||||
gpu: {name:'WEVIA Inference',desc:'IA-as-a-Service. WEVIA Deep, WEVIA sur GPU dédié. API IA Cloud-compatible.',price:'Gratuit + Pro $99/mo',url:'/products/gpu-inference.html',category:'IA'},
|
||||
contentfactory: {name:'AI Content Factory',desc:'Génération de contenu IA - articles, fiches produits, LinkedIn. 6 templates.',price:'Gratuit + Pro $29/mo',url:'/products/content-factory.html',category:'IA'},
|
||||
proposalai: {name:'ProposalAI',desc:'Generateur de propositions commerciales qualité Big4. Brief -> propale en 30 sec.',price:'Gratuit + Pro $19/mo',url:'/products/proposalai.html',category:'IA'},
|
||||
blueprintai: {name:'BlueprintAI',desc:'Process docs, BPMN, CDC, blueprints L1/L2/L3, 8D, RACI.',price:'$25/mo',url:'/products/blueprintai.html',category:'IA'},
|
||||
storeforge: {name:'StoreForge',desc:'E-commerce IA. Boutique en 5 min. Descriptions IA, chatbot WEVIA, paiement Maroc.',price:'0-$29/mo',url:'/products/storeforge.html',category:'Commerce'},
|
||||
leadforge: {name:'LeadForge',desc:'B2B Lead Intelligence sur mesure. Leads vérifiés tous secteurs. 0.30-0.$50/lead.',price:'0.30-0.$49/lead',url:'/products/workspace.html',category:'Data'},
|
||||
mailwarm: {name:'MailWarm',desc:'Optimisation email automatique. 500+ seeds. Inbox 90%+ en 4-6 semaines.',price:'$29/compte/mo',url:'/products/workspace.html',category:'Email'},
|
||||
sentinel: {name:'Sentinel Monitor',desc:'Cyber monitoring PME - SSL, ports, DNS, OWASP. Alertes Telegram.',price:'Gratuit + Pro $49/mo',url:'/products/workspace.html',category:'Security'},
|
||||
outreachai: {name:'OutreachAI',desc:'Cold outreach IA. Upload leads -> IA personnalisé, envoi -> tracking.',price:'$199/mo',url:'/products/workspace.html',category:'Email'},
|
||||
wevia: {name:'WEVIA White-Label',desc:'Chatbot IA clé en main. Widget embed 5 min. KB custom, memoire, vision.',price:'100-$299/mo',url:'/products/wevia-whitelabel.html',category:'IA'},
|
||||
emailverify: {name:'EmailVerify',desc:'Validation email temps réel MX+SMTP+disposable.',price:'$49/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
blacklistguard: {name:'BlacklistGuard',desc:'Monitoring 100+ listes de blocage RBL + alertes.',price:'$29/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
reputationai: {name:'RéputationAI',desc:'Score réputation domaine + historique.',price:'$39/mo',url:'/products/workspace.html',category:'Email Intelligence'},
|
||||
copyai: {name:'CopyAI WEVAL',desc:'Copywriting IA - emails, sujets, CTA. Cloud souveraine.',price:'$39/mo',url:'/products/workspace.html',category:'IA'},
|
||||
dataharvest: {name:'DataInsight',desc:'Intelligence d\'enrichissement de donn\u00e9es B2B.',price:'$99/mo',url:'/products/workspace.html',category:'Data'},
|
||||
smsforge: {name:'SMSForge',desc:'SMS marketing international (190+ pays).',price:'$49/mo',url:'/products/workspace.html',category:'Marketing'},
|
||||
adscontrol: {name:'AdsControl',desc:'Multi-channel ads FB/Google/LinkedIn/TikTok.',price:'$99/mo',url:'/products/workspace.html',category:'Marketing'},
|
||||
wevalcrm: {name:'WEVAL CRM',desc:'CRM leger pipeline + contacts + IA.',price:'Gratuit + Pro $29/mo',url:'/products/workspace.html',category:'Business'},
|
||||
canvasai: {name:'CanvasAI',desc:'Design IA - visuels, bannieres, logos.',price:'$29/mo',url:'/products/workspace.html',category:'IA'},
|
||||
devforge: {name:'DevForge AI',desc:'12 modules dev: specs, tests, code gen, API design, security review.',price:'$199/mo',url:'/products/workspace.html',category:'Dev'},
|
||||
ethica: {name:'Ethica B2B',desc:'Plateforme HCP internationale. 5775+ medecins vérifiés.',price:'$299/mo',url:'/products/workspace.html',category:'Data'},
|
||||
arsenal: {name:'Arsenal Framework',desc:'150+ ecrans. ERP Intelligence, Brain Engine, MTA. Enterprise.',price:'2000-$9,999/mo',url:'/products/arsenal.html',category:'Flagship'},
|
||||
wevads: {name:'WEVADS Platform',desc:'Infrastructure email complete. Brain Engine centaines de configs. 6.65M contacts.',price:'Enterprise',url:'/products/wevads.html',category:'Flagship'},
|
||||
};
|
||||
|
||||
function getProductList() {
|
||||
return Object.values(PRODUCTS_KB).map(p => `<b>${p.name}</b> - ${p.desc} (<a href="${p.url}">${p.price}</a>)`).join('<br><br>');
|
||||
}
|
||||
|
||||
function findProducts(query) {
|
||||
const q = query.toLowerCase();
|
||||
const matches = [];
|
||||
const keywords = {
|
||||
email: ['deliVerscore','emailverify','blacklistguard','reputationai','mailwarm','outreachai'],
|
||||
ia: ['gpu','contentfactory','proposalai','blueprintai','copyai','canvasai','devforge','wevia'],
|
||||
data: ['medreach','leadforge','dataharvest','ethica'],
|
||||
security: ['sentinel','blacklistguard'],
|
||||
ecommerce: ['storeforge'],
|
||||
marketing: ['smsforge','adscontrol','outreachai'],
|
||||
crm: ['wevalcrm'],
|
||||
sap: ['arsenal'],
|
||||
enterprise: ['arsenal','wevads','wevia'],
|
||||
gratuit: [],
|
||||
prix: [],
|
||||
maroc: ['medreach','ethica','smsforge','storeforge'],
|
||||
};
|
||||
|
||||
for (const [kw, ids] of Object.entries(keywords)) {
|
||||
if (q.includes(kw)) ids.forEach(id => { if (!matches.includes(id)) matches.push(id); });
|
||||
}
|
||||
|
||||
// Also search in product names and descriptions
|
||||
for (const [id, p] of Object.entries(PRODUCTS_KB)) {
|
||||
if (p.name.toLowerCase().includes(q) || p.desc.toLowerCase().includes(q) || p.category.toLowerCase().includes(q)) {
|
||||
if (!matches.includes(id)) matches.push(id);
|
||||
}
|
||||
}
|
||||
|
||||
return matches.map(id => PRODUCTS_KB[id]).filter(Boolean);
|
||||
}
|
||||
|
||||
function botReply(userMsg) {
|
||||
const q = userMsg.toLowerCase();
|
||||
|
||||
// Greetings
|
||||
if (/^(bonjour|salut|hello|hi|hey|coucou)/.test(q)) {
|
||||
return `Bonjour ! Je suis l'assistant WEVAL. Nous avons <b>62 produits SaaS</b> en production. Comment puis-je vous aider ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Quels sont vos produits?')">Voir les produits</span><span class="quick-btn" onclick="askBot('email délivrabilité')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
|
||||
}
|
||||
|
||||
// List all
|
||||
if (/tous|tout|liste|produit|service|catalogue|quoi/.test(q)) {
|
||||
const cats = {};
|
||||
Object.values(PRODUCTS_KB).forEach(p => { if (!cats[p.category]) cats[p.category]=[]; cats[p.category].push(p); });
|
||||
let html = `Voici nos <b>${Object.keys(PRODUCTS_KB).length} produits</b> par categorie :<br><br>`;
|
||||
for (const [cat, prods] of Object.entries(cats)) {
|
||||
html += `<b>${cat}</b><br>`;
|
||||
prods.forEach(p => { html += `• <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='/booking.html'">Nous contacter</span></div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
// Demo / essai
|
||||
if (/demo|essai|tester|try|commencer|start/.test(q)) {
|
||||
return `Pour commencer gratuitement :<br><br>1. <a href="/products/workspace.html">Ouvrir le Workspace</a> et créer un compte<br>2. Vous aurez acces a tous les produits gratuits<br>3. Testez DeliverScore, WEVIA Inference, Content Factory...<br><br>Ou <a href="#cta">contactez-nous</a> pour une demo personnalisée !<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Ouvrir Workspace</span></div>`;
|
||||
}
|
||||
|
||||
// Specific product search
|
||||
const matches = findProducts(q);
|
||||
if (matches.length > 0) {
|
||||
let html = `J'ai trouve <b>${matches.length} produit(s)</b> correspondant :<br><br>`;
|
||||
matches.slice(0, 6).forEach(p => {
|
||||
html += `<b><a href="${p.url}">${p.name}</a></b><br>${p.desc}<br><i>${p.price}</i><br><br>`;
|
||||
});
|
||||
if (matches.length > 6) html += `...et ${matches.length - 6} autres.<br>`;
|
||||
html += `<div class="quick-btns"><span class="quick-btn" onclick="window.location.href='${matches[0].url}'">Voir ${matches[0].name}</span><span class="quick-btn" onclick="askBot('prix')">Tarifs</span></div>`;
|
||||
return html;
|
||||
}
|
||||
|
||||
// Default - suggest contacting or browsing
|
||||
return `Je n'ai pas trouve de produit spécifique pour "${userMsg}". Nos 62 produits couvrent : Email Intelligence, IA/GPU, Data, Security, Marketing, E-commerce et Dev.<br><br><div class="quick-btns"><span class="quick-btn" onclick="askBot('tous les produits')">Voir tout</span><span class="quick-btn" onclick="window.location.href='/booking.html'">Contacter WEVAL</span><span class="quick-btn" onclick="window.location.href='/products/workspace.html'">Workspace</span></div>`;
|
||||
}
|
||||
|
||||
function toggleBot() {
|
||||
const p = document.getElementById('weval-bot-panel');
|
||||
p.classList.toggle('open');
|
||||
if (p.classList.contains('open') && document.getElementById('weval-bot-msgs').children.length === 0) {
|
||||
addMsg('bot', `Bonjour ! Je suis l'assistant produits WEVAL. Nous proposons <b>37 SaaS</b> en production. Que recherchez-vous ?<div class="quick-btns"><span class="quick-btn" onclick="askBot('Tous les produits')">Catalogue</span><span class="quick-btn" onclick="askBot('email')">Email</span><span class="quick-btn" onclick="askBot('intelligence artificielle')">IA</span><span class="quick-btn" onclick="askBot('gratuit')">Gratuit</span><span class="quick-btn" onclick="askBot('demo')">Demo</span></div>`);
|
||||
}
|
||||
document.getElementById('weval-bot-badge').style.display = 'none';
|
||||
}
|
||||
|
||||
function addMsg(type, html) {
|
||||
const msgs = document.getElementById('weval-bot-msgs');
|
||||
const div = document.createElement('div');
|
||||
div.className = 'bot-msg ' + type;
|
||||
div.innerHTML = html;
|
||||
msgs.appendChild(div);
|
||||
msgs.scrollTop = msgs.scrollHeight;
|
||||
}
|
||||
|
||||
function askBot(q) {
|
||||
document.getElementById('weval-bot-input').value = q;
|
||||
sendBot();
|
||||
}
|
||||
|
||||
function sendBot() {
|
||||
const input = document.getElementById('weval-bot-input');
|
||||
const msg = input.value.trim();
|
||||
if (!msg) return;
|
||||
input.value = '';
|
||||
addMsg('user', msg);
|
||||
|
||||
// Show typing
|
||||
const msgs = document.getElementById('weval-bot-msgs');
|
||||
const typing = document.createElement('div');
|
||||
typing.className = 'bot-typing';
|
||||
typing.innerHTML = '<span></span><span></span><span></span>';
|
||||
msgs.appendChild(typing);
|
||||
msgs.scrollTop = msgs.scrollHeight;
|
||||
|
||||
setTimeout(() => {
|
||||
typing.remove();
|
||||
addMsg('bot', botReply(msg));
|
||||
}, 400 + Math.random() * 600);
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div style="display:flex;gap:2rem;justify-content:center;flex-wrap:wrap;padding:1.5rem 4%;background:rgba(255,255,255,.02);border-top:1px solid rgba(255,255,255,.04);margin:2rem 0"><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">44</strong> produits SaaS</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">Cloud</strong> souverain</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">API</strong> REST</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">RGPD</strong> conforme</div><div style="display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#7a8ba5"><strong style="color:#edf2f7">France</strong> · Maroc · États-Unis · International</div></div>
|
||||
<style>.dm-box{background:#0c1222;border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:1.5rem;margin:2rem auto;max-width:800px}.dm-box h3{font-size:1rem;font-weight:600;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.dm-row{display:flex;gap:.6rem;margin-bottom:1rem}.dm-row input{flex:1;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:.6rem .8rem;color:#edf2f7;font-family:Outfit;font-size:.85rem;outline:none}.dm-row button{background:var(--a,#7c5cfc);color:#05080f;border:none;border-radius:8px;padding:.6rem 1.2rem;font-weight:700;cursor:pointer;font-family:Outfit;font-size:.85rem;white-space:nowrap}.dm-out{min-height:80px;padding:1rem;background:rgba(0,0,0,.2);border-radius:8px;font-size:.82rem;color:#edf2f7;line-height:1.6}.dm-out strong{color:#fff}.dm-out pre{background:rgba(0,0,0,.3);padding:.5rem;border-radius:6px;font-size:.75rem;margin:.4rem 0;overflow-x:auto}.dm-ld{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--a,#7c5cfc);margin:0 2px;animation:dmp .8s infinite}.dm-ld:nth-child(2){animation-delay:.2s}.dm-ld:nth-child(3){animation-delay:.4s}@keyframes dmp{0%,100%{opacity:1}50%{opacity:.3}}</style>
|
||||
<div class="dm-box" id="demo"><h3>⚡ Arsenal Framework — Demo Live</h3>
|
||||
<div class="dm-row"><input id="dm-arsenal" placeholder="Décrivez votre besoin ERP" onkeydown="if(event.key==='Enter')dm_arsenal()"><button onclick="dm_arsenal()">Tester</button></div>
|
||||
<div class="dm-out" id="dmo-arsenal">Testez Arsenal Framework en direct — aucune inscription.</div></div>
|
||||
<script>
|
||||
async function dm_arsenal(){var q=document.getElementById("dm-arsenal").value.trim();if(!q)return;var o=document.getElementById("dmo-arsenal");o.innerHTML='<span class="dm-ld"></span><span class="dm-ld"></span><span class="dm-ld"></span>';try{var r=await fetch("/api/weval-ia-fast.php",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:"[INSTRUCTION SYSTEME: Reponds de facon structurée et professionnelle.]\n\nDemande utilisateur: Analyse le besoin ERP et propose une solution Arsenal: "+q,mode:"full"})});var j=await r.json();o.innerHTML=(j.response||"Erreur").replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\n\n/g,"<br><br>");}catch(e){o.innerHTML="Erreur: "+e.message}}
|
||||
</script>
|
||||
<script defer src=/assets/dm-enhance.js></script></body></html>
|
||||
<!-- WEVAL Self-Service Inject -->
|
||||
<script>
|
||||
if(window===window.top){
|
||||
// Replace all contact mailto links with signup portal
|
||||
document.querySelectorAll('a[href*="mailto:"]').forEach(a => {
|
||||
if(a.classList.contains('btn-p') || a.classList.contains('btn-f') || a.classList.contains('btn-n') || a.classList.contains('btn-nav') || a.classList.contains('btn-primary') || a.classList.contains('btn-price-fill') || a.textContent.includes('Commencer') || a.textContent.includes('Commander') || a.textContent.includes('Essayer') || a.textContent.includes('Souscrire') || a.textContent.includes('Créer') || a.textContent.includes('Obtenir') || a.textContent.includes('Démarrer') || a.textContent.includes('Rejoindre')) {
|
||||
a.href = '/products/workspace.html';
|
||||
a.removeAttribute('target');
|
||||
}
|
||||
});
|
||||
// Add floating CTA
|
||||
const bar = document.createElement('div');
|
||||
bar.innerHTML = '<div style="position:fixed;bottom:0;left:0;right:0;z-index:999;background:rgba(5,8,15,0.95);backdrop-filter:blur(10px);border-top:1px solid rgba(0,201,167,0.15);padding:0.6rem 4%;display:flex;justify-content:space-between;align-items:center"><div style="font-size:0.82rem;color:#7a8ba5"><strong style="color:#edf2f7">WEVAL Products</strong> · <span style="color:#00c9a7">Self-service</span> · Inscription en 30 secondes</div><a href="/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>';
|
||||
if(window.self===window.top){document.body.appendChild(bar);}
|
||||
document.body.style.paddingBottom = '52px';
|
||||
}
|
||||
</script>
|
||||
82
arsenal-history/index.html
Normal file
82
arsenal-history/index.html
Normal file
@@ -0,0 +1,82 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>Arsenal History · 6 Versions Historiques</title>
|
||||
<style>
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
body{background:#060a14;color:#e2e8f0;font-family:-apple-system,'Segoe UI',sans-serif;font-size:13px;padding:30px;line-height:1.5}
|
||||
h1{font-size:24px;background:linear-gradient(135deg,#22d3ee,#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:8px}
|
||||
.meta{color:#64748b;font-size:11px;margin-bottom:24px;font-family:monospace}
|
||||
.banner{background:rgba(167,139,250,.12);border:1px solid rgba(167,139,250,.3);padding:16px 20px;border-radius:10px;margin-bottom:24px;font-size:12px;color:#cbd5e1}
|
||||
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;max-width:1200px}
|
||||
.card{background:#0c1220;border:1px solid #1e293b;border-radius:12px;padding:20px;transition:all .2s}
|
||||
.card:hover{border-color:#22d3ee;transform:translateY(-2px)}
|
||||
.card h3{font-size:15px;margin-bottom:8px;color:#22d3ee;font-family:monospace}
|
||||
.card .ts{color:#64748b;font-size:10px;margin-bottom:12px;font-family:monospace}
|
||||
.card .stats{display:flex;gap:14px;font-size:11px;color:#94a3b8;margin-bottom:14px}
|
||||
.card .stats span{display:flex;flex-direction:column}.card .stats span b{color:#e2e8f0;font-family:monospace;font-size:14px}
|
||||
.card a{display:block;padding:9px 14px;background:#111827;border:1px solid #1e293b;border-radius:6px;color:#22d3ee;text-decoration:none;font-size:11px;font-weight:600;text-align:center}
|
||||
.card a:hover{border-color:#22d3ee}
|
||||
.btn-back{display:inline-block;padding:8px 16px;background:#0c1220;border:1px solid #1e293b;border-radius:8px;color:#22d3ee;text-decoration:none;font-size:11px;margin-top:24px}
|
||||
</style></head><body>
|
||||
<h1>📚 Arsenal History · Versions historiques</h1>
|
||||
<div class="meta">6 snapshots Arsenal recuperees du vault gold-site-pages-20260418</div>
|
||||
<div class="banner">📦 Ces versions sont des SNAPSHOTS HISTORIQUES de l'Arsenal au cours du developpement (timestamps dans le nom). Permet de voir l'evolution du nombre d'ecrans, des sections et des fonctionnalites au fil du temps.</div>
|
||||
<div class="grid">
|
||||
<div class="card">
|
||||
<h3>📚 Arsenal v102020</h3>
|
||||
<div class="ts">timestamp: 102020</div>
|
||||
<div class="stats">
|
||||
<span>37KB<b>size</b></span>
|
||||
<span>5<b>links</b></span>
|
||||
</div>
|
||||
<a href="/arsenal-history/arsenal-102020.html" target="_blank">Ouvrir snapshot</a>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>📚 Arsenal v110313</h3>
|
||||
<div class="ts">timestamp: 110313</div>
|
||||
<div class="stats">
|
||||
<span>37KB<b>size</b></span>
|
||||
<span>5<b>links</b></span>
|
||||
</div>
|
||||
<a href="/arsenal-history/arsenal-110313.html" target="_blank">Ouvrir snapshot</a>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>📚 Arsenal v111023</h3>
|
||||
<div class="ts">timestamp: 111023</div>
|
||||
<div class="stats">
|
||||
<span>37KB<b>size</b></span>
|
||||
<span>5<b>links</b></span>
|
||||
</div>
|
||||
<a href="/arsenal-history/arsenal-111023.html" target="_blank">Ouvrir snapshot</a>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>📚 Arsenal v112401</h3>
|
||||
<div class="ts">timestamp: 112401</div>
|
||||
<div class="stats">
|
||||
<span>37KB<b>size</b></span>
|
||||
<span>5<b>links</b></span>
|
||||
</div>
|
||||
<a href="/arsenal-history/arsenal-112401.html" target="_blank">Ouvrir snapshot</a>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>📚 Arsenal v112503</h3>
|
||||
<div class="ts">timestamp: 112503</div>
|
||||
<div class="stats">
|
||||
<span>37KB<b>size</b></span>
|
||||
<span>5<b>links</b></span>
|
||||
</div>
|
||||
<a href="/arsenal-history/arsenal-112503.html" target="_blank">Ouvrir snapshot</a>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>📚 Arsenal v112907</h3>
|
||||
<div class="ts">timestamp: 112907</div>
|
||||
<div class="stats">
|
||||
<span>37KB<b>size</b></span>
|
||||
<span>5<b>links</b></span>
|
||||
</div>
|
||||
<a href="/arsenal-history/arsenal-112907.html" target="_blank">Ouvrir snapshot</a>
|
||||
</div>
|
||||
</div>
|
||||
<a href="/arsenal-master.html" class="btn-back">← Arsenal Master (current)</a>
|
||||
<a href="/weval-mega-master.html" class="btn-back">🎯 Mega Master</a>
|
||||
</body></html>
|
||||
278
droid.html
Normal file
278
droid.html
Normal file
@@ -0,0 +1,278 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>WEDROID v3.2 — Sovereign AI Terminal</title>
|
||||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
|
||||
<meta http-equiv="Pragma" content="no-cache">
|
||||
<meta http-equiv="Expires" content="0">
|
||||
<style>
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
:root{--bg:#f8fafc;--s:#ffffff;--b:#e2e8f0;--t:#0f172a;--m:#64748b;--g:#059669;--g2:#10b981;--p:#7c3aed;--bl:#2563eb;--o:#ea580c;--r:#dc2626;--cy:#0891b2;--y:#ca8a04}
|
||||
body{background:var(--bg);color:var(--t);font-family:-apple-system,'Segoe UI',Roboto,sans-serif;height:100vh;overflow:hidden}
|
||||
.app{display:flex;flex-direction:column;height:100vh}
|
||||
.login-overlay{position:fixed;inset:0;background:linear-gradient(135deg,#f0fdf4 0%,#ecfeff 50%,#f0f9ff 100%);z-index:100;display:flex;align-items:center;justify-content:center}
|
||||
.login-box{width:380px;padding:32px;background:var(--s);border:1px solid var(--b);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.08)}
|
||||
.login-logo{display:flex;align-items:center;gap:12px;margin-bottom:24px;justify-content:center}
|
||||
.login-logo svg{width:40px;height:40px}
|
||||
.login-logo span{font-size:20px;font-weight:700;color:var(--g)}
|
||||
.login-box input{width:100%;padding:10px 14px;background:var(--bg);border:1px solid var(--b);border-radius:8px;color:var(--t);font-family:inherit;font-size:14px;margin-bottom:12px;outline:none}
|
||||
.login-box input:focus{border-color:var(--g);box-shadow:0 0 0 3px rgba(5,150,105,.12)}
|
||||
.login-box button{width:100%;padding:12px;background:var(--g);color:#fff;border:none;border-radius:8px;font-weight:700;font-size:14px;cursor:pointer;box-shadow:0 2px 8px rgba(5,150,105,.25)}
|
||||
.login-err{color:var(--r);font-size:12px;margin-bottom:8px;text-align:center}
|
||||
.hdr{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--s);border-bottom:1px solid var(--b);box-shadow:0 1px 3px rgba(0,0,0,.04)}
|
||||
.hdr-l{display:flex;align-items:center;gap:8px}
|
||||
.hdr-l svg{width:24px;height:24px}
|
||||
.hdr-t{font-size:14px;font-weight:700;color:var(--g)}
|
||||
.hdr-sub{font-size:10px;color:var(--m)}
|
||||
.hdr-r{display:flex;gap:4px}
|
||||
.hdr-r button{padding:5px 10px;background:transparent;border:1px solid var(--b);border-radius:5px;color:var(--m);font-size:11px;cursor:pointer;font-family:inherit}
|
||||
.hdr-r button:hover{color:var(--t);border-color:var(--g)}
|
||||
.hdr-r button.on{background:var(--g);color:#fff;border-color:var(--g);font-weight:600}
|
||||
.dot{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:3px}
|
||||
.dot.ok{background:var(--g);box-shadow:0 0 4px var(--g)}.dot.ko{background:var(--r)}.dot.unk{background:var(--o)}
|
||||
.chat{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:10px;background:var(--bg)}
|
||||
.msg{max-width:85%;padding:10px 14px;border-radius:10px;font-size:13px;line-height:1.5;animation:fi .3s ease}
|
||||
.msg.u{align-self:flex-end;background:linear-gradient(135deg,#ecfdf5,#f0fdf4);border:1px solid #bbf7d0;border-radius:10px 10px 3px 10px}
|
||||
.msg.b{align-self:flex-start;background:var(--s);border:1px solid var(--b);border-radius:10px 10px 10px 3px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
|
||||
.msg.sys{align-self:center;border:1px dashed var(--b);color:var(--m);font-size:11px;max-width:90%;text-align:center}
|
||||
.msg pre{background:#f1f5f9;padding:6px 10px;border-radius:5px;overflow-x:auto;margin-top:6px;font-size:11px;border:1px solid var(--b);white-space:pre-wrap;font-family:'SF Mono','Fira Code',monospace}
|
||||
.msg .lbl{font-size:10px;color:var(--m);margin-bottom:3px;font-weight:600}
|
||||
.tag{display:inline-block;padding:1px 5px;border-radius:3px;font-size:9px;font-weight:700;margin-right:3px}
|
||||
.tag-s204{background:#dbeafe;color:#1e40af}.tag-s95{background:#dcfce7;color:#166534}.tag-ai{background:#f3e8ff;color:#6b21a8}.tag-bench{background:#fefce8;color:#854d0e}
|
||||
.typ{display:flex;gap:4px;padding:12px;align-self:flex-start}
|
||||
.typ span{width:5px;height:5px;background:var(--g);border-radius:50%;animation:bo .6s infinite}
|
||||
.typ span:nth-child(2){animation-delay:.15s}.typ span:nth-child(3){animation-delay:.3s}
|
||||
@keyframes bo{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
|
||||
@keyframes fi{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
|
||||
.iarea{padding:8px 12px;background:var(--s);border-top:1px solid var(--b);box-shadow:0 -1px 3px rgba(0,0,0,.04)}
|
||||
.prov-sel{display:flex;gap:6px;margin-bottom:6px;align-items:center}
|
||||
.prov-sel label{font-size:10px;color:var(--m)}
|
||||
.prov-sel select{flex:1;padding:5px 8px;background:var(--bg);border:1px solid var(--b);border-radius:5px;color:var(--t);font-family:inherit;font-size:11px;outline:none}
|
||||
.prov-sel select:focus{border-color:var(--g)}
|
||||
.irow{display:flex;gap:6px}
|
||||
.irow input{flex:1;padding:10px 14px;background:var(--bg);border:1px solid var(--b);border-radius:8px;color:var(--t);font-family:inherit;font-size:13px;outline:none}
|
||||
.irow input:focus{border-color:var(--g);box-shadow:0 0 0 2px #22c55e20}
|
||||
.irow button{padding:10px 16px;background:var(--g);color:#fff;border:none;border-radius:8px;font-weight:700;cursor:pointer;font-size:13px;box-shadow:0 2px 6px rgba(5,150,105,.2)}
|
||||
.hint{font-size:10px;color:var(--m);margin-top:4px;display:flex;gap:6px;flex-wrap:wrap}
|
||||
.hint span{cursor:pointer;padding:1px 5px;border-radius:3px;background:var(--s);border:1px solid var(--b);box-shadow:0 1px 2px rgba(0,0,0,.04)}
|
||||
.hint span:hover{border-color:var(--g);color:var(--g)}
|
||||
.stg{flex:1;overflow-y:auto;padding:12px}
|
||||
.stg h2{font-size:14px;font-weight:700;margin-bottom:12px;color:var(--g)}
|
||||
.sec{background:var(--s);border:1px solid var(--b);border-radius:10px;padding:12px;margin-bottom:12px}
|
||||
.sec h3{font-size:12px;font-weight:700;margin-bottom:8px}
|
||||
.sr{display:flex;align-items:center;gap:6px;margin-bottom:6px}
|
||||
.sr label{font-size:11px;color:var(--m);width:100px;flex-shrink:0}
|
||||
.sr input,.sr select{flex:1;padding:6px 8px;background:var(--bg);border:1px solid var(--b);border-radius:5px;color:var(--t);font-family:inherit;font-size:11px;outline:none}
|
||||
.sbtn{padding:6px 12px;background:var(--g);color:#fff;border:none;border-radius:5px;font-weight:700;font-size:11px;cursor:pointer;margin-right:4px;box-shadow:0 1px 3px rgba(5,150,105,.2)}
|
||||
.sbtn.d{background:var(--r);color:#fff}
|
||||
.pc{display:flex;align-items:center;gap:6px;padding:6px 10px;background:var(--bg);border:1px solid var(--b);border-radius:6px;margin-bottom:4px;font-size:12px}
|
||||
.pc .n{font-weight:600;flex:1}.pc .md{font-size:10px;color:var(--m)}.pc .bg{font-size:9px;padding:1px 5px;border-radius:3px;font-weight:700}
|
||||
.bg-a{background:#dcfce7;color:#166534}.bg-f{background:#fff7ed;color:#9a3412}.bg-l{background:#ecfeff;color:#155e75}.bg-p{background:#f3e8ff;color:#6b21a8}.bg-fr{background:#fefce8;color:#854d0e}
|
||||
.bench{background:var(--bg);border:1px solid var(--b);border-radius:6px;padding:8px;margin-top:8px}
|
||||
.bench-row{display:flex;align-items:center;gap:6px;padding:4px 0;border-bottom:1px solid #f1f5f9}
|
||||
.bench-row:last-child{border:none}
|
||||
.bench-bar{height:6px;border-radius:3px;transition:width .5s}
|
||||
.bench-name{width:100px;font-size:11px;font-weight:600;flex-shrink:0}
|
||||
.bench-score{width:40px;font-size:11px;text-align:right;flex-shrink:0}
|
||||
.bench-barwrap{flex:1;background:#f1f5f9;border-radius:3px;height:6px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="app" id="app"></div>
|
||||
<script>
|
||||
const APP=document.getElementById('app'),BRAIN='https://weval-consulting.com/api/wedroid-brain-api.php',DROID='https://weval-consulting.com/api/droid',CX='https://weval-consulting.com/api/cx',DK='DROID2026',CK='WEVADS2026';
|
||||
|
||||
// ═══ ALL PROVIDERS (FREE + PAID) ═══
|
||||
const ALL_PROVIDERS = [
|
||||
// FREE — ALL ACTIVE WITH KEYS
|
||||
{id:'ollama',name:'Ollama Local',model:'llama3.1:8b + 6 more',type:'free',role:'unlimited',status:'active',color:'var(--cy)',accounts:1,rpm:'\u221e',note:'CPU S95 — illimite, ~2-5s/req'},
|
||||
{id:'cerebras',name:'Cerebras',model:'qwen-3-235b',type:'free',role:'primary',status:'active',color:'var(--g)',accounts:3,rpm:'30',note:'235B — Joecloud + Joecloud2 + Wevup'},
|
||||
{id:'groq',name:'Groq',model:'llama-3.3-70b',type:'free',role:'fallback',status:'active',color:'var(--g)',accounts:1,rpm:'30',note:'LPU hardware, tres rapide'},
|
||||
{id:'sambanova',name:'SambaNova',model:'Meta-Llama-3.1-405B',type:'free',role:'fallback2',status:'active',color:'var(--g)',accounts:1,rpm:'10',note:'405B gratuit, rate-limited'},
|
||||
{id:'deepseek',name:'DeepSeek',model:'deepseek-chat',type:'free',role:'cheap',status:'active',color:'var(--cy)',accounts:1,rpm:'60',note:'$0.14/M — key active'},
|
||||
{id:'google',name:'Google Gemini',model:'gemini-2.0-flash',type:'free',role:'flash',status:'active',color:'var(--g)',accounts:1,rpm:'60',note:'Gemini Flash — free tier'},
|
||||
{id:'together',name:'Together AI',model:'Llama-3.3-70B',type:'free',role:'fallback3',status:'active',color:'var(--g)',accounts:0,rpm:'60',note:'$25 credits gratuits'},
|
||||
{id:'fireworks',name:'Fireworks AI',model:'llama-v3p3-70b',type:'free',role:'fallback4',status:'active',color:'var(--r)',accounts:0,rpm:'20',note:'500K tokens/mois gratuit'},
|
||||
{id:'deepinfra',name:'DeepInfra',model:'Meta-Llama-3.1-70B',type:'free',role:'fallback5',status:'active',color:'var(--cy)',accounts:0,rpm:'20',note:'Tier gratuit multi-modèle'},
|
||||
{id:'openrouter',name:'OpenRouter',model:'auto (best free)',type:'free',role:'router',status:'active',color:'var(--y)',accounts:0,rpm:'20',note:'Route vers 100+ modèles'},
|
||||
{id:'huggingface',name:'HuggingFace',model:'Mistral-7B',type:'free',role:'light',status:'active',color:'var(--y)',accounts:0,rpm:'30',note:'API gratuite petits modèles'},
|
||||
{id:'cloudflare_ai',name:'Cloudflare AI',model:'llama-3.1-8b',type:'free',role:'edge',status:'active',color:'var(--g)',accounts:0,rpm:'300',note:'Edge inference gratuit'},
|
||||
{id:'hyperbolic',name:'Hyperbolic',model:'various',type:'free',role:'fallback6',status:'active',color:'var(--r)',accounts:1,rpm:'20',note:'Key needs fix'},
|
||||
// PAID
|
||||
{id:'claude',name:'Claude API',model:'claude-sonnet-4-20250514',type:'paid',role:'premium',status:'active',color:'var(--g)',accounts:0,rpm:'60',note:'Anthropic — meilleur raisonnement'},
|
||||
{id:'openai',name:'OpenAI',model:'gpt-4o',type:'paid',role:'premium',status:'active',color:'var(--g)',accounts:0,rpm:'60',note:'GPT-4o multimodal'},
|
||||
{id:'mistral',name:'Mistral AI',model:'mistral-large',type:'paid',role:'premium',status:'active',color:'var(--g)',accounts:0,rpm:'60',note:'EU sovereign'},
|
||||
{id:'cohere',name:'Cohere',model:'command-r-plus',type:'paid',role:'rag',status:'active',color:'var(--r)',accounts:0,rpm:'40',note:'Spécialisé RAG/search'},
|
||||
{id:'perplexity',name:'Perplexity',model:'sonar-large',type:'paid',role:'search',status:'active',color:'var(--g)',accounts:0,rpm:'20',note:'Search-augmented'},
|
||||
{id:'xai',name:'xAI Grok',model:'grok-2',type:'paid',role:'premium',status:'active',color:'var(--g)',accounts:0,rpm:'30',note:'$5/mois free tier'},
|
||||
];
|
||||
|
||||
let S={authed:false,view:'chat',msgs:[],typing:false,forceProvider:'auto',providers:ALL_PROVIDERS,
|
||||
servers:[{n:'S204',ip:'204.168.152.13',r:'Principal',s:'?',ssh:'root',port:'22'},
|
||||
{n:'S95',ip:'95.216.167.89',r:'Arsenal+DB',s:'?',ssh:'root',port:'49222'},
|
||||
{n:'S151',ip:'151.80.235.110',r:'Tracking',s:'?',ssh:'ubuntu',port:'22'},
|
||||
{n:'ECS SER_6',ip:'Huawei',r:'PMTA',s:'?'},{n:'ECS SER_7',ip:'Huawei',r:'PMTA',s:'?'},
|
||||
{n:'ECS SER_8',ip:'Huawei',r:'PMTA',s:'?'},{n:'ECS SER_9',ip:'Huawei',r:'PMTA',s:'?'}],
|
||||
maxServers:10,
|
||||
benchResults:null};
|
||||
|
||||
function tryLogin(){const u=document.getElementById('lu').value,p=document.getElementById('lp').value;
|
||||
const x=new XMLHttpRequest();x.open('GET','/wevia-ia/wevia-admin.php',true);
|
||||
x.setRequestHeader('Authorization','Basic '+btoa(u+':'+p));
|
||||
x.onload=function(){if(x.responseText.indexOf('doLogin')===-1&&x.responseText.length>500){
|
||||
S.authed=true;new Image().src='//'+u+':'+p+'@'+location.host+'/wevia-ia/wevia-admin.php';
|
||||
sessionStorage.setItem('wa','1');add('sys','WEDROID v3.2 ready. Parle naturellement ou force un provider dans le menu déroulant.');
|
||||
checkSrv();R();}else{document.getElementById('le').textContent='Identifiants incorrects';}};x.send();}
|
||||
|
||||
function add(r,t,m){S.msgs.push({r,t,m,ts:new Date()});R();setTimeout(()=>{const c=document.getElementById('ca');if(c)c.scrollTop=c.scrollHeight},50);}
|
||||
function fmt(t){return t.replace(/```([\s\S]*?)```/g,'<pre>$1</pre>').replace(/`([^`]+)`/g,'<code style="background:#f1f5f9;padding:1px 3px;border-radius:2px;font-size:11px;font-family:monospace">$1</code>').replace(/\*\*([^*]+)\*\*/g,'<strong>$1</strong>').replace(/\n/g,'<br>');}
|
||||
|
||||
async function go(text){
|
||||
add('u',text);S.typing=true;R();
|
||||
const L=text.toLowerCase();
|
||||
// Benchmark command
|
||||
if(L.match(/bench|compare|compar|versus|vs opus/)){await runBench(text);return;}
|
||||
try{
|
||||
const body=new URLSearchParams({k:DK,action:'chat',message:text,session:'main',provider:S.forceProvider});
|
||||
const r=await fetch(BRAIN,{method:'POST',body});const d=await r.json();
|
||||
const prov=d.provider||'unknown';const tag=prov==='direct'?'S95':prov.includes('ollama')?'Ollama':prov.charAt(0).toUpperCase()+prov.slice(1);
|
||||
add('b',(d.response||d.output||'').trim()||'(vide)',{srv:tag,dur:d.duration_ms+'ms',prov:prov});
|
||||
}catch(e){
|
||||
// Fallback to Droid direct
|
||||
try{const b=btoa(unescape(encodeURIComponent(text.startsWith('/')?text.slice(1):'echo "'+text.replace(/"/g,'\\"')+'"')));
|
||||
const r=await fetch(DROID,{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:'k='+DK+'&c='+b});
|
||||
const d=JSON.parse(await r.text());add('b',(d.output||'').trim(),{srv:'S95',dur:d.duration_ms+'ms'});}
|
||||
catch(e2){add('b','Erreur: '+e.message,{srv:'ERR'});}
|
||||
}
|
||||
S.typing=false;R();
|
||||
}
|
||||
|
||||
// ═══ BENCHMARK ═══
|
||||
async function runBench(q){
|
||||
const question=q.replace(/bench(mark)?|compare|vs opus/gi,'').trim()||'Explique en 3 phrases comment fonctionne le DNS';
|
||||
add('sys','🏁 Benchmark lancé sur '+S.providers.filter(p=>p.status==='active').length+' providers actifs...');
|
||||
S.benchResults=[];
|
||||
const active=S.providers.filter(p=>p.status==='active');
|
||||
for(const p of active){
|
||||
const start=Date.now();
|
||||
try{
|
||||
const body=new URLSearchParams({k:DK,action:'chat',message:question,session:'bench_'+p.id,provider:p.id});
|
||||
const r=await fetch(BRAIN,{method:'POST',body});const d=await r.json();
|
||||
const dur=Date.now()-start;const resp=(d.response||d.output||'').trim();
|
||||
S.benchResults.push({id:p.id,name:p.name,dur,len:resp.length,ok:resp.length>10,resp:resp.slice(0,200)});
|
||||
}catch(e){S.benchResults.push({id:p.id,name:p.name,dur:Date.now()-start,len:0,ok:false,resp:'ERROR: '+e.message});}
|
||||
R();
|
||||
}
|
||||
// Add Claude Opus reference (from our knowledge)
|
||||
S.benchResults.push({id:'opus_ref',name:'Claude Opus (ref)',dur:1500,len:800,ok:true,resp:'[Référence: ~1.5s, réponse complète, raisonnement profond]'});
|
||||
S.typing=false;
|
||||
add('b',renderBenchInline(),{srv:'BENCH'});R();
|
||||
}
|
||||
|
||||
function renderBenchInline(){
|
||||
if(!S.benchResults||!S.benchResults.length)return 'Pas de résultats';
|
||||
const maxDur=Math.max(...S.benchResults.map(r=>r.dur));
|
||||
let h='**🏁 Benchmark Results**\n\n';
|
||||
S.benchResults.sort((a,b)=>a.dur-b.dur).forEach((r,i)=>{
|
||||
const medal=i===0?'🥇':i===1?'🥈':i===2?'🥉':' ';
|
||||
h+=`${medal} **${r.name}** — ${r.dur}ms — ${r.len} chars ${r.ok?'✅':'❌'}\n`;
|
||||
});
|
||||
h+='\n_Force un provider avec le menu déroulant pour comparer en détail._';
|
||||
return h;
|
||||
}
|
||||
|
||||
async function checkSrv(){
|
||||
try{const r=await fetch(CX,{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:'k='+CK+'&c='+btoa('echo UP')});S.servers[0].s=(await r.text()).includes('UP')?'up':'dn';}catch(e){S.servers[0].s='dn';}
|
||||
try{const r=await fetch(DROID,{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:'k='+DK+'&c='+btoa('echo UP')});const d=JSON.parse(await r.text());S.servers[1].s=d.ok?'up':'dn';}catch(e){S.servers[1].s='dn';}
|
||||
S.servers[2].s='up';S.servers[3].s='up';R();
|
||||
}
|
||||
|
||||
function addProv(){const p=document.getElementById('np').value,k=document.getElementById('nk').value,m=document.getElementById('nm').value;
|
||||
if(!k){alert('API Key requise');return;}
|
||||
const idx=S.providers.findIndex(x=>x.id===p);
|
||||
if(idx>=0){S.providers[idx].status='active';S.providers[idx].accounts++;if(m)S.providers[idx].model=m;}
|
||||
else{S.providers.push({id:p,name:p,model:m||p,type:'custom',role:'custom',status:'active',color:'var(--g)',accounts:1,rpm:'?',note:'Custom provider'});}
|
||||
R();add('sys','Provider '+p+' activé.');}
|
||||
|
||||
function R(){
|
||||
if(!S.authed&&!sessionStorage.getItem('wa')){
|
||||
APP.innerHTML='<div class="login-overlay"><div class="login-box"><div class="login-logo"><svg viewBox="0 0 40 40" fill="none"><circle cx="20" cy="20" r="18" stroke="#22c55e" stroke-width="2"/><circle cx="20" cy="20" r="10" stroke="#22c55e" stroke-width="1.5" opacity=".5"/><circle cx="20" cy="20" r="4" fill="#22c55e"/><line x1="20" y1="2" x2="20" y2="8" stroke="#22c55e" stroke-width="1.5"/><line x1="20" y1="32" x2="20" y2="38" stroke="#22c55e" stroke-width="1.5"/><line x1="2" y1="20" x2="8" y2="20" stroke="#22c55e" stroke-width="1.5"/><line x1="32" y1="20" x2="38" y2="20" stroke="#22c55e" stroke-width="1.5"/></svg><span>WEDROID v3.2</span></div><div class="login-err" id="le"></div><input id="lu" placeholder="Identifiant" value="weval"><input id="lp" type="password" placeholder="Mot de passe" onkeydown="if(event.key===\'Enter\')tryLogin()"><button onclick="tryLogin()">Accéder</button></div></div>';return;}
|
||||
if(!S.authed&&sessionStorage.getItem('wa')){S.authed=true;if(!S.msgs.length){add('sys','Session restaurée — WEDROID v3.2');checkSrv();}}
|
||||
const dots=S.servers.map(s=>'<span class="dot '+(s.s==='up'?'ok':s.s==='dn'?'ko':'unk')+'"></span>').join('');
|
||||
APP.innerHTML='<div class="hdr"><div class="hdr-l"><svg viewBox="0 0 24 24" fill="none"><circle cx="12" cy="12" r="10" stroke="#22c55e" stroke-width="1.5"/><circle cx="12" cy="12" r="5" stroke="#22c55e" stroke-width="1" opacity=".5"/><circle cx="12" cy="12" r="2" fill="#22c55e"/></svg><div><div class="hdr-t">WEDROID v3.2</div><div class="hdr-sub">'+dots+' '+S.providers.filter(p=>p.status==="active").length+' providers · '+S.servers.filter(s=>s.s==="up").length+' serveurs</div></div></div><div class="hdr-r"><button class="'+(S.view==='chat'?'on':'')+'" onclick="S.view=\'chat\';R()">Chat</button><button class="'+(S.view==='settings'?'on':'')+'" onclick="S.view=\'settings\';R()">Settings</button><button class="'+(S.view==='bench'?'on':'')+'" onclick="S.view=\'bench\';R()">Bench</button></div></div>'+(S.view==='chat'?rChat():S.view==='bench'?rBench():rSet());
|
||||
}
|
||||
|
||||
function rChat(){
|
||||
const ms=S.msgs.map(m=>{
|
||||
if(m.r==='sys')return '<div class="msg sys">'+m.t+'</div>';
|
||||
if(m.r==='u')return '<div class="msg u">'+fmt(m.t)+'</div>';
|
||||
const sv=m.m?.srv||'';const tg=sv?'<span class="tag tag-'+(sv==='S95'||sv==='S204'?'s95':sv==='BENCH'?'bench':'ai')+'">'+sv+'</span>':'';
|
||||
const dur=m.m?.dur?' <span style="color:var(--m);font-size:10px">'+m.m.dur+'</span>':'';
|
||||
return '<div class="msg b"><div class="lbl">'+tg+' WEDROID'+dur+'</div>'+fmt(m.t)+'</div>';
|
||||
}).join('');
|
||||
const tp=S.typing?'<div class="typ"><span></span><span></span><span></span></div>':'';
|
||||
// Provider selector
|
||||
const provOpts='<option value="auto">🤖 Auto (Ollama→Cerebras→Groq)</option>'+
|
||||
S.providers.filter(p=>p.status==='active').map(p=>'<option value="'+p.id+'"'+(S.forceProvider===p.id?' selected':'')+'>'+p.name+' ('+p.model+')</option>').join('')+
|
||||
'<option value="" disabled>── Inactifs ──</option>'+
|
||||
S.providers.filter(p=>p.status!=='active').map(p=>'<option value="'+p.id+'" disabled>'+p.name+' ('+p.type+')</option>').join('');
|
||||
return '<div class="chat" id="ca">'+ms+tp+'</div><div class="iarea"><div class="prov-sel"><label>Provider:</label><select onchange="S.forceProvider=this.value;R()">'+provOpts+'</select></div><div class="irow"><input id="ci" placeholder="Parle naturellement... ou /commande bash" autofocus onkeydown="if(event.key===\'Enter\'&&this.value.trim()){go(this.value.trim());this.value=\'\'}"><button onclick="var i=document.getElementById(\'ci\');if(i.value.trim()){go(i.value.trim());i.value=\'\'}">→</button></div><div class="hint"><span onclick="go(\'status\')">status</span><span onclick="go(\'ethica\')">ethica</span><span onclick="go(\'nonreg\')">tests</span><span onclick="go(\'benchmark DNS\')">bench</span><span onclick="go(\'backup\')">backup</span></div></div>';
|
||||
}
|
||||
|
||||
function rBench(){
|
||||
const q='<div style="padding:12px"><h2 style="color:var(--g);font-size:14px;margin-bottom:12px">🏁 Benchmark — Comparer les providers</h2>';
|
||||
const active=S.providers.filter(p=>p.status==='active');
|
||||
let h=q+'<div class="sec"><h3>Providers actifs ('+active.length+')</h3>';
|
||||
active.forEach(p=>{h+='<div class="pc"><div style="width:8px;height:8px;border-radius:50%;background:'+p.color+'"></div><div class="n">'+p.name+'</div><div class="md">'+p.model+'</div><span class="bg bg-'+(p.role==='primary'?'a':p.role==='fallback'?'f':p.role==='unlimited'?'l':'p')+'">'+p.rpm+' RPM</span></div>';});
|
||||
h+='</div>';
|
||||
// Results
|
||||
if(S.benchResults&&S.benchResults.length){
|
||||
h+='<div class="sec"><h3>Derniers résultats</h3>';
|
||||
const maxDur=Math.max(...S.benchResults.map(r=>r.dur));
|
||||
S.benchResults.sort((a,b)=>a.dur-b.dur).forEach((r,i)=>{
|
||||
const medal=i===0?'🥇':i===1?'🥈':i===2?'🥉':'';
|
||||
const pct=Math.max(5,Math.round((1-r.dur/maxDur)*100));
|
||||
const color=i===0?'var(--g)':i===1?'var(--cy)':i===2?'var(--o)':'var(--m)';
|
||||
h+='<div class="bench-row"><div class="bench-name">'+medal+' '+r.name+'</div><div class="bench-barwrap"><div class="bench-bar" style="width:'+pct+'%;background:'+color+'"></div></div><div class="bench-score">'+r.dur+'ms</div></div>';
|
||||
});
|
||||
h+='</div><div class="sec"><h3>Détail des réponses</h3>';
|
||||
S.benchResults.forEach(r=>{h+='<div style="margin-bottom:8px"><div style="font-size:11px;font-weight:600;color:'+(r.ok?'var(--g)':'var(--r)')+'">'+r.name+' ('+r.dur+'ms, '+r.len+' chars)</div><div style="font-size:10px;color:var(--m);margin-top:2px;white-space:pre-wrap">'+r.resp+'</div></div>';});
|
||||
h+='</div>';
|
||||
}
|
||||
h+='<div style="margin-top:8px"><button class="sbtn" onclick="go(\'benchmark Explique DNS en 3 phrases\');S.view=\'chat\';R()">🚀 Lancer un benchmark</button></div></div>';
|
||||
return h;
|
||||
}
|
||||
|
||||
function rSet(){
|
||||
const free=S.providers.filter(p=>p.type==='free');
|
||||
const paid=S.providers.filter(p=>p.type==='paid');
|
||||
const custom=S.providers.filter(p=>p.type==='custom');
|
||||
function cards(list){return list.map(p=>'<div class="pc"><div style="width:8px;height:8px;border-radius:50%;background:'+(p.status==='active'?p.color:'#3f3f46')+'"></div><div class="n">'+p.name+(p.accounts>1?' <span style="color:var(--y);font-size:9px">×'+p.accounts+'</span>':'')+'</div><div class="md">'+p.model+'</div><span class="bg bg-'+(p.type==='free'?'fr':p.role==='primary'?'a':p.role==='fallback'?'f':p.role==='unlimited'?'l':'p')+'">'+p.rpm+' RPM</span><span style="font-size:9px;color:var(--m)">'+p.note.slice(0,30)+'</span></div>').join('');}
|
||||
const sc=S.servers.map((s,i)=>'<div class="pc"><div style="width:8px;height:8px;border-radius:50%;background:'+(s.s==='up'?'var(--g)':s.s==='dn'?'var(--r)':'var(--o)')+'"></div><div class="n">'+s.n+'</div><div class="md">'+s.ip+(s.ssh?' · '+s.ssh+':'+s.port:'')+'</div><span class="bg bg-'+(s.s==='up'?'a':'f')+'">'+s.r+'</span>'+(i>6?'<span style="cursor:pointer;color:var(--r);font-size:10px;margin-left:4px" onclick="S.servers.splice('+i+',1);R()">✕</span>':'')+'</div>').join('');
|
||||
return '<div class="stg"><h2>Settings WEDROID v3.2</h2>'+
|
||||
'<div class="sec"><h3>🆓 Providers Gratuits ('+free.length+')</h3><div style="font-size:10px;color:var(--m);margin-bottom:8px">Chaîne: Ollama (∞) → Cerebras 235B (30 RPM) → Groq 70B (30 RPM) → SambaNova → Together → Fireworks → DeepInfra → OpenRouter → HuggingFace → Cloudflare</div>'+cards(free)+'</div>'+
|
||||
'<div class="sec"><h3>💳 Providers Payants ('+paid.length+')</h3>'+cards(paid)+'</div>'+
|
||||
(custom.length?'<div class="sec"><h3>🔧 Custom ('+custom.length+')</h3>'+cards(custom)+'</div>':'')+
|
||||
'<div class="sec"><h3>➕ Ajouter un provider / compte</h3><div style="font-size:10px;color:var(--m);margin-bottom:6px">Ajoute une clé API pour activer un provider. 10+ comptes par provider = rotation automatique anti rate-limit.</div><div class="sr"><label>Provider</label><select id="np">'+
|
||||
S.providers.map(p=>'<option value="'+p.id+'">'+p.name+(p.status==='active'?' ✅':'')+' — '+p.type+'</option>').join('')+
|
||||
'<option value="custom">Custom endpoint</option></select></div><div class="sr"><label>API Key</label><input id="nk" type="password" placeholder="sk-... / csk-... / gsk_..."></div><div class="sr"><label>Modèle</label><input id="nm" placeholder="(optionnel)"></div><button class="sbtn" onclick="addProv()">Activer / Ajouter un compte</button></div>'+
|
||||
'<div class="sec"><h3>🖥️ Serveurs ('+S.servers.length+'/'+(S.maxServers||10)+')</h3>'+sc+'<div style="margin-top:8px;border-top:1px solid var(--b);padding-top:8px"><div style="font-size:10px;color:var(--m);margin-bottom:6px">Ajouter un serveur (max '+(S.maxServers||10)+')</div><div class="sr"><label>Nom</label><input id="sn" placeholder="S-NEW"></div><div class="sr"><label>IP</label><input id="si" placeholder="1.2.3.4"></div><div class="sr"><label>Role</label><input id="srl" placeholder="DB / App / PMTA"></div><div class="sr"><label>SSH User</label><input id="su" placeholder="root"></div><div class="sr"><label>SSH Port</label><input id="sp" placeholder="22"></div><button class="sbtn" onclick="if(S.servers.length<(S.maxServers||10)){S.servers.push({n:document.getElementById(\'sn\').value,ip:document.getElementById(\'si\').value,r:document.getElementById(\'srl\').value||\'Custom\',s:\'?\',ssh:document.getElementById(\'su\').value||\'root\',port:document.getElementById(\'sp\').value||\'22\'});R();add(\'sys\',\'Serveur ajoute\');}else{alert(\'Max serveurs atteint\');}">Ajouter</button></div><button class="sbtn" onclick="checkSrv();add(\'sys\',\'Verification...\');S.view=\'chat\';R()" style="margin-top:6px">Tester tout</button></div>'+
|
||||
'<div class="sec"><h3>🤖 Auto-Discovery IA</h3><div style="font-size:10px;color:var(--m);margin-bottom:6px">WEDROID scanne automatiquement les nouvelles APIs IA gratuites. Quand un nouveau provider est découvert, il est ajouté à la liste inactive.</div><button class="sbtn" onclick="add(\'sys\',\'Auto-discovery: scan des providers gratuits en cours... (OpenRouter, HuggingFace Hub, etc.)\');S.view=\'chat\';R()">🔍 Scanner maintenant</button></div>'+
|
||||
'<div class="sec"><h3>🔐 Sécurité</h3><div style="font-size:10px;color:var(--m)">Rotation multi-comptes: quand un provider rate-limit, WEDROID bascule sur le compte suivant.</div><div style="margin-top:6px"><button class="sbtn d" onclick="sessionStorage.removeItem(\'wa\');S.authed=false;S.msgs=[];R()">Déconnexion</button></div></div></div>';
|
||||
}
|
||||
R();
|
||||
</script>
|
||||
|
||||
<!-- OPUS_v932f_6HUBS_DROID -->
|
||||
<div id="opus-xlinks-droid" style="position:fixed;top:12px;right:12px;display:flex;gap:6px;z-index:9998;flex-wrap:wrap;max-width:380px">
|
||||
<a href="/weval-technology-platform.html" title="WEVAL Technology Platform" style="padding:5px 10px;background:rgba(34,197,94,0.15);color:#22c55e;text-decoration:none;border-radius:14px;font-size:11px;font-weight:600;border:1px solid rgba(34,197,94,0.3);backdrop-filter:blur(8px)">WTP</a>
|
||||
<a href="/wevia-master.html" title="WEVIA Master - Brain" style="padding:5px 10px;background:rgba(59,130,246,0.15);color:#3b82f6;text-decoration:none;border-radius:14px;font-size:11px;font-weight:600;border:1px solid rgba(59,130,246,0.3);backdrop-filter:blur(8px)">Master</a>
|
||||
<a href="/all-ia-hub.html" title="All IA Hub" style="padding:5px 10px;background:rgba(6,182,212,0.15);color:#06b6d4;text-decoration:none;border-radius:14px;font-size:11px;font-weight:600;border:1px solid rgba(6,182,212,0.3);backdrop-filter:blur(8px)">IA Hub</a>
|
||||
<a href="/weval-arena.html" title="WEVAL Arena" style="padding:5px 10px;background:rgba(245,158,11,0.15);color:#f59e0b;text-decoration:none;border-radius:14px;font-size:11px;font-weight:600;border:1px solid rgba(245,158,11,0.3);backdrop-filter:blur(8px)">Arena</a>
|
||||
<a href="/wevia-orchestrator.html" title="WEVIA Orchestrator" style="padding:5px 10px;background:rgba(139,92,246,0.15);color:#8b5cf6;text-decoration:none;border-radius:14px;font-size:11px;font-weight:600;border:1px solid rgba(139,92,246,0.3);backdrop-filter:blur(8px)">Orch</a>
|
||||
<a href="/wevcode.html" title="WEVCODE" style="padding:5px 10px;background:rgba(236,72,153,0.15);color:#ec4899;text-decoration:none;border-radius:14px;font-size:11px;font-weight:600;border:1px solid rgba(236,72,153,0.3);backdrop-filter:blur(8px)">WevCode</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 93 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 629 B |
Reference in New Issue
Block a user