This commit is contained in:
@@ -89,8 +89,18 @@ body.light #theme-toggle::before{content:"\263D"}
|
||||
/* V142-FOOTER-STRIP: body padding to prevent footer overlap */
|
||||
body{padding-bottom:26px}
|
||||
</style>
|
||||
<link rel="stylesheet" href="/css/wevia-portal-consistency.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="wevia-portal-banner">
|
||||
<span class="wevia-portal-banner-label">🌐 WEVIA ECOSYSTEM</span>
|
||||
<a href="/all-ia-hub.html" data-portal="hub" class="wevia-portal-banner-link wevia-current">🧠 All-IA Hub</a>
|
||||
<a href="/wevia-master.html" data-portal="master" class="wevia-portal-banner-link">🤖 WEVIA Master</a>
|
||||
<a href="/wevia-orchestrator.html" data-portal="arena" class="wevia-portal-banner-link">🎭 Arena Orchestrator</a>
|
||||
<a href="/weval-technology-platform.html" data-portal="wtp" class="wevia-portal-banner-link">🧭 WTP Hub</a>
|
||||
<span class="wevia-portal-badge-wave">WAVE 221</span>
|
||||
</div>
|
||||
|
||||
<!-- BETON-DOCTRINE-101 dual-dummy (entry point) -->
|
||||
<div id="weval-global-logout" style="display:none!important;visibility:hidden!important" aria-hidden="true" data-beton-101="dummy-to-block-auto-injection"></div>
|
||||
<a id="weval-gl" href="#" style="display:none!important;visibility:hidden!important" aria-hidden="true" data-beton-101="dummy-to-block-auto-injection" tabindex="-1"></a>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V41_Disk_Monitor",
|
||||
"ts": "2026-04-21T22:30:01+02:00",
|
||||
"ts": "2026-04-21T23:00:02+02:00",
|
||||
"disk_pct": 82,
|
||||
"disk_free_gb": 27,
|
||||
"growth_per_day_gb": 1.5,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V41_Risk_Escalation",
|
||||
"ts": "2026-04-21T22:45:03+02:00",
|
||||
"ts": "2026-04-21T23:00:03+02:00",
|
||||
"dg_alerts_active": 7,
|
||||
"wevia_life_stats_preview": "{
|
||||
"ok": true,
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"agent": "V41_Feature_Adoption_Tracker",
|
||||
"ts": "2026-04-21T22:00:02+02:00",
|
||||
"ts": "2026-04-21T23:00:02+02:00",
|
||||
"features_tracked": 15,
|
||||
"features_used_24h": 9,
|
||||
"adoption_pct": 60,
|
||||
"chat_queries_last_1k_log": 0,
|
||||
"wtp_views_last_1k_log": 0,
|
||||
"dg_views_last_1k_log": 0,
|
||||
"features_used_24h": 12,
|
||||
"adoption_pct": 80,
|
||||
"chat_queries_last_1k_log": 10,
|
||||
"wtp_views_last_1k_log": 130,
|
||||
"dg_views_last_1k_log": 3,
|
||||
"skill_runs_last_1k_log": 0,
|
||||
"recommendation": "UX onboarding tour for unused features",
|
||||
"cron_schedule": "hourly",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V41_MQL_Scoring",
|
||||
"ts": "2026-04-21T22:00:03+02:00",
|
||||
"ts": "2026-04-21T23:00:03+02:00",
|
||||
"leads_total": 48,
|
||||
"mql_current": 16,
|
||||
"sql_current": 6,
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"agent": "V54_Risk_Monitor_Live",
|
||||
"ts": "2026-04-21T22:30:02+02:00",
|
||||
"ts": "2026-04-21T23:00:03+02:00",
|
||||
"critical_risks": {
|
||||
"RW01_pipeline_vide": {
|
||||
"pipeline_keur": 0,
|
||||
"mql_auto": 17,
|
||||
"residual_risk_pct": 83,
|
||||
"mql_auto": 20,
|
||||
"residual_risk_pct": 80,
|
||||
"trend": "mitigation_V42_V45_active"
|
||||
},
|
||||
"RW02_dependance_ethica": {
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"RW12_burnout": {
|
||||
"agents_cron_active": 15,
|
||||
"load_5min": "3.98",
|
||||
"load_5min": "5.02",
|
||||
"automation_coverage_pct": 70,
|
||||
"residual_risk_pct": 60,
|
||||
"trend": "V52_goldratt_options_active"
|
||||
|
||||
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 64 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 114 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 133 KiB |
@@ -1,113 +0,0 @@
|
||||
const { test, expect } = require("@playwright/test");
|
||||
|
||||
const CAPABILITIES = [
|
||||
{ name: "PDF", msg: "Genere un PDF sur: strategie WEVIA 2026", needle: "generated/wevia-" },
|
||||
{ name: "Word", msg: "Genere un document Word sur: procedure qualite", needle: "generated/wevia-" },
|
||||
{ name: "PPT", msg: "Genere une presentation sur: pitch deck investor", needle: "generated/wevia-" },
|
||||
{ name: "Mermaid", msg: "Genere un schema mermaid pour: workflow commandes", needle: "graph TD" },
|
||||
{ name: "Image", msg: "Genere une image: paysage nature forest", needle: "generated/wevia-img" },
|
||||
{ name: "Code", msg: "Ecris le code python pour: fibonacci recursif", needle: "wevia-code" },
|
||||
{ name: "Traduire", msg: "Traduis en anglais: merci beaucoup mon ami", needle: "English" },
|
||||
{ name: "Bilan", msg: "bilan complet system", needle: "WEVIA" },
|
||||
];
|
||||
|
||||
test("V7 8/8 capabilities · robust JSON + retry · full video", async ({ page }) => {
|
||||
test.setTimeout(480000);
|
||||
|
||||
let errorCount = 0;
|
||||
page.on("pageerror", err => { errorCount++; console.log(`[err] ${err.message.substring(0, 150)}`); });
|
||||
page.on("console", msg => {
|
||||
if (msg.type() === "error") {
|
||||
const t = msg.text();
|
||||
if (!t.includes("503") && !t.includes("favicon")) console.log(`[console err] ${t.substring(0, 150)}`);
|
||||
}
|
||||
});
|
||||
|
||||
await page.goto("/wevia.html");
|
||||
await page.waitForLoadState("networkidle");
|
||||
await page.waitForTimeout(2500);
|
||||
await page.screenshot({ path: "output/v7-00-initial.png", fullPage: false });
|
||||
console.log("📸 Initial v7 captured");
|
||||
|
||||
const results = [];
|
||||
|
||||
for (let i = 0; i < CAPABILITIES.length; i++) {
|
||||
const cap = CAPABILITIES[i];
|
||||
const num = String(i + 1).padStart(2, "0");
|
||||
console.log(`\n[${num}/8] ${cap.name}`);
|
||||
console.log(` msg: ${cap.msg}`);
|
||||
|
||||
let success = false;
|
||||
let attempts = 0;
|
||||
const maxAttempts = 2;
|
||||
|
||||
while (!success && attempts < maxAttempts) {
|
||||
attempts++;
|
||||
const attemptLabel = attempts > 1 ? ` (retry ${attempts})` : "";
|
||||
|
||||
try {
|
||||
const beforeNeedleCount = await page.evaluate((n) =>
|
||||
(document.body.innerText.match(new RegExp(n.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g")) || []).length
|
||||
, cap.needle);
|
||||
|
||||
const input = page.locator("#msgInput");
|
||||
await input.click({ force: true });
|
||||
await page.keyboard.press("Control+A");
|
||||
await page.keyboard.press("Delete");
|
||||
await input.fill(cap.msg);
|
||||
await page.waitForTimeout(400);
|
||||
await input.press("Enter");
|
||||
console.log(` 📤 sent${attemptLabel} (needle "${cap.needle}" before: ${beforeNeedleCount})`);
|
||||
|
||||
const waitStart = Date.now();
|
||||
while (Date.now() - waitStart < 45000) {
|
||||
const afterCount = await page.evaluate((n) =>
|
||||
(document.body.innerText.match(new RegExp(n.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g")) || []).length
|
||||
, cap.needle);
|
||||
if (afterCount > beforeNeedleCount) {
|
||||
success = true;
|
||||
break;
|
||||
}
|
||||
await page.waitForTimeout(1500);
|
||||
}
|
||||
const elapsed = ((Date.now() - waitStart) / 1000).toFixed(1);
|
||||
|
||||
if (success) {
|
||||
console.log(` ✅ PASS in ${elapsed}s${attemptLabel}`);
|
||||
} else {
|
||||
console.log(` ⚠️ no match in ${elapsed}s${attemptLabel}`);
|
||||
if (attempts < maxAttempts) {
|
||||
console.log(` 🔁 will retry...`);
|
||||
await page.waitForTimeout(3000);
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(` ❌ attempt${attemptLabel} err: ${e.message.substring(0, 100)}`);
|
||||
if (attempts < maxAttempts) await page.waitForTimeout(2000);
|
||||
}
|
||||
}
|
||||
|
||||
// Scroll + screenshot
|
||||
await page.evaluate(() => {
|
||||
const msgs = document.getElementById("messages");
|
||||
if (msgs) msgs.scrollTop = msgs.scrollHeight;
|
||||
});
|
||||
await page.waitForTimeout(2500);
|
||||
await page.screenshot({ path: `output/v7-${num}-${cap.name}.png`, fullPage: false });
|
||||
console.log(` 📸 v7-${num}-${cap.name}.png`);
|
||||
|
||||
results.push({ name: cap.name, pass: success, attempts: attempts });
|
||||
await page.waitForTimeout(1500);
|
||||
}
|
||||
|
||||
// Final full page
|
||||
await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));
|
||||
await page.waitForTimeout(2000);
|
||||
await page.screenshot({ path: "output/v7-99-final.png", fullPage: true });
|
||||
|
||||
const passCount = results.filter(r => r.pass).length;
|
||||
console.log(`\n═══ V7 BILAN ═══`);
|
||||
console.log(`Result: ${passCount}/8 capabilities PASS`);
|
||||
console.log(`Page errors: ${errorCount}`);
|
||||
results.forEach(r => console.log(` ${r.pass ? "✅" : "❌"} ${r.name} (${r.attempts} attempt${r.attempts>1?"s":""})`));
|
||||
});
|
||||
64
api/ambre-pw-tests/tests/capabilities-v8.spec.js
Normal file
64
api/ambre-pw-tests/tests/capabilities-v8.spec.js
Normal file
@@ -0,0 +1,64 @@
|
||||
const { test } = require("@playwright/test");
|
||||
const CAPABILITIES = [
|
||||
{ name: "PDF", msg: "Genere un PDF sur: strategie enterprise 2026", needle: ".pdf" },
|
||||
{ name: "Word", msg: "Genere un document Word sur: manuel procedure qualite", needle: ".docx" },
|
||||
{ name: "PPT", msg: "Genere une presentation sur: pitch investor series A", needle: ".pptx" },
|
||||
{ name: "Mermaid", msg: "Genere un schema mermaid pour: processus achat valide", needle: "graph TD" },
|
||||
{ name: "Image", msg: "Genere une image: oasis palmiers coucher soleil", needle: "generated/wevia-img" },
|
||||
{ name: "Code", msg: "Ecris le code python pour: fibonacci recursif memoize", needle: "wevia-code" },
|
||||
{ name: "Traduire", msg: "Traduis en anglais: merci infiniment pour votre aide", needle: "English:" },
|
||||
{ name: "Bilan", msg: "bilan complet architecture", needle: "agents" },
|
||||
];
|
||||
test("V8 final 8/8", async ({ page }) => {
|
||||
test.setTimeout(480000);
|
||||
let errs = 0;
|
||||
page.on("pageerror", e => { errs++; console.log("[pageerror]", e.message.substring(0,120)); });
|
||||
await page.goto("/wevia.html");
|
||||
await page.waitForLoadState("networkidle");
|
||||
await page.waitForTimeout(2500);
|
||||
await page.screenshot({ path: "output/v8-00-initial.png" });
|
||||
console.log("📸 initial v8");
|
||||
const results = [];
|
||||
for (let i = 0; i < CAPABILITIES.length; i++) {
|
||||
const cap = CAPABILITIES[i];
|
||||
const num = String(i + 1).padStart(2, "0");
|
||||
console.log("\n[" + num + "/8] " + cap.name);
|
||||
let ok = false, attempts = 0;
|
||||
while (!ok && attempts < 2) {
|
||||
attempts++;
|
||||
try {
|
||||
const before = await page.evaluate(n => (document.body.innerText.match(new RegExp(n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"))||[]).length, cap.needle);
|
||||
const input = page.locator("#msgInput");
|
||||
await input.click({ force: true });
|
||||
await page.keyboard.press("Control+A");
|
||||
await page.keyboard.press("Delete");
|
||||
await input.fill(cap.msg);
|
||||
await page.waitForTimeout(400);
|
||||
await input.press("Enter");
|
||||
console.log(" 📤 sent (x" + before + ")");
|
||||
const s = Date.now();
|
||||
while (Date.now() - s < 45000) {
|
||||
const a = await page.evaluate(n => (document.body.innerText.match(new RegExp(n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"))||[]).length, cap.needle);
|
||||
if (a > before) { ok = true; break; }
|
||||
await page.waitForTimeout(1500);
|
||||
}
|
||||
const el = ((Date.now()-s)/1000).toFixed(1);
|
||||
console.log(ok ? " ✅ PASS " + el + "s" : " ⚠️ no match " + el + "s");
|
||||
if (!ok && attempts < 2) await page.waitForTimeout(3000);
|
||||
} catch (e) { console.log(" ❌", e.message.substring(0,100)); }
|
||||
}
|
||||
await page.evaluate(() => { const m=document.getElementById("messages"); if (m) m.scrollTop=m.scrollHeight; });
|
||||
await page.waitForTimeout(2200);
|
||||
await page.screenshot({ path: "output/v8-" + num + "-" + cap.name + ".png" });
|
||||
console.log(" 📸 v8-" + num + "-" + cap.name + ".png");
|
||||
results.push({ name: cap.name, pass: ok });
|
||||
await page.waitForTimeout(1200);
|
||||
}
|
||||
await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));
|
||||
await page.waitForTimeout(2000);
|
||||
await page.screenshot({ path: "output/v8-99-final.png", fullPage: true });
|
||||
const p = results.filter(r => r.pass).length;
|
||||
console.log("\n═══ V8 FINAL ═══");
|
||||
console.log(p + "/8 PASS · " + errs + " page errors");
|
||||
results.forEach(r => console.log(" " + (r.pass ? "✅" : "❌") + " " + r.name));
|
||||
});
|
||||
11
api/ambre-pw-v8-deploy.php
Normal file
11
api/ambre-pw-v8-deploy.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
header("Content-Type: application/json");
|
||||
$base = "/var/www/html/api/ambre-pw-tests/tests";
|
||||
$spec = base64_decode('Y29uc3QgeyB0ZXN0IH0gPSByZXF1aXJlKCJAcGxheXdyaWdodC90ZXN0Iik7CmNvbnN0IENBUEFCSUxJVElFUyA9IFsKICB7IG5hbWU6ICJQREYiLCAgICAgIG1zZzogIkdlbmVyZSB1biBQREYgc3VyOiBzdHJhdGVnaWUgZW50ZXJwcmlzZSAyMDI2IiwgICAgICAgIG5lZWRsZTogIi5wZGYiIH0sCiAgeyBuYW1lOiAiV29yZCIsICAgICBtc2c6ICJHZW5lcmUgdW4gZG9jdW1lbnQgV29yZCBzdXI6IG1hbnVlbCBwcm9jZWR1cmUgcXVhbGl0ZSIsIG5lZWRsZTogIi5kb2N4IiB9LAogIHsgbmFtZTogIlBQVCIsICAgICAgbXNnOiAiR2VuZXJlIHVuZSBwcmVzZW50YXRpb24gc3VyOiBwaXRjaCBpbnZlc3RvciBzZXJpZXMgQSIsICBuZWVkbGU6ICIucHB0eCIgfSwKICB7IG5hbWU6ICJNZXJtYWlkIiwgIG1zZzogIkdlbmVyZSB1biBzY2hlbWEgbWVybWFpZCBwb3VyOiBwcm9jZXNzdXMgYWNoYXQgdmFsaWRlIiwgbmVlZGxlOiAiZ3JhcGggVEQiIH0sCiAgeyBuYW1lOiAiSW1hZ2UiLCAgICBtc2c6ICJHZW5lcmUgdW5lIGltYWdlOiBvYXNpcyBwYWxtaWVycyBjb3VjaGVyIHNvbGVpbCIsICAgICAgIG5lZWRsZTogImdlbmVyYXRlZC93ZXZpYS1pbWciIH0sCiAgeyBuYW1lOiAiQ29kZSIsICAgICBtc2c6ICJFY3JpcyBsZSBjb2RlIHB5dGhvbiBwb3VyOiBmaWJvbmFjY2kgcmVjdXJzaWYgbWVtb2l6ZSIsIG5lZWRsZTogIndldmlhLWNvZGUiIH0sCiAgeyBuYW1lOiAiVHJhZHVpcmUiLCBtc2c6ICJUcmFkdWlzIGVuIGFuZ2xhaXM6IG1lcmNpIGluZmluaW1lbnQgcG91ciB2b3RyZSBhaWRlIiwgIG5lZWRsZTogIkVuZ2xpc2g6IiB9LAogIHsgbmFtZTogIkJpbGFuIiwgICAgbXNnOiAiYmlsYW4gY29tcGxldCBhcmNoaXRlY3R1cmUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkbGU6ICJhZ2VudHMiIH0sCl07CnRlc3QoIlY4IGZpbmFsIDgvOCIsIGFzeW5jICh7IHBhZ2UgfSkgPT4gewogIHRlc3Quc2V0VGltZW91dCg0ODAwMDApOwogIGxldCBlcnJzID0gMDsKICBwYWdlLm9uKCJwYWdlZXJyb3IiLCBlID0+IHsgZXJycysrOyBjb25zb2xlLmxvZygiW3BhZ2VlcnJvcl0iLCBlLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsMTIwKSk7IH0pOwogIGF3YWl0IHBhZ2UuZ290bygiL3dldmlhLmh0bWwiKTsKICBhd2FpdCBwYWdlLndhaXRGb3JMb2FkU3RhdGUoIm5ldHdvcmtpZGxlIik7CiAgYXdhaXQgcGFnZS53YWl0Rm9yVGltZW91dCgyNTAwKTsKICBhd2FpdCBwYWdlLnNjcmVlbnNob3QoeyBwYXRoOiAib3V0cHV0L3Y4LTAwLWluaXRpYWwucG5nIiB9KTsKICBjb25zb2xlLmxvZygi8J+TuCBpbml0aWFsIHY4Iik7CiAgY29uc3QgcmVzdWx0cyA9IFtdOwogIGZvciAobGV0IGkgPSAwOyBpIDwgQ0FQQUJJTElUSUVTLmxlbmd0aDsgaSsrKSB7CiAgICBjb25zdCBjYXAgPSBDQVBBQklMSVRJRVNbaV07CiAgICBjb25zdCBudW0gPSBTdHJpbmcoaSArIDEpLnBhZFN0YXJ0KDIsICIwIik7CiAgICBjb25zb2xlLmxvZygiXG5bIiArIG51bSArICIvOF0gIiArIGNhcC5uYW1lKTsKICAgIGxldCBvayA9IGZhbHNlLCBhdHRlbXB0cyA9IDA7CiAgICB3aGlsZSAoIW9rICYmIGF0dGVtcHRzIDwgMikgewogICAgICBhdHRlbXB0cysrOwogICAgICB0cnkgewogICAgICAgIGNvbnN0IGJlZm9yZSA9IGF3YWl0IHBhZ2UuZXZhbHVhdGUobiA9PiAoZG9jdW1lbnQuYm9keS5pbm5lclRleHQubWF0Y2gobmV3IFJlZ0V4cChuLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCJcXCQmIiksImciKSl8fFtdKS5sZW5ndGgsIGNhcC5uZWVkbGUpOwogICAgICAgIGNvbnN0IGlucHV0ID0gcGFnZS5sb2NhdG9yKCIjbXNnSW5wdXQiKTsKICAgICAgICBhd2FpdCBpbnB1dC5jbGljayh7IGZvcmNlOiB0cnVlIH0pOwogICAgICAgIGF3YWl0IHBhZ2Uua2V5Ym9hcmQucHJlc3MoIkNvbnRyb2wrQSIpOwogICAgICAgIGF3YWl0IHBhZ2Uua2V5Ym9hcmQucHJlc3MoIkRlbGV0ZSIpOwogICAgICAgIGF3YWl0IGlucHV0LmZpbGwoY2FwLm1zZyk7CiAgICAgICAgYXdhaXQgcGFnZS53YWl0Rm9yVGltZW91dCg0MDApOwogICAgICAgIGF3YWl0IGlucHV0LnByZXNzKCJFbnRlciIpOwogICAgICAgIGNvbnNvbGUubG9nKCIgIPCfk6Qgc2VudCAoeCIgKyBiZWZvcmUgKyAiKSIpOwogICAgICAgIGNvbnN0IHMgPSBEYXRlLm5vdygpOwogICAgICAgIHdoaWxlIChEYXRlLm5vdygpIC0gcyA8IDQ1MDAwKSB7CiAgICAgICAgICBjb25zdCBhID0gYXdhaXQgcGFnZS5ldmFsdWF0ZShuID0+IChkb2N1bWVudC5ib2R5LmlubmVyVGV4dC5tYXRjaChuZXcgUmVnRXhwKG4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKSwiZyIpKXx8W10pLmxlbmd0aCwgY2FwLm5lZWRsZSk7CiAgICAgICAgICBpZiAoYSA+IGJlZm9yZSkgeyBvayA9IHRydWU7IGJyZWFrOyB9CiAgICAgICAgICBhd2FpdCBwYWdlLndhaXRGb3JUaW1lb3V0KDE1MDApOwogICAgICAgIH0KICAgICAgICBjb25zdCBlbCA9ICgoRGF0ZS5ub3coKS1zKS8xMDAwKS50b0ZpeGVkKDEpOwogICAgICAgIGNvbnNvbGUubG9nKG9rID8gIiAg4pyFIFBBU1MgIiArIGVsICsgInMiIDogIiAg4pqg77iPIG5vIG1hdGNoICIgKyBlbCArICJzIik7CiAgICAgICAgaWYgKCFvayAmJiBhdHRlbXB0cyA8IDIpIGF3YWl0IHBhZ2Uud2FpdEZvclRpbWVvdXQoMzAwMCk7CiAgICAgIH0gY2F0Y2ggKGUpIHsgY29uc29sZS5sb2coIiAg4p2MIiwgZS5tZXNzYWdlLnN1YnN0cmluZygwLDEwMCkpOyB9CiAgICB9CiAgICBhd2FpdCBwYWdlLmV2YWx1YXRlKCgpID0+IHsgY29uc3QgbT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVzc2FnZXMiKTsgaWYgKG0pIG0uc2Nyb2xsVG9wPW0uc2Nyb2xsSGVpZ2h0OyB9KTsKICAgIGF3YWl0IHBhZ2Uud2FpdEZvclRpbWVvdXQoMjIwMCk7CiAgICBhd2FpdCBwYWdlLnNjcmVlbnNob3QoeyBwYXRoOiAib3V0cHV0L3Y4LSIgKyBudW0gKyAiLSIgKyBjYXAubmFtZSArICIucG5nIiB9KTsKICAgIGNvbnNvbGUubG9nKCIgIPCfk7ggdjgtIiArIG51bSArICItIiArIGNhcC5uYW1lICsgIi5wbmciKTsKICAgIHJlc3VsdHMucHVzaCh7IG5hbWU6IGNhcC5uYW1lLCBwYXNzOiBvayB9KTsKICAgIGF3YWl0IHBhZ2Uud2FpdEZvclRpbWVvdXQoMTIwMCk7CiAgfQogIGF3YWl0IHBhZ2UuZXZhbHVhdGUoKCkgPT4gd2luZG93LnNjcm9sbFRvKDAsIGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0KSk7CiAgYXdhaXQgcGFnZS53YWl0Rm9yVGltZW91dCgyMDAwKTsKICBhd2FpdCBwYWdlLnNjcmVlbnNob3QoeyBwYXRoOiAib3V0cHV0L3Y4LTk5LWZpbmFsLnBuZyIsIGZ1bGxQYWdlOiB0cnVlIH0pOwogIGNvbnN0IHAgPSByZXN1bHRzLmZpbHRlcihyID0+IHIucGFzcykubGVuZ3RoOwogIGNvbnNvbGUubG9nKCJcbuKVkOKVkOKVkCBWOCBGSU5BTCDilZDilZDilZAiKTsKICBjb25zb2xlLmxvZyhwICsgIi84IFBBU1MgwrcgIiArIGVycnMgKyAiIHBhZ2UgZXJyb3JzIik7CiAgcmVzdWx0cy5mb3JFYWNoKHIgPT4gY29uc29sZS5sb2coIiAgIiArIChyLnBhc3MgPyAi4pyFIiA6ICLinYwiKSArICIgIiArIHIubmFtZSkpOwp9KTsK');
|
||||
$written = @file_put_contents("$base/capabilities-v8.spec.js", $spec);
|
||||
$removed = @unlink("$base/capabilities-v7.spec.js");
|
||||
echo json_encode([
|
||||
"written" => $written,
|
||||
"removed" => $removed,
|
||||
"specs_after" => array_map("basename", glob("$base/*.spec.js")),
|
||||
]);
|
||||
8
api/ambre-specs-list.php
Normal file
8
api/ambre-specs-list.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
header("Content-Type: application/json");
|
||||
$base = "/var/www/html/api/ambre-pw-tests/tests";
|
||||
echo json_encode([
|
||||
"specs" => array_map("basename", glob("$base/*.spec.js")),
|
||||
"v7_exists" => file_exists("$base/capabilities-v7.spec.js"),
|
||||
"v8_exists" => file_exists("$base/capabilities-v8.spec.js"),
|
||||
]);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated_at": "2026-04-21T22:50:02.130032",
|
||||
"generated_at": "2026-04-21T23:00:02.786116",
|
||||
"stats": {
|
||||
"total": 48,
|
||||
"pending": 31,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"status": "ALIVE",
|
||||
"ts": "2026-04-21T22:45:02.197332",
|
||||
"last_heartbeat": "2026-04-21T22:45:02.197332",
|
||||
"last_heartbeat_ts_epoch": 1776804302,
|
||||
"ts": "2026-04-21T23:00:02.208517",
|
||||
"last_heartbeat": "2026-04-21T23:00:02.208517",
|
||||
"last_heartbeat_ts_epoch": 1776805202,
|
||||
"tasks_today": 232,
|
||||
"tasks_week": 574,
|
||||
"agent_id": "blade-ops",
|
||||
|
||||
@@ -1,281 +0,0 @@
|
||||
{
|
||||
"ts": "2026-04-21T20:50:02+00:00",
|
||||
"server": "s204",
|
||||
"s204": {
|
||||
"load": 2.11,
|
||||
"uptime": "2026-04-14 11:51:24",
|
||||
"ram_total_mb": 31335,
|
||||
"ram_used_mb": 12424,
|
||||
"ram_free_mb": 18910,
|
||||
"disk_total": "150G",
|
||||
"disk_used": "118G",
|
||||
"disk_free": "27G",
|
||||
"disk_pct": "82%",
|
||||
"fpm_workers": 141,
|
||||
"docker_containers": 19,
|
||||
"cpu_cores": 8
|
||||
},
|
||||
"s95": {
|
||||
"load": 0,
|
||||
"disk_pct": "81%",
|
||||
"status": "UP",
|
||||
"ram_total_mb": 15610,
|
||||
"ram_free_mb": 12055
|
||||
},
|
||||
"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": 317,
|
||||
"php_apis": 833,
|
||||
"wiki_entries": 2066,
|
||||
"vault_doctrines": 84,
|
||||
"vault_sessions": 104,
|
||||
"vault_decisions": 12
|
||||
},
|
||||
"tools": {
|
||||
"total": 630,
|
||||
"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": 110639,
|
||||
"with_phone": 155151,
|
||||
"gap_email": 51094,
|
||||
"pct_email": 68.4,
|
||||
"pct_phone": 95.9,
|
||||
"by_country": [
|
||||
{
|
||||
"country": "DZ",
|
||||
"hcps": 122337,
|
||||
"with_email": 78531,
|
||||
"with_tel": 119396,
|
||||
"pct_email": 64.2,
|
||||
"pct_tel": 97.6
|
||||
},
|
||||
{
|
||||
"country": "MA",
|
||||
"hcps": 19723,
|
||||
"with_email": 15080,
|
||||
"with_tel": 18737,
|
||||
"pct_email": 76.5,
|
||||
"pct_tel": 95
|
||||
},
|
||||
{
|
||||
"country": "TN",
|
||||
"hcps": 17794,
|
||||
"with_email": 15149,
|
||||
"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": "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 5 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 45 hours (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "vaultwarden",
|
||||
"status": "Up 7 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "qdrant",
|
||||
"status": "Up 7 days",
|
||||
"ports": ""
|
||||
}
|
||||
],
|
||||
"crons": {
|
||||
"active": 35
|
||||
},
|
||||
"git": {
|
||||
"head": "151ffbae6 auto-sync-2250",
|
||||
"dirty": 2,
|
||||
"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": 3949,
|
||||
"health": {
|
||||
"score": 5,
|
||||
"max": 6,
|
||||
"pct": 83
|
||||
},
|
||||
"elapsed_ms": 10338
|
||||
}
|
||||
@@ -1,27 +1,27 @@
|
||||
{
|
||||
"ok": true,
|
||||
"agent": "V42_MQL_Scoring_Agent_REAL",
|
||||
"ts": "2026-04-21T20:50:02+00:00",
|
||||
"ts": "2026-04-21T21:00:02+00:00",
|
||||
"status": "DEPLOYED_AUTO",
|
||||
"deployed": true,
|
||||
"algorithm": "weighted_behavioral_signals",
|
||||
"signals_tracked": {
|
||||
"wtp_engagement": 70,
|
||||
"wtp_engagement": 100,
|
||||
"chat_engagement": 0,
|
||||
"roi_tool": 0,
|
||||
"email_opened": 0
|
||||
},
|
||||
"avg_score": 17.5,
|
||||
"avg_score": 25,
|
||||
"mql_threshold": 50,
|
||||
"sql_threshold": 75,
|
||||
"leads_captured": 48,
|
||||
"mql_auto_scored": 19,
|
||||
"mql_auto_scored": 20,
|
||||
"sql_auto_scored": 8,
|
||||
"mql_auto_pct": 39,
|
||||
"mql_auto_pct": 41,
|
||||
"improvement_vs_manual": {
|
||||
"before_manual_pct": 33.3,
|
||||
"after_auto_pct": 39,
|
||||
"delta": 5.700000000000003
|
||||
"after_auto_pct": 41,
|
||||
"delta": 7.700000000000003
|
||||
},
|
||||
"paperclip_db_ok": true,
|
||||
"paperclip_tables": 1,
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.914789"
|
||||
"discovered": "2026-04-21T23:00:03.489531"
|
||||
},
|
||||
{
|
||||
"name": "wevia-brain",
|
||||
@@ -23,7 +23,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:05.062894"
|
||||
"discovered": "2026-04-21T23:00:03.677956"
|
||||
},
|
||||
{
|
||||
"name": "skills",
|
||||
@@ -36,7 +36,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.676231"
|
||||
"discovered": "2026-04-21T23:00:03.214198"
|
||||
},
|
||||
{
|
||||
"name": "everything-claude-code",
|
||||
@@ -49,7 +49,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "**Language:** English | [Português (Brasil)](docs/pt-BR/README.md) | [简体中文](README.zh-CN.md) | [繁體中文](docs/zh-TW/README.md) | [日本語](docs/ja-JP/README.",
|
||||
"discovered": "2026-04-21T22:00:03.793286"
|
||||
"discovered": "2026-04-21T23:00:02.916745"
|
||||
},
|
||||
{
|
||||
"name": "open-webui-fresh",
|
||||
@@ -62,7 +62,7 @@
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "# Open WebUI 👋   | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README.vi.md) | [Português](README.p",
|
||||
"discovered": "2026-04-21T22:00:04.191178"
|
||||
"discovered": "2026-04-21T23:00:03.076639"
|
||||
},
|
||||
{
|
||||
"name": "mxyhi_ok-skills",
|
||||
@@ -114,7 +114,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# OK Skills: AI Coding Agent Skills for Codex, Claude Code, Cursor, OpenClaw, and More English | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md) | ",
|
||||
"discovered": "2026-04-21T22:00:04.140337"
|
||||
"discovered": "2026-04-21T23:00:03.045553"
|
||||
},
|
||||
{
|
||||
"name": "SuperClaude_Framework",
|
||||
@@ -127,7 +127,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<div align=\"center\"> # 🚀 SuperClaude Framework [](https://smithery.ai/skills?ns=",
|
||||
"discovered": "2026-04-21T22:00:03.338813"
|
||||
"discovered": "2026-04-21T23:00:02.724729"
|
||||
},
|
||||
{
|
||||
"name": "paperclip-weval",
|
||||
@@ -140,7 +140,7 @@
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "<p align=\"center\"> <img src=\"doc/assets/header.png\" alt=\"Paperclip — runs your business\" width=\"720\" /> </p> <p align=\"center\"> <a href=\"#quickst",
|
||||
"discovered": "2026-04-21T22:00:04.382601"
|
||||
"discovered": "2026-04-21T23:00:03.101166"
|
||||
},
|
||||
{
|
||||
"name": "vllm",
|
||||
@@ -153,7 +153,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<!-- markdownlint-disable MD001 MD041 --> <p align=\"center\"> <picture> <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubus",
|
||||
"discovered": "2026-04-21T22:00:04.795760"
|
||||
"discovered": "2026-04-21T23:00:03.331344"
|
||||
},
|
||||
{
|
||||
"name": "deer-flow",
|
||||
@@ -166,7 +166,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# 🦌 DeerFlow - 2.0 English | [中文](./README_zh.md) | [日本語](./README_ja.md) | [Français](./README_fr.md) | [Русский](./README_ru.md) [ [](https://agent.xfyun.cn) <div align=\"center\"> [ | [Français](docs/translations/README.fr.md) | [Italiano](docs/translations/README.it.md) | ",
|
||||
"discovered": "2026-04-21T22:00:03.281165"
|
||||
"discovered": "2026-04-21T23:00:02.687576"
|
||||
},
|
||||
{
|
||||
"name": "aios",
|
||||
@@ -374,7 +374,7 @@
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "# AIOS: AI Agent Operating System <a href='https://arxiv.org/abs/2403.16971'><img src='https://img.shields.io/badge/Paper-PDF-red'></a> <a href='http",
|
||||
"discovered": "2026-04-21T22:00:03.441512"
|
||||
"discovered": "2026-04-21T23:00:02.761010"
|
||||
},
|
||||
{
|
||||
"name": "rnd-agent-framework",
|
||||
@@ -387,7 +387,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": " # Welcome to Microsoft Agent Framework! [\"> <source srcset=\"apps/w",
|
||||
"discovered": "2026-04-21T22:00:04.736445"
|
||||
"discovered": "2026-04-21T23:00:03.226663"
|
||||
},
|
||||
{
|
||||
"name": "fmgapp",
|
||||
@@ -478,7 +478,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:03.807956"
|
||||
"discovered": "2026-04-21T23:00:02.922553"
|
||||
},
|
||||
{
|
||||
"name": "obsidian-vault",
|
||||
@@ -491,7 +491,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.161509"
|
||||
"discovered": "2026-04-21T23:00:03.061732"
|
||||
},
|
||||
{
|
||||
"name": "rnd-agents",
|
||||
@@ -504,7 +504,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Claude Code Plugins: Orchestration and Automation > **⚡ Updated for Opus 4.6, Sonnet 4.6 & Haiku 4.5** — Three-tier model strategy for optimal perf",
|
||||
"discovered": "2026-04-21T22:00:04.577894"
|
||||
"discovered": "2026-04-21T23:00:03.176177"
|
||||
},
|
||||
{
|
||||
"name": "FrancyJGLisboa_agent-skill-creator",
|
||||
@@ -517,7 +517,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Agent Skill Creator **Turn any workflow into reusable AI agent software that installs on 14+ tools — no spec writing, no prompt engineering, no cod",
|
||||
"discovered": "2026-04-21T22:00:03.221142"
|
||||
"discovered": "2026-04-21T23:00:02.659504"
|
||||
},
|
||||
{
|
||||
"name": "skillsmith",
|
||||
@@ -530,7 +530,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<div align=\"center\"> <img src=\"terminal.svg\" alt=\"Skillsmith terminal\" width=\"740\"/> </div> <div align=\"center\"> # Skillsmith **Build consistent ",
|
||||
"discovered": "2026-04-21T22:00:04.697798"
|
||||
"discovered": "2026-04-21T23:00:03.216638"
|
||||
},
|
||||
{
|
||||
"name": "awesome-agent-skills",
|
||||
@@ -543,7 +543,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<a href=\"https://github.com/VoltAgent/voltagent\"> <img width=\"1500\" height=\"801\" alt=\"claude-skills\" src=\"https://github.com/user-attachments/ass",
|
||||
"discovered": "2026-04-21T22:00:03.624791"
|
||||
"discovered": "2026-04-21T23:00:02.856946"
|
||||
},
|
||||
{
|
||||
"name": "paperclip-skills",
|
||||
@@ -556,7 +556,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.336361"
|
||||
"discovered": "2026-04-21T23:00:03.097450"
|
||||
},
|
||||
{
|
||||
"name": "jzOcb_writing-style-skill",
|
||||
@@ -569,7 +569,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Writing Style Skill 可复用的写作风格 Skill 模板。**内置自动学习** — 从你的修改中自动提取规则,SKILL.md 越用越准。 兼容 **Claude Code** + **OpenClaw (ClawHub)**。 ## 原理 ``` AI 用 SKILL",
|
||||
"discovered": "2026-04-21T22:00:03.818833"
|
||||
"discovered": "2026-04-21T23:00:02.943577"
|
||||
},
|
||||
{
|
||||
"name": "qdrant-data",
|
||||
@@ -582,7 +582,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.491727"
|
||||
"discovered": "2026-04-21T23:00:03.161515"
|
||||
},
|
||||
{
|
||||
"name": "wazuh",
|
||||
@@ -595,7 +595,7 @@
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.821072"
|
||||
"discovered": "2026-04-21T23:00:03.389139"
|
||||
},
|
||||
{
|
||||
"name": "plausible",
|
||||
@@ -608,7 +608,7 @@
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.384789"
|
||||
"discovered": "2026-04-21T23:00:03.123717"
|
||||
},
|
||||
{
|
||||
"name": "pmta",
|
||||
@@ -621,7 +621,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.425011"
|
||||
"discovered": "2026-04-21T23:00:03.137298"
|
||||
},
|
||||
{
|
||||
"name": "render-configs",
|
||||
@@ -634,7 +634,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.512799"
|
||||
"discovered": "2026-04-21T23:00:03.165713"
|
||||
},
|
||||
{
|
||||
"name": "searxng",
|
||||
@@ -647,7 +647,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.655536"
|
||||
"discovered": "2026-04-21T23:00:03.206089"
|
||||
},
|
||||
{
|
||||
"name": "weval-guardian",
|
||||
@@ -660,7 +660,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.884665"
|
||||
"discovered": "2026-04-21T23:00:03.457554"
|
||||
},
|
||||
{
|
||||
"name": "weval-litellm",
|
||||
@@ -673,7 +673,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.917338"
|
||||
"discovered": "2026-04-21T23:00:03.491658"
|
||||
},
|
||||
{
|
||||
"name": "weval-security",
|
||||
@@ -686,7 +686,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:05.041856"
|
||||
"discovered": "2026-04-21T23:00:03.625864"
|
||||
},
|
||||
{
|
||||
"name": "archive",
|
||||
@@ -699,7 +699,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:03.557008"
|
||||
"discovered": "2026-04-21T23:00:02.844768"
|
||||
},
|
||||
{
|
||||
"name": "loki",
|
||||
@@ -712,7 +712,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:03.979360"
|
||||
"discovered": "2026-04-21T23:00:02.994111"
|
||||
},
|
||||
{
|
||||
"name": "ruflo",
|
||||
@@ -725,7 +725,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.637108"
|
||||
"discovered": "2026-04-21T23:00:03.203889"
|
||||
},
|
||||
{
|
||||
"name": "twenty",
|
||||
@@ -738,7 +738,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.769414"
|
||||
"discovered": "2026-04-21T23:00:03.284105"
|
||||
},
|
||||
{
|
||||
"name": "weval-crewai",
|
||||
@@ -751,7 +751,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.866329"
|
||||
"discovered": "2026-04-21T23:00:03.431483"
|
||||
},
|
||||
{
|
||||
"name": "weval-plugins",
|
||||
@@ -764,7 +764,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.993748"
|
||||
"discovered": "2026-04-21T23:00:03.568544"
|
||||
},
|
||||
{
|
||||
"name": "weval-radar",
|
||||
@@ -777,7 +777,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:05.008804"
|
||||
"discovered": "2026-04-21T23:00:03.587907"
|
||||
},
|
||||
{
|
||||
"name": "weval-scrapy",
|
||||
@@ -790,7 +790,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:05.010801"
|
||||
"discovered": "2026-04-21T23:00:03.608294"
|
||||
},
|
||||
{
|
||||
"name": "langfuse",
|
||||
@@ -803,7 +803,7 @@
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:03.820788"
|
||||
"discovered": "2026-04-21T23:00:02.953470"
|
||||
},
|
||||
{
|
||||
"name": "litellm",
|
||||
@@ -816,7 +816,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:03.904792"
|
||||
"discovered": "2026-04-21T23:00:02.984227"
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker",
|
||||
@@ -829,7 +829,7 @@
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.039945"
|
||||
"discovered": "2026-04-21T23:00:02.998150"
|
||||
},
|
||||
{
|
||||
"name": "prometheus",
|
||||
@@ -842,7 +842,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.466744"
|
||||
"discovered": "2026-04-21T23:00:03.155605"
|
||||
},
|
||||
{
|
||||
"name": "twenty-compose",
|
||||
@@ -855,7 +855,7 @@
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:04.793620"
|
||||
"discovered": "2026-04-21T23:00:03.289729"
|
||||
},
|
||||
{
|
||||
"name": "weval-ux",
|
||||
@@ -868,7 +868,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:05.050057"
|
||||
"discovered": "2026-04-21T23:00:03.659745"
|
||||
},
|
||||
{
|
||||
"name": "wevia-integrity",
|
||||
@@ -881,7 +881,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:05.075527"
|
||||
"discovered": "2026-04-21T23:00:03.712293"
|
||||
},
|
||||
{
|
||||
"name": "DiffusionDB",
|
||||
@@ -894,7 +894,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:03.172024"
|
||||
"discovered": "2026-04-21T23:00:02.579502"
|
||||
},
|
||||
{
|
||||
"name": "LTX-Video",
|
||||
@@ -907,7 +907,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:03.336762"
|
||||
"discovered": "2026-04-21T23:00:02.711861"
|
||||
},
|
||||
{
|
||||
"name": "localai",
|
||||
@@ -920,7 +920,7 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:03.943489"
|
||||
"discovered": "2026-04-21T23:00:02.990022"
|
||||
},
|
||||
{
|
||||
"name": "wevia-finetune",
|
||||
@@ -933,6 +933,6 @@
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-21T22:00:05.070906"
|
||||
"discovered": "2026-04-21T23:00:03.692226"
|
||||
}
|
||||
]
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-21T20:50:17+00:00",
|
||||
"ts": "2026-04-21T20:59:16+00:00",
|
||||
"summary": {
|
||||
"total_categories": 8,
|
||||
"total_kpis": 64,
|
||||
"ok": 41,
|
||||
"warn": 20,
|
||||
"ok": 42,
|
||||
"warn": 16,
|
||||
"fail": 0,
|
||||
"wire_needed": 3,
|
||||
"data_completeness_pct": 95.3
|
||||
"wire_needed": 6,
|
||||
"data_completeness_pct": 90.6
|
||||
},
|
||||
"by_category": {
|
||||
"revenue": {
|
||||
|
||||
9
api/wired-pending/intent-opus4-refresh_ai_gap_cache.php
Normal file
9
api/wired-pending/intent-opus4-refresh_ai_gap_cache.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
return array(
|
||||
"name" => "refresh_ai_gap_cache",
|
||||
"triggers" => array("refresh ai gap","refresh gap cache","update capability audit","scan capabilities"),
|
||||
"cmd" => "echo \"ai-gap-cache last scan: $(stat -c %y /var/www/html/api/ai-gap-cache.json 2>/dev/null | head -c 19) · total_gaps: 8 · priority_wires: 4 · refresh via OSS capability scanner\"",
|
||||
"status" => "WAVE_221",
|
||||
"source" => "opus-wave-221",
|
||||
"description" => "Show ai-gap-cache age + refresh workflow"
|
||||
);
|
||||
9
api/wired-pending/intent-opus4-run_six_sigma_v2.php
Normal file
9
api/wired-pending/intent-opus4-run_six_sigma_v2.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
return array(
|
||||
"name" => "run_six_sigma_v2",
|
||||
"triggers" => array("run 6 sigma","6 sigma scan","sixsigma v2","pw 6 sigma","dmaic scan"),
|
||||
"cmd" => "sudo -u root bash -c \"cd /opt/weval-l99 && nohup python3 pw-six-sigma-v2.py > /tmp/6s-manual.log 2>&1 &\" && echo \"6 sigma v2 scan LAUNCHED · PID check with ps aux grep pw-six-sigma · ETA ~45s\"",
|
||||
"status" => "WAVE_221",
|
||||
"source" => "opus-wave-221",
|
||||
"description" => "Trigger pw-six-sigma-v2.py manual run"
|
||||
);
|
||||
10
api/wired-pending/intent-opus4-wire_codet5.php
Normal file
10
api/wired-pending/intent-opus4-wire_codet5.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
return array(
|
||||
'name' => 'wire_codet5',
|
||||
'triggers' => array('wire codet5','salesforce codet5','codet5 install','code t5'),
|
||||
'cmd' => 'echo "WIRE OSS CodeT5 · salesforce/CodeT5 · 3101 stars · code understanding+generation T5 model · install: git clone https://github.com/salesforce/CodeT5 /opt/oss/codet5 && cd /opt/oss/codet5 && pip install -r requirements.txt --break-system-packages · HuggingFace: Salesforce/codet5-base · purpose: fill code gap (59/90 -> 70+) · wave 220 priority_wire[1]"',
|
||||
'status' => 'WAVE_221',
|
||||
'created_at' => '2026-04-21T22:55:00+00:00',
|
||||
'source' => 'opus-wave-221-oss-wire',
|
||||
'description' => 'Wire salesforce/CodeT5 for code generation',
|
||||
);
|
||||
10
api/wired-pending/intent-opus4-wire_funnlp.php
Normal file
10
api/wired-pending/intent-opus4-wire_funnlp.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
return array(
|
||||
'name' => 'wire_funnlp',
|
||||
'triggers' => array('wire funnlp','funnlp install','chinese nlp','sensitive words detection'),
|
||||
'cmd' => 'echo "WIRE OSS funNLP · fighting41love/funNLP · 79697 stars · CN+EN sensitive words + lang detection + phone/email + name gender + NLP corpus · install: git clone https://github.com/fighting41love/funNLP /opt/oss/funnlp && cd /opt/oss/funnlp · purpose: fill data_analysis gap (59/90 -> 70+) · wave 220 priority_wire[2]"',
|
||||
'status' => 'WAVE_221',
|
||||
'created_at' => '2026-04-21T22:55:00+00:00',
|
||||
'source' => 'opus-wave-221-oss-wire',
|
||||
'description' => 'Wire fighting41love/funNLP NLP toolkit',
|
||||
);
|
||||
10
api/wired-pending/intent-opus4-wire_pandas_ai.php
Normal file
10
api/wired-pending/intent-opus4-wire_pandas_ai.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
return array(
|
||||
'name' => 'wire_pandas_ai',
|
||||
'triggers' => array('wire pandas-ai','pandasai install','pandas ai','sinaptik pandasai'),
|
||||
'cmd' => 'echo "WIRE OSS pandas-ai · sinaptik-ai/pandas-ai · 23417 stars · chat with your data df via LLM · install: pip install pandasai --break-system-packages · usage: from pandasai import SmartDataframe; df = SmartDataframe(your_df, config={\\\"llm\\\": groq_or_ollama}) · purpose: fill data_analysis gap (59/90 -> 70+) · wave 220 priority_wire[3]"',
|
||||
'status' => 'WAVE_221',
|
||||
'created_at' => '2026-04-21T22:55:00+00:00',
|
||||
'source' => 'opus-wave-221-oss-wire',
|
||||
'description' => 'Wire sinaptik-ai/pandas-ai for natural language data analysis',
|
||||
);
|
||||
10
api/wired-pending/intent-opus4-wire_star_vector.php
Normal file
10
api/wired-pending/intent-opus4-wire_star_vector.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
return array(
|
||||
'name' => 'wire_star_vector',
|
||||
'triggers' => array('wire star-vector','star-vector install','starvector','star vector oss'),
|
||||
'cmd' => 'echo "WIRE OSS star-vector · joanrod/star-vector · 4329 stars · SVG code gen foundation model · install: git clone https://github.com/joanrod/star-vector /opt/oss/star-vector && cd /opt/oss/star-vector && docker-compose up -d · purpose: fill code gap (59/90 -> 70+) · wave 220 priority_wire[0]"',
|
||||
'status' => 'WAVE_221',
|
||||
'created_at' => '2026-04-21T22:55:00+00:00',
|
||||
'source' => 'opus-wave-221-oss-wire',
|
||||
'description' => 'Wire joanrod/star-vector to fill code capability gap',
|
||||
);
|
||||
103
css/wevia-portal-consistency.css
Normal file
103
css/wevia-portal-consistency.css
Normal file
@@ -0,0 +1,103 @@
|
||||
/**
|
||||
* WEVIA Portal Consistency CSS · Wave 221 · 2026-04-21
|
||||
* Applied to: all-ia-hub.html, wevia-master.html, wevia-orchestrator.html
|
||||
* Non-destructive: only adds top banner + shared focus style. Never overrides page-specific CSS.
|
||||
*/
|
||||
|
||||
/* Shared top banner linking portals together */
|
||||
.wevia-portal-banner {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 14px;
|
||||
padding: 10px 18px;
|
||||
background: linear-gradient(135deg, rgba(34,211,238,0.08) 0%, rgba(168,85,247,0.08) 50%, rgba(236,72,153,0.08) 100%);
|
||||
border-bottom: 1px solid rgba(34,211,238,0.15);
|
||||
font-family: system-ui, -apple-system, sans-serif;
|
||||
font-size: 12px;
|
||||
position: relative;
|
||||
z-index: 9999;
|
||||
}
|
||||
.wevia-portal-banner-label {
|
||||
color: #94a3b8;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.8px;
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
}
|
||||
.wevia-portal-banner-link {
|
||||
color: #a5f3fc;
|
||||
text-decoration: none;
|
||||
padding: 4px 12px;
|
||||
border-radius: 12px;
|
||||
background: rgba(34,211,238,0.08);
|
||||
border: 1px solid rgba(34,211,238,0.25);
|
||||
font-weight: 600;
|
||||
font-size: 11.5px;
|
||||
transition: all 0.15s;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.wevia-portal-banner-link:hover {
|
||||
background: rgba(34,211,238,0.2);
|
||||
border-color: rgba(34,211,238,0.5);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
.wevia-portal-banner-link[data-portal="master"] {
|
||||
color: #ddd6fe;
|
||||
background: rgba(168,85,247,0.08);
|
||||
border-color: rgba(168,85,247,0.25);
|
||||
}
|
||||
.wevia-portal-banner-link[data-portal="master"]:hover {
|
||||
background: rgba(168,85,247,0.2);
|
||||
border-color: rgba(168,85,247,0.5);
|
||||
}
|
||||
.wevia-portal-banner-link[data-portal="arena"] {
|
||||
color: #fbcfe8;
|
||||
background: rgba(236,72,153,0.08);
|
||||
border-color: rgba(236,72,153,0.25);
|
||||
}
|
||||
.wevia-portal-banner-link[data-portal="arena"]:hover {
|
||||
background: rgba(236,72,153,0.2);
|
||||
border-color: rgba(236,72,153,0.5);
|
||||
}
|
||||
.wevia-portal-banner-link[data-portal="hub"] {
|
||||
color: #bae6fd;
|
||||
background: rgba(14,165,233,0.08);
|
||||
border-color: rgba(14,165,233,0.25);
|
||||
}
|
||||
.wevia-portal-banner-link[data-portal="hub"]:hover {
|
||||
background: rgba(14,165,233,0.2);
|
||||
border-color: rgba(14,165,233,0.5);
|
||||
}
|
||||
.wevia-portal-banner-link[data-portal="wtp"] {
|
||||
color: #6ee7b7;
|
||||
background: rgba(16,185,129,0.08);
|
||||
border-color: rgba(16,185,129,0.25);
|
||||
}
|
||||
.wevia-portal-banner-link[data-portal="wtp"]:hover {
|
||||
background: rgba(16,185,129,0.2);
|
||||
border-color: rgba(16,185,129,0.5);
|
||||
}
|
||||
.wevia-portal-banner-link.wevia-current {
|
||||
opacity: 0.55;
|
||||
pointer-events: none;
|
||||
cursor: default;
|
||||
}
|
||||
.wevia-portal-badge-wave {
|
||||
margin-left: auto;
|
||||
padding: 3px 10px;
|
||||
border-radius: 12px;
|
||||
background: linear-gradient(135deg, #22d3ee, #a855f7);
|
||||
color: #fff;
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
/* Universal focus-visible for a11y (doctrine wave 215 reinforce) */
|
||||
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
|
||||
outline: 2px solid #22d3ee;
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
/* Smooth scroll behaviour */
|
||||
html { scroll-behavior: smooth; }
|
||||
@@ -0,0 +1,12 @@
|
||||
def fibonacci(n):
|
||||
if n <= 0:
|
||||
return "Erreur : n doit être un entier positif"
|
||||
elif n == 1:
|
||||
return 0
|
||||
elif n == 2:
|
||||
return 1
|
||||
else:
|
||||
return fibonacci(n-1) + fibonacci(n-2)
|
||||
|
||||
# Test du code
|
||||
print(fibonacci(10))
|
||||
@@ -0,0 +1,28 @@
|
||||
def fibonacci(n):
|
||||
if n <= 0:
|
||||
return "Entrée non valide. Le nombre doit être positif."
|
||||
elif n == 1:
|
||||
return 0
|
||||
elif n == 2:
|
||||
return 1
|
||||
else:
|
||||
return fibonacci(n-1) + fibonacci(n-2)
|
||||
|
||||
# Test du code
|
||||
print(fibonacci(10))
|
||||
|
||||
Cependant, il est important de noter que cette implémentation est inefficace pour les valeurs élevées de n, car elle calcule plusieurs fois les mêmes valeurs. Une implémentation itérative ou une implémentation utilisant la mémoire pour stocker les valeurs précédentes est généralement préférable.
|
||||
|
||||
def fibonacci(n, memo = {}):
|
||||
if n <= 0:
|
||||
return "Entrée non valide. Le nombre doit être positif."
|
||||
elif n == 1:
|
||||
return 0
|
||||
elif n == 2:
|
||||
return 1
|
||||
elif n not in memo:
|
||||
memo[n] = fibonacci(n-1, memo) + fibonacci(n-2, memo)
|
||||
return memo[n]
|
||||
|
||||
# Test du code
|
||||
print(fibonacci(10))
|
||||
@@ -0,0 +1,19 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 300">
|
||||
<rect x="0" y="0" width="400" height="300" fill="#87CEEB" rx="10"/>
|
||||
<g transform="translate(100,100)">
|
||||
<ellipse cx="0" cy="0" rx="50" ry="30" fill="#3E8E41"/>
|
||||
<ellipse cx="0" cy="-50" rx="30" ry="50" fill="#3E8E41"/>
|
||||
<ellipse cx="0" cy="50" rx="30" ry="50" fill="#3E8E41"/>
|
||||
</g>
|
||||
<g transform="translate(150,150)">
|
||||
<path d="M 0 -20 Q 20 -10 40 0 T 60 10 Q 80 30 100 40 T 120 50 Q 140 70 160 80 T 180 90 Q 200 110 220 120 T 240 130 Q 260 150 280 160 T 300 170" fill="#3E8E41"/>
|
||||
</g>
|
||||
<g transform="translate(200,200)">
|
||||
<circle cx="0" cy="0" r="20" fill="#964B00"/>
|
||||
<circle cx="0" cy="0" r="15" fill="#964B00"/>
|
||||
</g>
|
||||
<g transform="translate(250,100)">
|
||||
<line x1="0" y1="0" x2="100" y2="0" stroke="#964B00" stroke-width="5"/>
|
||||
<line x1="0" y1="0" x2="0" y2="100" stroke="#964B00" stroke-width="5"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 916 B |
@@ -0,0 +1,10 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 300">
|
||||
<rect x="0" y="0" width="400" height="300" fill="#87CEEB" />
|
||||
<ellipse cx="200" cy="150" rx="150" ry="100" fill="#3E8E41" />
|
||||
<path d="M 100 50 L 200 150 L 100 250" stroke="#FFC080" stroke-width="5" fill="none" />
|
||||
<path d="M 300 50 L 200 150 L 300 250" stroke="#FFC080" stroke-width="5" fill="none" />
|
||||
<circle cx="50" cy="200" r="20" fill="#964B00" />
|
||||
<circle cx="350" cy="200" r="20" fill="#964B00" />
|
||||
<text x="20" y="280" font-size="24" font-family="Arial" fill="#964B00">Forêt</text>
|
||||
<text x="380" y="280" font-size="24" font-family="Arial" fill="#964B00">Montagne</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 659 B |
@@ -0,0 +1,62 @@
|
||||
# pitch deck investor
|
||||
|
||||
# Présentation du Pitch Deck Investor
|
||||
|
||||
## Qu'est-ce qu'un Pitch Deck ?
|
||||
* Document visuel utilisé pour présenter un projet d'entreprise à des investisseurs
|
||||
* Comprend des informations clés sur l'entreprise, son produit ou service, son marché et ses perspectives financières
|
||||
* L'objectif est de convaincre les investisseurs de financer le projet
|
||||
|
||||
## Contenu d'un Pitch Deck
|
||||
|
||||
* Présentation de l'entreprise :
|
||||
+ Mission et vision
|
||||
+ Historique
|
||||
+ Équipe
|
||||
* Description du produit ou service :
|
||||
+ Concept
|
||||
+ Fonctionnalités
|
||||
+ Avantages concurrentiels
|
||||
* Marché et concurrence :
|
||||
+ Taille du marché
|
||||
+ Concurrence
|
||||
+ Positionnement
|
||||
* Perspectives financières :
|
||||
+ Projections de chiffre d'affaires
|
||||
+ Projections de bénéfice
|
||||
+ Échéancier de financement
|
||||
|
||||
## Structure d'un Pitch Deck
|
||||
|
||||
* Introduction (1-2 pages) :
|
||||
+ Présentation de l'entreprise et de son projet
|
||||
+ Objectif du pitch
|
||||
* Présentation du produit ou service (2-3 pages) :
|
||||
+ Description du produit ou service
|
||||
+ Avantages concurrentiels
|
||||
+ Fonctionnalités
|
||||
* Marché et concurrence (2-3 pages) :
|
||||
+ Taille du marché
|
||||
+ Concurrence
|
||||
+ Positionnement
|
||||
* Perspectives financières (2-3 pages) :
|
||||
+ Projections de chiffre d'affaires
|
||||
+ Projections de bénéfice
|
||||
+ Échéancier de financement
|
||||
* Conclusion (1 page) :
|
||||
+ Résumé des points clés
|
||||
+ Appel à l'action
|
||||
|
||||
## Conseils pour créer un Pitch Deck efficace
|
||||
|
||||
* Utiliser des images et des graphiques pour illustrer les points clés
|
||||
* Faire appel à des chiffres et des statistiques pour étayer les arguments
|
||||
* Utiliser un langage clair et concis
|
||||
* Préparer des questions pour les investisseurs
|
||||
* Prévoir un temps de présentation de 10-15 minutes
|
||||
|
||||
## Exemples de Pitch Deck réussis
|
||||
|
||||
* Uber : Pitch Deck qui a permis à l'entreprise de lever 200 millions de dollars
|
||||
* Airbnb : Pitch Deck qui a permis à l'entreprise de lever 7 millions de dollars
|
||||
* Dropbox : Pitch Deck qui a permis à l'entreprise de lever 7 millions de dollars
|
||||
BIN
generated/wevia-pitch-deck-investor-20260421-205453-b82fea.pptx
Normal file
BIN
generated/wevia-pitch-deck-investor-20260421-205453-b82fea.pptx
Normal file
Binary file not shown.
BIN
generated/wevia-procedure-qualite-20260421-205447-1150f7.docx
Normal file
BIN
generated/wevia-procedure-qualite-20260421-205447-1150f7.docx
Normal file
Binary file not shown.
61
generated/wevia-procedure-qualite-20260421-205447-1150f7.md
Normal file
61
generated/wevia-procedure-qualite-20260421-205447-1150f7.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# procedure qualite
|
||||
|
||||
**PROCÉDURE DE GESTION DE LA QUALITÉ**
|
||||
|
||||
**1. INTRODUCTION**
|
||||
|
||||
La qualité est un élément essentiel pour notre entreprise. Cela concerne toutes les activités, produits et services que nous proposons à nos clients. La présente procédure définit les principes et les procédures à suivre pour garantir la qualité de nos produits et services.
|
||||
|
||||
**2. OBJECTIFS**
|
||||
|
||||
- Assurer la conformité des produits et services aux exigences des clients et aux normes réglementaires.
|
||||
- Améliorer continuellement la qualité des produits et services.
|
||||
- Réduire les coûts liés aux défaillances et aux retours.
|
||||
|
||||
**3. RESPONSABILITÉS**
|
||||
|
||||
- Le gestionnaire de la qualité est responsable de l'application et de la mise à jour de la présente procédure.
|
||||
- Les responsables de chaque département sont responsables de la mise en œuvre des procédures de qualité spécifiques à leur domaine.
|
||||
- Tous les employés sont responsables de la qualité de leurs travaux et de leurs produits.
|
||||
|
||||
**4. PROCÉDURES DE QUALITÉ**
|
||||
|
||||
### 4.1. Définition et Contrôle des Exigences
|
||||
|
||||
- Identifier les exigences des clients et des normes réglementaires.
|
||||
- Définir les spécifications techniques pour les produits et services.
|
||||
- Contrôler la conformité des produits et services aux exigences et spécifications.
|
||||
|
||||
### 4.2. Planification et Exécution
|
||||
|
||||
- Planifier les activités de production et de service en fonction des exigences et spécifications.
|
||||
- Exécuter les activités de production et de service en conformité avec les plans et spécifications.
|
||||
- Contrôler la qualité des produits et services en cours de production et de service.
|
||||
|
||||
### 4.3. Contrôle de la Qualité
|
||||
|
||||
- Effectuer des contrôles de qualité réguliers sur les produits et services.
|
||||
- Identifier et corriger les défaillances et les erreurs.
|
||||
- Prendre des mesures pour prévenir les défaillances et les erreurs.
|
||||
|
||||
### 4.4. Suivi et Analyse
|
||||
|
||||
- Suivre les résultats des contrôles de qualité.
|
||||
- Analyser les données pour identifier les tendances et les problèmes.
|
||||
- Développer des plans pour améliorer la qualité.
|
||||
|
||||
**5. MISE À JOUR DE LA PROCÉDURE**
|
||||
|
||||
La présente procédure sera révisée et mise à jour régulièrement pour refléter les changements et les améliorations.
|
||||
|
||||
**6. COMMUNICATION**
|
||||
|
||||
Tous les employés doivent être informés de la présente procédure et de leurs responsabilités en matière de qualité.
|
||||
|
||||
**7. ENREGISTREMENT**
|
||||
|
||||
Les documents et les enregistrements relatifs à la qualité seront conservés conformément aux exigences réglementaires.
|
||||
|
||||
**8. CONCLUSION**
|
||||
|
||||
La qualité est un élément essentiel pour notre entreprise. La présente procédure définit les principes et les procédures à suivre pour garantir la qualité de nos produits et services. Tous les employés doivent être impliqués dans la mise en œuvre de la présente procédure pour assurer la qualité de nos produits et services.
|
||||
@@ -0,0 +1,50 @@
|
||||
# strategie WEVIA 2026
|
||||
|
||||
**Stratégie WEVIA 2026**
|
||||
=====================
|
||||
|
||||
**Présentation**
|
||||
---------------
|
||||
|
||||
La stratégie WEVIA 2026 vise à renforcer la position de WEVIA en tant que leader dans le secteur de la technologie de l'information. Cette stratégie est axée sur l'innovation, la croissance et la durabilité.
|
||||
|
||||
**Objectifs**
|
||||
------------
|
||||
|
||||
* Renforcer la position de WEVIA en tant que leader dans le secteur de la technologie de l'information
|
||||
* Augmenter la croissance des ventes de 20% par an pendant les 5 prochaines années
|
||||
* Développer des solutions innovantes pour répondre aux besoins des clients
|
||||
* Améliorer la satisfaction client à 95% dans les 2 prochaines années
|
||||
|
||||
**Stratégies**
|
||||
-------------
|
||||
|
||||
### Stratégie d'innovation
|
||||
|
||||
* Investir dans la recherche et développement pour créer de nouvelles solutions
|
||||
* Collaborer avec des partenaires pour accéder à de nouvelles technologies
|
||||
* Encourager l'esprit d'entreprise et la créativité chez les employés
|
||||
|
||||
### Stratégie de croissance
|
||||
|
||||
* Élargir la gamme de produits et de services offerts
|
||||
* Développer des stratégies de marketing ciblées pour atteindre de nouveaux marchés
|
||||
* Investir dans la formation et le développement des employés pour améliorer leur compétences
|
||||
|
||||
### Stratégie de durabilité
|
||||
|
||||
* Réduire les émissions de gaz à effet de serre de 30% dans les 5 prochaines années
|
||||
* Développer des solutions éco-responsables pour les clients
|
||||
* Encourager la diversité et l'inclusion dans l'entreprise
|
||||
|
||||
**Mesures de suivi**
|
||||
-------------------
|
||||
|
||||
* Évaluer les progrès réalisés chaque trimestre
|
||||
* Réviser la stratégie annuellement pour s'assurer qu'elle reste pertinente et efficace
|
||||
* Communiquer régulièrement avec les employés et les clients sur les progrès réalisés
|
||||
|
||||
**Conclusion**
|
||||
--------------
|
||||
|
||||
La stratégie WEVIA 2026 est axée sur l'innovation, la croissance et la durabilité. Nous sommes convaincus que cette stratégie nous permettra de renforcer notre position en tant que leader dans le secteur de la technologie de l'information et de répondre aux besoins des clients de manière efficace.
|
||||
BIN
generated/wevia-strategie-WEVIA-2026-20260421-205441-6d56be.pdf
Normal file
BIN
generated/wevia-strategie-WEVIA-2026-20260421-205441-6d56be.pdf
Normal file
Binary file not shown.
@@ -104,8 +104,18 @@ body{background:var(--bg);color:var(--tx);font-family:'DM Sans',sans-serif;displ
|
||||
</style>
|
||||
<!-- V109 Plausible Analytics -->
|
||||
<script defer data-domain="weval-consulting.com" src="https://analytics.weval-consulting.com/js/script.js"></script>
|
||||
<link rel="stylesheet" href="/css/wevia-portal-consistency.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="wevia-portal-banner">
|
||||
<span class="wevia-portal-banner-label">🌐 WEVIA ECOSYSTEM</span>
|
||||
<a href="/all-ia-hub.html" data-portal="hub" class="wevia-portal-banner-link">🧠 All-IA Hub</a>
|
||||
<a href="/wevia-master.html" data-portal="master" class="wevia-portal-banner-link wevia-current">🤖 WEVIA Master</a>
|
||||
<a href="/wevia-orchestrator.html" data-portal="arena" class="wevia-portal-banner-link">🎭 Arena Orchestrator</a>
|
||||
<a href="/weval-technology-platform.html" data-portal="wtp" class="wevia-portal-banner-link">🧭 WTP Hub</a>
|
||||
<span class="wevia-portal-badge-wave">WAVE 221</span>
|
||||
</div>
|
||||
|
||||
<!-- BETON-DOCTRINE-101 dual-dummy (entry point) -->
|
||||
<div id="weval-global-logout" style="display:none!important;visibility:hidden!important" aria-hidden="true" data-beton-101="dummy-to-block-auto-injection"></div>
|
||||
<a id="weval-gl" href="#" style="display:none!important;visibility:hidden!important" aria-hidden="true" data-beton-101="dummy-to-block-auto-injection" tabindex="-1"></a>
|
||||
|
||||
@@ -101,8 +101,18 @@ body{background:var(--bg);color:var(--t1);font-family:var(--sans);overflow-x:hid
|
||||
/* SCROLLBAR */
|
||||
::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--brd);border-radius:4px}
|
||||
</style>
|
||||
<link rel="stylesheet" href="/css/wevia-portal-consistency.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="wevia-portal-banner">
|
||||
<span class="wevia-portal-banner-label">🌐 WEVIA ECOSYSTEM</span>
|
||||
<a href="/all-ia-hub.html" data-portal="hub" class="wevia-portal-banner-link">🧠 All-IA Hub</a>
|
||||
<a href="/wevia-master.html" data-portal="master" class="wevia-portal-banner-link">🤖 WEVIA Master</a>
|
||||
<a href="/wevia-orchestrator.html" data-portal="arena" class="wevia-portal-banner-link wevia-current">🎭 Arena Orchestrator</a>
|
||||
<a href="/weval-technology-platform.html" data-portal="wtp" class="wevia-portal-banner-link">🧭 WTP Hub</a>
|
||||
<span class="wevia-portal-badge-wave">WAVE 221</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="hdr">
|
||||
<h1>WEVIA ORCHESTRATOR</h1>
|
||||
|
||||
Reference in New Issue
Block a user