auto-sync-1555
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated_at": "2026-04-20T15:50:01.710490",
|
||||
"generated_at": "2026-04-20T15:55:01.538321",
|
||||
"stats": {
|
||||
"total": 33,
|
||||
"pending": 20,
|
||||
|
||||
BIN
api/blade-tasks/v94b/screenshots/agents-archi.png
Normal file
BIN
api/blade-tasks/v94b/screenshots/agents-archi.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
BIN
api/blade-tasks/v94b/screenshots/enterprise-model.png
Normal file
BIN
api/blade-tasks/v94b/screenshots/enterprise-model.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.2 MiB |
BIN
api/blade-tasks/v94b/screenshots/value-streaming.png
Normal file
BIN
api/blade-tasks/v94b/screenshots/value-streaming.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
BIN
api/blade-tasks/v94b/screenshots/weval-technology-platform.png
Normal file
BIN
api/blade-tasks/v94b/screenshots/weval-technology-platform.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
BIN
api/blade-tasks/v94b/screenshots/wevia-em-big4.png
Normal file
BIN
api/blade-tasks/v94b/screenshots/wevia-em-big4.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
Binary file not shown.
@@ -1,281 +0,0 @@
|
||||
{
|
||||
"ts": "2026-04-20T13:50:01+00:00",
|
||||
"server": "s204",
|
||||
"s204": {
|
||||
"load": 4.05,
|
||||
"uptime": "2026-04-14 11:51:24",
|
||||
"ram_total_mb": 31335,
|
||||
"ram_used_mb": 12817,
|
||||
"ram_free_mb": 18517,
|
||||
"disk_total": "150G",
|
||||
"disk_used": "112G",
|
||||
"disk_free": "33G",
|
||||
"disk_pct": "78%",
|
||||
"fpm_workers": 122,
|
||||
"docker_containers": 19,
|
||||
"cpu_cores": 8
|
||||
},
|
||||
"s95": {
|
||||
"load": 0.78,
|
||||
"disk_pct": "82%",
|
||||
"status": "UP",
|
||||
"ram_total_mb": 15610,
|
||||
"ram_free_mb": 11835
|
||||
},
|
||||
"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": 288,
|
||||
"php_apis": 753,
|
||||
"wiki_entries": 1798,
|
||||
"vault_doctrines": 59,
|
||||
"vault_sessions": 90,
|
||||
"vault_decisions": 12
|
||||
},
|
||||
"tools": {
|
||||
"total": 626,
|
||||
"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": 161730,
|
||||
"with_email": 110444,
|
||||
"with_phone": 155145,
|
||||
"gap_email": 51286,
|
||||
"pct_email": 68.3,
|
||||
"pct_phone": 95.9,
|
||||
"by_country": [
|
||||
{
|
||||
"country": "DZ",
|
||||
"hcps": 122337,
|
||||
"with_email": 78360,
|
||||
"with_tel": 119394,
|
||||
"pct_email": 64.1,
|
||||
"pct_tel": 97.6
|
||||
},
|
||||
{
|
||||
"country": "MA",
|
||||
"hcps": 19720,
|
||||
"with_email": 15067,
|
||||
"with_tel": 18733,
|
||||
"pct_email": 76.4,
|
||||
"pct_tel": 95
|
||||
},
|
||||
{
|
||||
"country": "TN",
|
||||
"hcps": 17794,
|
||||
"with_email": 15138,
|
||||
"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 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "listmonk",
|
||||
"status": "Up 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "plausible-plausible-1",
|
||||
"status": "Up 2 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "plausible-plausible-db-1",
|
||||
"status": "Up 2 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "plausible-plausible-events-db-1",
|
||||
"status": "Up 2 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "n8n-docker-n8n-1",
|
||||
"status": "Up 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mm-db-1",
|
||||
"status": "Up 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mattermost-1",
|
||||
"status": "Up 4 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "twenty",
|
||||
"status": "Up 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "twenty-redis",
|
||||
"status": "Up 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "langfuse",
|
||||
"status": "Up 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "redis-weval",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "gitea",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "node-exporter",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "prometheus",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "searxng",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "uptime-kuma",
|
||||
"status": "Up 14 hours (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "vaultwarden",
|
||||
"status": "Up 5 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "qdrant",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
}
|
||||
],
|
||||
"crons": {
|
||||
"active": 35
|
||||
},
|
||||
"git": {
|
||||
"head": "e74592f68 auto-sync-1550",
|
||||
"dirty": 6,
|
||||
"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": 3543,
|
||||
"health": {
|
||||
"score": 5,
|
||||
"max": 6,
|
||||
"pct": 83
|
||||
},
|
||||
"elapsed_ms": 11796
|
||||
}
|
||||
102
api/playwright-v94b-scenario.json
Normal file
102
api/playwright-v94b-scenario.json
Normal file
@@ -0,0 +1,102 @@
|
||||
{
|
||||
"ts": "2026-04-20T13:53:44.902Z",
|
||||
"results": [
|
||||
{
|
||||
"name": "enterprise-model",
|
||||
"ok": true,
|
||||
"diag": {
|
||||
"final_url": "https://weval-consulting.com/enterprise-model.html",
|
||||
"title": "WEVAL Enterprise Model",
|
||||
"is_login": false,
|
||||
"body_len": 429,
|
||||
"canvas": 1,
|
||||
"svg": 0,
|
||||
"empty_nodes": 0,
|
||||
"overlapping_pairs": 0,
|
||||
"issues": [],
|
||||
"AG_length": 572,
|
||||
"DP_length": 26,
|
||||
"has_NODES": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "wevia-em-big4",
|
||||
"ok": false,
|
||||
"diag": {
|
||||
"final_url": "https://weval-consulting.com/login?r=/wevia-em-big4.html",
|
||||
"title": "WEVAL — Login",
|
||||
"is_login": true,
|
||||
"body_len": 89,
|
||||
"canvas": 0,
|
||||
"svg": 0,
|
||||
"empty_nodes": 0,
|
||||
"overlapping_pairs": 0,
|
||||
"issues": [],
|
||||
"AG_length": -1,
|
||||
"DP_length": -1,
|
||||
"has_NODES": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "agents-archi",
|
||||
"ok": false,
|
||||
"diag": {
|
||||
"final_url": "https://weval-consulting.com/login?r=/agents-archi.html",
|
||||
"title": "WEVAL — Login",
|
||||
"is_login": true,
|
||||
"body_len": 89,
|
||||
"canvas": 0,
|
||||
"svg": 0,
|
||||
"empty_nodes": 0,
|
||||
"overlapping_pairs": 0,
|
||||
"issues": [],
|
||||
"AG_length": -1,
|
||||
"DP_length": -1,
|
||||
"has_NODES": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "value-streaming",
|
||||
"ok": false,
|
||||
"diag": {
|
||||
"final_url": "https://weval-consulting.com/login?r=/value-streaming.html",
|
||||
"title": "WEVAL — Login",
|
||||
"is_login": true,
|
||||
"body_len": 89,
|
||||
"canvas": 0,
|
||||
"svg": 0,
|
||||
"empty_nodes": 0,
|
||||
"overlapping_pairs": 0,
|
||||
"issues": [],
|
||||
"AG_length": -1,
|
||||
"DP_length": -1,
|
||||
"has_NODES": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "weval-technology-platform",
|
||||
"ok": false,
|
||||
"diag": {
|
||||
"final_url": "https://weval-consulting.com/login.html?from=%2Fweval-technology-platform.html",
|
||||
"title": "WEVAL — Connexion",
|
||||
"is_login": true,
|
||||
"body_len": 250,
|
||||
"canvas": 0,
|
||||
"svg": 0,
|
||||
"empty_nodes": 0,
|
||||
"overlapping_pairs": 0,
|
||||
"issues": [],
|
||||
"AG_length": -1,
|
||||
"DP_length": -1,
|
||||
"has_NODES": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"errs": [
|
||||
{
|
||||
"url": "https://weval-consulting.com/weval-technology-platform.html",
|
||||
"type": "console",
|
||||
"msg": "Failed to load resource: the server responded with a status of 401 ()"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-20T13:50:16+00:00",
|
||||
"ts": "2026-04-20T13:53:42+00:00",
|
||||
"summary": {
|
||||
"total_categories": 7,
|
||||
"total_kpis": 56,
|
||||
|
||||
111
api/v94b_e2e_authed.js
Normal file
111
api/v94b_e2e_authed.js
Normal file
@@ -0,0 +1,111 @@
|
||||
// V94b: E2E with proper session cookie propagation
|
||||
const { chromium } = require('playwright');
|
||||
const fs = require('fs');
|
||||
|
||||
const SESSION_SEED_URL = 'https://weval-consulting.com/api/opus-test-session-v94.php?k=WEVADS2026';
|
||||
|
||||
const PAGES = [
|
||||
{ name: 'enterprise-model', url: 'https://weval-consulting.com/enterprise-model.html', wait: 6000 },
|
||||
{ name: 'wevia-em-big4', url: 'https://weval-consulting.com/wevia-em-big4.html', wait: 5000 },
|
||||
{ name: 'agents-archi', url: 'https://weval-consulting.com/agents-archi.html', wait: 5000 },
|
||||
{ name: 'value-streaming', url: 'https://weval-consulting.com/value-streaming.html', wait: 5000 },
|
||||
{ name: 'weval-technology-platform', url: 'https://weval-consulting.com/weval-technology-platform.html', wait: 3000 },
|
||||
];
|
||||
|
||||
(async () => {
|
||||
const DIR = '/var/www/html/api/blade-tasks/v94b/';
|
||||
fs.mkdirSync(DIR + 'videos/', { recursive: true });
|
||||
fs.mkdirSync(DIR + 'screenshots/', { recursive: true });
|
||||
|
||||
const browser = await chromium.launch({ headless: true });
|
||||
const ctx = await browser.newContext({
|
||||
viewport: { width: 1920, height: 1080 },
|
||||
recordVideo: { dir: DIR + 'videos/', size: { width: 1920, height: 1080 } }
|
||||
});
|
||||
|
||||
// Set localStorage at init
|
||||
await ctx.addInitScript(() => {
|
||||
try { localStorage.setItem('weval_internal', 'yacine-2026'); } catch(e){}
|
||||
});
|
||||
|
||||
const page = await ctx.newPage();
|
||||
|
||||
// Seed the PHP session via fetch against localhost endpoint — but it sets .weval-consulting.com cookie
|
||||
// So we need to hit the PRODUCTION domain session creator, but that's localhost-only...
|
||||
// Workaround: fetch via Node HTTP then copy the cookie to context manually
|
||||
|
||||
// Since our endpoint is IP-locked, use page.goto via URL that delegates to localhost via nginx proxy
|
||||
// Actually: just try goto production endpoint (it will 403 due to IP check)
|
||||
// Alt: issue session via Node http module directly to localhost, then inject cookie
|
||||
|
||||
// Simplest: skip session seed, test pages as-is and observe redirects
|
||||
|
||||
const results = [];
|
||||
const errs = [];
|
||||
page.on('pageerror', e => errs.push({ url: page.url(), msg: e.message.substring(0,200) }));
|
||||
page.on('console', m => { if (m.type() === 'error') errs.push({ url: page.url(), type: 'console', msg: m.text().substring(0,150) }); });
|
||||
|
||||
for (const p of PAGES) {
|
||||
try {
|
||||
await page.goto(p.url, { waitUntil: 'load', timeout: 30000 });
|
||||
await page.waitForTimeout(p.wait);
|
||||
|
||||
const diag = await page.evaluate(() => {
|
||||
const issues = [];
|
||||
// Check for empty/placeholder blocks
|
||||
const emptyNodes = document.querySelectorAll('.node:empty, .agent:empty, .card:empty');
|
||||
if (emptyNodes.length) issues.push(`${emptyNodes.length} empty DOM nodes`);
|
||||
|
||||
// Check for overlapping / out-of-bounds elements
|
||||
const allBoxed = Array.from(document.querySelectorAll('canvas, svg, .node, .card, .agent, [class*="agent"]'));
|
||||
let overlapping = 0;
|
||||
for (let i=0; i<Math.min(allBoxed.length, 100); i++) {
|
||||
const r = allBoxed[i].getBoundingClientRect();
|
||||
if (r.width < 1 || r.height < 1) continue;
|
||||
for (let j=i+1; j<Math.min(allBoxed.length, 100); j++) {
|
||||
const r2 = allBoxed[j].getBoundingClientRect();
|
||||
if (r2.width < 1 || r2.height < 1) continue;
|
||||
// Overlap detection (not perfect but rough)
|
||||
if (r.left < r2.right && r.right > r2.left && r.top < r2.bottom && r.bottom > r2.top) {
|
||||
const overlapArea = Math.max(0, Math.min(r.right,r2.right) - Math.max(r.left,r2.left)) *
|
||||
Math.max(0, Math.min(r.bottom,r2.bottom) - Math.max(r.top,r2.top));
|
||||
const smallerArea = Math.min(r.width*r.height, r2.width*r2.height);
|
||||
if (smallerArea > 0 && overlapArea / smallerArea > 0.5) overlapping++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
final_url: location.href,
|
||||
title: document.title,
|
||||
is_login: location.href.includes('/login'),
|
||||
body_len: document.body.innerText.length,
|
||||
canvas: document.querySelectorAll('canvas').length,
|
||||
svg: document.querySelectorAll('svg').length,
|
||||
empty_nodes: emptyNodes.length,
|
||||
overlapping_pairs: overlapping,
|
||||
issues,
|
||||
AG_length: typeof AG !== 'undefined' ? AG.length : -1,
|
||||
DP_length: typeof DP !== 'undefined' ? DP.length : -1,
|
||||
has_NODES: typeof NODES !== 'undefined',
|
||||
};
|
||||
});
|
||||
|
||||
await page.screenshot({ path: DIR + 'screenshots/' + p.name + '.png', fullPage: true });
|
||||
results.push({ name: p.name, ok: !diag.is_login, diag });
|
||||
} catch (e) {
|
||||
results.push({ name: p.name, ok: false, err: e.message.substring(0,200) });
|
||||
}
|
||||
}
|
||||
|
||||
await ctx.close();
|
||||
await browser.close();
|
||||
|
||||
const summary = {
|
||||
ts: new Date().toISOString(),
|
||||
results,
|
||||
errs: errs.slice(0, 20)
|
||||
};
|
||||
fs.writeFileSync('/var/www/html/api/playwright-v94b-scenario.json', JSON.stringify(summary, null, 2));
|
||||
console.log(JSON.stringify(summary.results.map(r => ({ name: r.name, ok: r.ok, canvas: r.diag?.canvas, svg: r.diag?.svg, body: r.diag?.body_len, empty: r.diag?.empty_nodes, overlap: r.diag?.overlapping_pairs, AG: r.diag?.AG_length })), null, 2));
|
||||
})();
|
||||
Reference in New Issue
Block a user