auto-sync-1045
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled

This commit is contained in:
opus
2026-04-22 10:45:02 +02:00
parent c9dabf21a9
commit 3b34c3eb5d
16 changed files with 95 additions and 68 deletions

View File

@@ -1,6 +1,6 @@
{
"agent": "V45_Leads_Sync",
"ts": "2026-04-22T10:30:03+02:00",
"ts": "2026-04-22T10:40:02+02:00",
"paperclip_total": 48,
"active_customer": 4,
"warm_prospect": 5,

11
api/ambre-export-v50.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
header("Content-Type: application/json");
$src = "/var/www/html/api/ambre-pw-tests/output";
$dst = "/var/www/html/generated";
$out = ["copied"=>[]];
foreach (glob("$src/v50-*.png") as $s) {
$bn = "wevia-v50-shield-" . basename($s);
@copy($s, "$dst/$bn");
$out["copied"][] = "/generated/$bn";
}
echo json_encode($out, JSON_UNESCAPED_SLASHES);

View File

@@ -59,13 +59,13 @@
},
"suites": [
{
"title": "v49-leaks.spec.js",
"file": "v49-leaks.spec.js",
"title": "v50-shield.spec.js",
"file": "v50-shield.spec.js",
"column": 0,
"line": 0,
"specs": [
{
"title": "V49 · Scan public leaks on / and /wevia.html",
"title": "V50 · PROOF shield removes leaks on public pages",
"ok": true,
"tags": [],
"tests": [
@@ -80,30 +80,33 @@
"workerIndex": 0,
"parallelIndex": 0,
"status": "passed",
"duration": 12412,
"duration": 14583,
"errors": [],
"stdout": [
{
"text": "ROOT / leaks: [\n {\n \"id\": \"opus-udrill\",\n \"tag\": \"div\",\n \"text\": \"\",\n \"position\": \"fixed\",\n \"visible\": false\n },\n {\n \"id\": \"opus-udrill-in\",\n \"tag\": \"div\",\n \"text\": \"\",\n \"position\": \"static\",\n \"visible\": false\n },\n {\n \"id\": \"opus-dashboard-entry\",\n \"tag\": \"div\",\n \"text\": \"📊\\nDashboards\",\n \"position\": \"fixed\",\n \"visible\": false\n },\n {\n \"id\": \"opus-dashboard-link\",\n \"tag\": \"a\",\n \"text\": \"📊\\nDashboards\",\n \"position\": \"static\",\n \"visible\": true\n }\n]\n"
"text": "ROOT / state: {\n \"size\": 92741,\n \"has_claude_pattern\": false,\n \"has_wtp_dock_visible\": false,\n \"has_dashboards_fixed\": false,\n \"shield_loaded\": true,\n \"visible_fixed_internal\": 0\n}\n"
},
{
"text": "\nWEVIA public leaks: {\n \"elements\": [\n {\n \"id\": \"opus-udrill\",\n \"tag\": \"div\",\n \"text\": \"\",\n \"visible\": false\n },\n {\n \"id\": \"opus-udrill-in\",\n \"tag\": \"div\",\n \"text\": \"\",\n \"visible\": false\n },\n {\n \"id\": \"opus-pattern-style\",\n \"tag\": \"style\",\n \"text\": \"\\n#opus-pattern-badge{position:fixed;bottom:20px;right:20px;z-index:99990;\\n background:linear-gradient(135deg,#06b6d4,#8b5cf6);color:#fff;\\n padding:10px 16px;border-radius:20px;font:700 0.78rem -appl\",\n \"visible\": false\n },\n {\n \"id\": \"opus-pattern-badge\",\n \"tag\": \"div\",\n \"text\": \"🧠\\nClaude Pattern\\n×\",\n \"visible\": false\n },\n {\n \"id\": \"opus-pattern-modal\",\n \"tag\": \"div\",\n \"text\": \"\\n \\n ×\\n 🧠 Claude Pattern · 7 phases REAL (SSE live)\\n Backend: wevia · anti-hallucination · langue naturelle\\n \\n ▶ Lancer (SSE stream)\\n \\n \\n\",\n \"visible\": false\n },\n {\n \"id\": \"opus-pattern-box\",\n \"tag\": \"div\",\n \"text\": \"\\n ×\\n 🧠 Claude Pattern · 7 phases REAL (SSE live)\\n Backend: wevia · anti-hallucination · langue naturelle\\n \\n ▶ Lancer (SSE stream)\\n \\n \",\n \"visible\": false\n },\n {\n \"id\": \"opus-pattern-close\",\n \"tag\": \"button\",\n \"text\": \"×\",\n \"visible\": false\n },\n {\n \"id\": \"opus-pattern-bot\",\n \"tag\": \"b\",\n \"text\": \"wevia\",\n \"visible\": false\n },\n {\n \"id\": \"opus-pattern-input\",\n \"tag\": \"input\",\n \"text\": \"\",\n \"visible\": false\n },\n {\n \"id\": \"opus-pattern-run\",\n \"tag\": \"button\",\n \"text\": \"▶ Lancer (SSE stream)\",\n \"visible\": false\n },\n {\n \"id\": \"opus-pattern-output\",\n \"tag\": \"div\",\n \"text\": \"\",\n \"visible\": false\n }\n ],\n \"has_claude_pattern_visible\": true,\n \"has_admin_droid\": false\n}\n"
"text": "\nWEVIA /wevia.html state: {\n \"has_claude_pattern_text\": true,\n \"opus_pattern_badge_visible\": false,\n \"opus_pattern_style_present\": false,\n \"shield_loaded\": true\n}\n"
},
{
"text": "\nShield logs: [\n \u001b[32m'[ambre-confidential-shield] active on public page: /'\u001b[39m,\n \u001b[32m'[ambre-confidential-shield] active on public page: /wevia.html'\u001b[39m\n]\n"
}
],
"stderr": [],
"retry": 0,
"startTime": "2026-04-22T08:38:00.522Z",
"startTime": "2026-04-22T08:40:54.061Z",
"annotations": [],
"attachments": [
{
"name": "screenshot",
"contentType": "image/png",
"path": "/var/www/html/api/ambre-pw-tests/output/v49-leaks-V49-·-Scan-public-leaks-on-and-wevia-html-chromium/test-finished-1.png"
"path": "/var/www/html/api/ambre-pw-tests/output/v50-shield-V50-·-PROOF-shield-removes-leaks-on-public-pages-chromium/test-finished-1.png"
},
{
"name": "video",
"contentType": "video/webm",
"path": "/var/www/html/api/ambre-pw-tests/output/v49-leaks-V49-·-Scan-public-leaks-on-and-wevia-html-chromium/video.webm"
"path": "/var/www/html/api/ambre-pw-tests/output/v50-shield-V50-·-PROOF-shield-removes-leaks-on-public-pages-chromium/video.webm"
}
]
}
@@ -111,8 +114,8 @@
"status": "expected"
}
],
"id": "1d078d0a0c1e48dab484-6744feaa8020affef2db",
"file": "v49-leaks.spec.js",
"id": "c4437ee0b3e93e42f44a-f31147eb9ccc1a4424da",
"file": "v50-shield.spec.js",
"line": 3,
"column": 1
}
@@ -121,8 +124,8 @@
],
"errors": [],
"stats": {
"startTime": "2026-04-22T08:37:59.940Z",
"duration": 13140.461,
"startTime": "2026-04-22T08:40:53.293Z",
"duration": 15561.267,
"expected": 1,
"skipped": 0,
"unexpected": 0,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -1,45 +0,0 @@
const { test } = require("@playwright/test");
test("V49 · Scan public leaks on / and /wevia.html", async ({ page }) => {
test.setTimeout(60000);
// Scan /
await page.goto("/?cb=" + Date.now());
await page.waitForLoadState("networkidle");
await page.waitForTimeout(3000);
const rootLeaks = await page.evaluate(() => {
const ids = Array.from(document.querySelectorAll('[id*="opus"], [id*="pattern"], [id*="dock"], [id*="xlinks"], [id*="xnav"]'));
return ids.map(el => ({
id: el.id,
tag: el.tagName.toLowerCase(),
text: (el.innerText || "").substring(0, 200),
position: window.getComputedStyle(el).position,
visible: el.offsetParent !== null,
}));
});
console.log("ROOT / leaks:", JSON.stringify(rootLeaks, null, 2));
await page.screenshot({ path: "output/v49-01-root.png", fullPage: false });
// Scan /wevia.html
await page.goto("/wevia.html?cb=" + Date.now());
await page.waitForLoadState("networkidle");
await page.waitForTimeout(3000);
const weviaLeaks = await page.evaluate(() => {
const ids = Array.from(document.querySelectorAll('[id*="opus"], [id*="pattern"], [id*="dock"], [id*="xlinks"], [id*="xnav"], [id*="udock"]'));
const out = ids.map(el => ({
id: el.id,
tag: el.tagName.toLowerCase(),
text: (el.innerText || "").substring(0, 200),
visible: el.offsetParent !== null,
}));
// Also look for "Claude Pattern" text anywhere visible
const bodyText = document.body.innerText;
const has_claude_p = /Claude\s*Pattern/i.test(bodyText);
const has_admin_badge = /\bAdmin\b/i.test(bodyText) && /\bDroid\b/i.test(bodyText);
return { elements: out, has_claude_pattern_visible: has_claude_p, has_admin_droid: has_admin_badge };
});
console.log("\nWEVIA public leaks:", JSON.stringify(weviaLeaks, null, 2));
await page.screenshot({ path: "output/v49-02-wevia.png", fullPage: false });
});

View File

@@ -0,0 +1,51 @@
const { test } = require("@playwright/test");
test("V50 · PROOF shield removes leaks on public pages", async ({ page }) => {
test.setTimeout(60000);
const logs = [];
page.on("console", m => logs.push(m.text().substring(0, 150)));
// Test /
await page.goto("/?cb=" + Date.now());
await page.waitForLoadState("networkidle");
await page.waitForTimeout(3500);
const rootState = await page.evaluate(() => {
const bodyText = document.body.innerText;
return {
size: document.body.innerHTML.length,
has_claude_pattern: /Claude\s*Pattern/i.test(bodyText),
has_wtp_dock_visible: Array.from(document.querySelectorAll('[id*="dock"], [id*="xlinks"], [id*="xnav"]')).some(el => el.offsetParent !== null && /wtp|droid|admin/i.test(el.innerText)),
has_dashboards_fixed: Array.from(document.querySelectorAll('#opus-dashboard-link, [id*="dashboard-entry"]')).some(el => el.offsetParent !== null),
shield_loaded: !!document.getElementById('ambre-confidential-shield'),
visible_fixed_internal: Array.from(document.querySelectorAll('a[href*="weval-technology-platform"], a[href*="wevia-master"], a[href*="all-ia-hub"]'))
.filter(a => {
var s = window.getComputedStyle(a);
return s.position === 'fixed' && a.offsetParent !== null;
}).length,
};
});
console.log("ROOT / state:", JSON.stringify(rootState, null, 2));
await page.screenshot({ path: "output/v50-01-root.png", fullPage: false });
// Test /wevia.html
await page.goto("/wevia.html?cb=" + Date.now());
await page.waitForLoadState("networkidle");
await page.waitForTimeout(3500);
const weviaState = await page.evaluate(() => {
const bodyText = document.body.innerText;
return {
has_claude_pattern_text: /Claude\s*Pattern/i.test(bodyText),
opus_pattern_badge_visible: (function(){ var el = document.getElementById('opus-pattern-badge'); return el ? el.offsetParent !== null : false; })(),
opus_pattern_style_present: !!document.getElementById('opus-pattern-style'),
shield_loaded: !!document.getElementById('ambre-confidential-shield'),
};
});
console.log("\nWEVIA /wevia.html state:", JSON.stringify(weviaState, null, 2));
await page.screenshot({ path: "output/v50-02-wevia.png", fullPage: false });
// Shield console logs
const shieldLogs = logs.filter(l => l.includes('shield'));
console.log("\nShield logs:", shieldLogs);
});

View File

@@ -0,0 +1,7 @@
<?php
header("Content-Type: application/json");
$base = "/var/www/html/api/ambre-pw-tests/tests";
$spec = base64_decode("Y29uc3QgeyB0ZXN0IH0gPSByZXF1aXJlKCJAcGxheXdyaWdodC90ZXN0Iik7Cgp0ZXN0KCJWNTAgwrcgUFJPT0Ygc2hpZWxkIHJlbW92ZXMgbGVha3Mgb24gcHVibGljIHBhZ2VzIiwgYXN5bmMgKHsgcGFnZSB9KSA9PiB7CiAgdGVzdC5zZXRUaW1lb3V0KDYwMDAwKTsKICBjb25zdCBsb2dzID0gW107CiAgcGFnZS5vbigiY29uc29sZSIsIG0gPT4gbG9ncy5wdXNoKG0udGV4dCgpLnN1YnN0cmluZygwLCAxNTApKSk7CiAgCiAgLy8gVGVzdCAvCiAgYXdhaXQgcGFnZS5nb3RvKCIvP2NiPSIgKyBEYXRlLm5vdygpKTsKICBhd2FpdCBwYWdlLndhaXRGb3JMb2FkU3RhdGUoIm5ldHdvcmtpZGxlIik7CiAgYXdhaXQgcGFnZS53YWl0Rm9yVGltZW91dCgzNTAwKTsKICAKICBjb25zdCByb290U3RhdGUgPSBhd2FpdCBwYWdlLmV2YWx1YXRlKCgpID0+IHsKICAgIGNvbnN0IGJvZHlUZXh0ID0gZG9jdW1lbnQuYm9keS5pbm5lclRleHQ7CiAgICByZXR1cm4gewogICAgICBzaXplOiBkb2N1bWVudC5ib2R5LmlubmVySFRNTC5sZW5ndGgsCiAgICAgIGhhc19jbGF1ZGVfcGF0dGVybjogL0NsYXVkZVxzKlBhdHRlcm4vaS50ZXN0KGJvZHlUZXh0KSwKICAgICAgaGFzX3d0cF9kb2NrX3Zpc2libGU6IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2lkKj0iZG9jayJdLCBbaWQqPSJ4bGlua3MiXSwgW2lkKj0ieG5hdiJdJykpLnNvbWUoZWwgPT4gZWwub2Zmc2V0UGFyZW50ICE9PSBudWxsICYmIC93dHB8ZHJvaWR8YWRtaW4vaS50ZXN0KGVsLmlubmVyVGV4dCkpLAogICAgICBoYXNfZGFzaGJvYXJkc19maXhlZDogQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjb3B1cy1kYXNoYm9hcmQtbGluaywgW2lkKj0iZGFzaGJvYXJkLWVudHJ5Il0nKSkuc29tZShlbCA9PiBlbC5vZmZzZXRQYXJlbnQgIT09IG51bGwpLAogICAgICBzaGllbGRfbG9hZGVkOiAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbWJyZS1jb25maWRlbnRpYWwtc2hpZWxkJyksCiAgICAgIHZpc2libGVfZml4ZWRfaW50ZXJuYWw6IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYVtocmVmKj0id2V2YWwtdGVjaG5vbG9neS1wbGF0Zm9ybSJdLCBhW2hyZWYqPSJ3ZXZpYS1tYXN0ZXIiXSwgYVtocmVmKj0iYWxsLWlhLWh1YiJdJykpCiAgICAgICAgICAuZmlsdGVyKGEgPT4gewogICAgICAgICAgICB2YXIgcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGEpOwogICAgICAgICAgICByZXR1cm4gcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJyAmJiBhLm9mZnNldFBhcmVudCAhPT0gbnVsbDsKICAgICAgICAgIH0pLmxlbmd0aCwKICAgIH07CiAgfSk7CiAgY29uc29sZS5sb2coIlJPT1QgLyBzdGF0ZToiLCBKU09OLnN0cmluZ2lmeShyb290U3RhdGUsIG51bGwsIDIpKTsKICBhd2FpdCBwYWdlLnNjcmVlbnNob3QoeyBwYXRoOiAib3V0cHV0L3Y1MC0wMS1yb290LnBuZyIsIGZ1bGxQYWdlOiBmYWxzZSB9KTsKICAKICAvLyBUZXN0IC93ZXZpYS5odG1sCiAgYXdhaXQgcGFnZS5nb3RvKCIvd2V2aWEuaHRtbD9jYj0iICsgRGF0ZS5ub3coKSk7CiAgYXdhaXQgcGFnZS53YWl0Rm9yTG9hZFN0YXRlKCJuZXR3b3JraWRsZSIpOwogIGF3YWl0IHBhZ2Uud2FpdEZvclRpbWVvdXQoMzUwMCk7CiAgCiAgY29uc3Qgd2V2aWFTdGF0ZSA9IGF3YWl0IHBhZ2UuZXZhbHVhdGUoKCkgPT4gewogICAgY29uc3QgYm9keVRleHQgPSBkb2N1bWVudC5ib2R5LmlubmVyVGV4dDsKICAgIHJldHVybiB7CiAgICAgIGhhc19jbGF1ZGVfcGF0dGVybl90ZXh0OiAvQ2xhdWRlXHMqUGF0dGVybi9pLnRlc3QoYm9keVRleHQpLAogICAgICBvcHVzX3BhdHRlcm5fYmFkZ2VfdmlzaWJsZTogKGZ1bmN0aW9uKCl7IHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcHVzLXBhdHRlcm4tYmFkZ2UnKTsgcmV0dXJuIGVsID8gZWwub2Zmc2V0UGFyZW50ICE9PSBudWxsIDogZmFsc2U7IH0pKCksCiAgICAgIG9wdXNfcGF0dGVybl9zdHlsZV9wcmVzZW50OiAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcHVzLXBhdHRlcm4tc3R5bGUnKSwKICAgICAgc2hpZWxkX2xvYWRlZDogISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW1icmUtY29uZmlkZW50aWFsLXNoaWVsZCcpLAogICAgfTsKICB9KTsKICBjb25zb2xlLmxvZygiXG5XRVZJQSAvd2V2aWEuaHRtbCBzdGF0ZToiLCBKU09OLnN0cmluZ2lmeSh3ZXZpYVN0YXRlLCBudWxsLCAyKSk7CiAgYXdhaXQgcGFnZS5zY3JlZW5zaG90KHsgcGF0aDogIm91dHB1dC92NTAtMDItd2V2aWEucG5nIiwgZnVsbFBhZ2U6IGZhbHNlIH0pOwogIAogIC8vIFNoaWVsZCBjb25zb2xlIGxvZ3MKICBjb25zdCBzaGllbGRMb2dzID0gbG9ncy5maWx0ZXIobCA9PiBsLmluY2x1ZGVzKCdzaGllbGQnKSk7CiAgY29uc29sZS5sb2coIlxuU2hpZWxkIGxvZ3M6Iiwgc2hpZWxkTG9ncyk7Cn0pOwo=");
foreach (glob("$base/*.spec.js") as $old) @unlink($old);
$written = @file_put_contents("$base/v50-shield.spec.js", $spec);
echo json_encode(["written" => $written]);

View File

@@ -1,27 +1,27 @@
{
"ok": true,
"agent": "V42_MQL_Scoring_Agent_REAL",
"ts": "2026-04-22T08:30:02+00:00",
"ts": "2026-04-22T08:40:01+00:00",
"status": "DEPLOYED_AUTO",
"deployed": true,
"algorithm": "weighted_behavioral_signals",
"signals_tracked": {
"wtp_engagement": 8,
"wtp_engagement": 100,
"chat_engagement": 0,
"roi_tool": 0,
"email_opened": 0
},
"avg_score": 2,
"avg_score": 25,
"mql_threshold": 50,
"sql_threshold": 75,
"leads_captured": 48,
"mql_auto_scored": 17,
"sql_auto_scored": 7,
"mql_auto_pct": 36,
"mql_auto_scored": 20,
"sql_auto_scored": 8,
"mql_auto_pct": 41,
"improvement_vs_manual": {
"before_manual_pct": 33.3,
"after_auto_pct": 36,
"delta": 2.700000000000003
"after_auto_pct": 41,
"delta": 7.700000000000003
},
"paperclip_db_ok": true,
"paperclip_tables": 2,

View File

@@ -1,7 +1,7 @@
{
"ok": true,
"version": "V83-business-kpi",
"ts": "2026-04-22T08:39:55+00:00",
"ts": "2026-04-22T08:44:49+00:00",
"summary": {
"total_categories": 8,
"total_kpis": 64,

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB