AUTO-BACKUP 20260407-2300
@@ -77,7 +77,7 @@ function sc(s){return s>=75?'sc-h':s>=55?'sc-m':'sc-l'}
|
||||
async function load(){try{const r=await fetch(CACHE+'?t='+Date.now());render(await r.json())}catch(e){document.getElementById('app').innerHTML='<p style="color:var(--rd)">'+e+'</p>'}}
|
||||
function render(c){
|
||||
const A=c.all_ais||{},comp=c.composite||{},lb=c.leaderboard||{},gen=c.generated||'',R=c.report||{};
|
||||
const S=Object.entries(lb).sort((a,b)=>b[1]-a[1]),mx=S[0]?S[0][1]:90;
|
||||
const S=(Array.isArray(lb)?lb:Object.entries(lb).map(e=>({name:e[0],score:e[1]}))).sort((a,b)=>(b.score||0)-(a.score||0)),mx=S[0]?S[0].score:90;
|
||||
const cats=Object.keys(comp).sort((a,b)=>(comp[b]||0)-(comp[a]||0));
|
||||
const cbs=['WEVIA','WEVCODE','MANAGER','DeerFlow','SENTINEL','Ethica_Chat','WEVADS_IA','Qwen3_235b_Cerebras','Mistral_Small_EU','DeepSeekV31_SambaNova','ChatGPT_4o','Gemini_Pro','Claude_Opus'];
|
||||
const infras=Object.entries(A).filter(([n,a])=>!['OPUS','COMPOSITE','ECOSYSTEM',...cbs].includes(n));
|
||||
|
||||
2
api/$_IC
@@ -1 +1 @@
|
||||
{"timestamp":"2026-04-07 20:49:13","scan_ms":8484,"servers":{"s204":{"ip":"204.168.152.13","label":"S204 Primary","services":[{"name":"nginx","status":"active","port":"80\/443"},{"name":"php-fpm","status":"active","port":"9000"},{"name":"postgresql-16","status":"active","port":"5432"},{"name":"deerflow","status":"active","port":"2024"},{"name":"deerflow-gw","status":"active","port":"8001"},{"name":"deerflow-fe","status":"active","port":"3000"},{"name":"ollama","status":"active","port":"11434","info":"9 models"}],"docker":[{"name":"authentik-db","status":"Up 25 hours"},{"name":"authentik-redis","status":"Up 25 hours"},{"name":"authentik-server","status":"Up About an hour (healthy)"},{"name":"authentik-worker","status":"Up About an hour (healthy)"},{"name":"chatwoot-redis","status":"Up 25 hours"},{"name":"langfuse","status":"Up 25 hours"},{"name":"loki","status":"Up 25 hours"},{"name":"mattermost","status":"Up 25 minutes (healthy)"},{"name":"n8n","status":"Up 25 hours"},{"name":"node-exporter","status":"Up 25 hours"},{"name":"plausible-db","status":"Up 25 hours"},{"name":"plausible-events","status":"Up 25 hours"},{"name":"plausible","status":"Up 25 hours"},{"name":"prometheus","status":"Up 25 hours"},{"name":"qdrant","status":"Up 25 hours"},{"name":"searxng","status":"Up 25 hours"},{"name":"twenty-redis","status":"Up 25 hours"},{"name":"twenty","status":"Up 25 hours"},{"name":"uptime-kuma","status":"Up 25 hours (healthy)"},{"name":"vaultwarden","status":"Up 25 hours (healthy)"}]},"s95":{"ip":"95.216.167.89","label":"S95 WEVADS","services":[{"name":"kumomta","status":"active","port":"587"},{"name":"apache2","status":"active","port":"80"},{"name":"postgresql","status":"active","port":"5432"},{"name":"postfix","status":"active","port":"2525"},{"name":"pmta","status":"active","port":"25"},{"name":"sentinel","status":"active","port":"5890"},{"name":"adx","status":"active","port":"5821"},{"name":"arsenal","status":"active","port":"5822"}],"docker":[{"name":"listmonk_db","status":"Up 4 days"},{"name":"listmonk","status":"Up 4 days"}]},"s151":{"ip":"151.80.235.110","label":"S151 OVH","services":[{"name":"nginx","status":"active","port":"80"},{"name":"php-fpm","status":"active","port":"9000"},{"name":"postgresql","status":"active","port":"5432"},{"name":"ollama","status":"active","port":"11434"}],"docker":[{"name":"ollama","status":"Up 2 weeks"}]},"blade":{"ip":"local","label":"Razer Blade","services":[{"name":"Sentinel Agent","status":"active","port":"\u2014","info":"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1"}],"docker":[]}},"crons":[{"server":"S95","user":"root","schedule":"*\/30 * * * *","command":"php \/opt\/wevads\/scripts\/ethica\/ethica-validator.php 500 >> \/opt\/wevads\/logs\/ethica-validator.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"0 *\/4 * * *","command":"php \/opt\/wevads\/scripts\/cron-bounces.php >> \/var\/log\/wevads\/bounces.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"0 3 * * *","command":"\/root\/backups\/daily_backup.sh","source":"crontab"},{"server":"S95","user":"root","schedule":"0 4 * * *","command":"\/opt\/wevads\/scripts\/auto-backup-github.sh >> \/var\/log\/wevads\/backup.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"30 0 * * *","command":"php \/opt\/wevads\/scripts\/daily-stats-aggregate.php >> \/var\/log\/wevads\/daily-stats.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"30 1 * * *","command":"php \/opt\/wevads\/scripts\/cron-engagement.php >> \/var\/log\/wevads\/engagement.log 2>&1","source":"crontab"},{"server":"S151","user":"ubuntu","schedule":"*\/5 * * * *","command":"curl -s -m 10 http:\/\/localhost:11434\/api\/generate -d {model:granite4,prompt:ok,stream:false,keep_alive:-1} > \/dev\/null 2>&1","source":"crontab"},{"server":"S151","user":"ubuntu","schedule":"*\/10 * * * *","command":"docker start openclaw 2>\/dev\/null","source":"crontab"},{"server":"S151","user":"root","schedule":"*\/5 * * * *","command":"\/opt\/tracking_monitor.sh","source":"crontab"},{"server":"Blade","user":"SYSTEM","schedule":"*\/60s loop","command":"sentinel-agent.ps1 (auto-sync S204)","source":"Task Scheduler"}],"stats":{"total_crons":10,"total_services":20,"total_docker":23}}
|
||||
{"timestamp":"2026-04-07 21:00:02","scan_ms":8052,"servers":{"s204":{"ip":"204.168.152.13","label":"S204 Primary","services":[{"name":"nginx","status":"active","port":"80\/443"},{"name":"php-fpm","status":"active","port":"9000"},{"name":"postgresql-16","status":"active","port":"5432"},{"name":"deerflow","status":"active","port":"2024"},{"name":"deerflow-gw","status":"active","port":"8001"},{"name":"deerflow-fe","status":"active","port":"3000"},{"name":"ollama","status":"active","port":"11434","info":"9 models"}],"docker":[{"name":"authentik-db","status":"Up 25 hours"},{"name":"authentik-redis","status":"Up 25 hours"},{"name":"authentik-server","status":"Up 8 minutes (healthy)"},{"name":"authentik-worker","status":"Up 2 hours (healthy)"},{"name":"chatwoot-redis","status":"Up 25 hours"},{"name":"langfuse","status":"Up 25 hours"},{"name":"loki","status":"Up 25 hours"},{"name":"mattermost","status":"Up 36 minutes (healthy)"},{"name":"n8n","status":"Up 25 hours"},{"name":"node-exporter","status":"Up 25 hours"},{"name":"plausible-db","status":"Up 25 hours"},{"name":"plausible-events","status":"Up 25 hours"},{"name":"plausible","status":"Up 25 hours"},{"name":"prometheus","status":"Up 25 hours"},{"name":"qdrant","status":"Up 25 hours"},{"name":"searxng","status":"Up 25 hours"},{"name":"twenty-redis","status":"Up 25 hours"},{"name":"twenty","status":"Up 25 hours"},{"name":"uptime-kuma","status":"Up 25 hours (healthy)"},{"name":"vaultwarden","status":"Up 25 hours (healthy)"}]},"s95":{"ip":"95.216.167.89","label":"S95 WEVADS","services":[{"name":"kumomta","status":"active","port":"587"},{"name":"apache2","status":"active","port":"80"},{"name":"postgresql","status":"active","port":"5432"},{"name":"postfix","status":"active","port":"2525"},{"name":"pmta","status":"active","port":"25"},{"name":"sentinel","status":"active","port":"5890"},{"name":"adx","status":"active","port":"5821"},{"name":"arsenal","status":"active","port":"5822"}],"docker":[{"name":"listmonk_db","status":"Up 4 days"},{"name":"listmonk","status":"Up 4 days"}]},"s151":{"ip":"151.80.235.110","label":"S151 OVH","services":[{"name":"nginx","status":"active","port":"80"},{"name":"php-fpm","status":"active","port":"9000"},{"name":"postgresql","status":"active","port":"5432"},{"name":"ollama","status":"active","port":"11434"}],"docker":[{"name":"ollama","status":"Up 2 weeks"}]},"blade":{"ip":"local","label":"Razer Blade","services":[{"name":"Sentinel Agent","status":"active","port":"\u2014","info":"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1"}],"docker":[]}},"crons":[{"server":"S95","user":"root","schedule":"*\/30 * * * *","command":"php \/opt\/wevads\/scripts\/ethica\/ethica-validator.php 500 >> \/opt\/wevads\/logs\/ethica-validator.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"0 *\/4 * * *","command":"php \/opt\/wevads\/scripts\/cron-bounces.php >> \/var\/log\/wevads\/bounces.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"0 3 * * *","command":"\/root\/backups\/daily_backup.sh","source":"crontab"},{"server":"S95","user":"root","schedule":"0 4 * * *","command":"\/opt\/wevads\/scripts\/auto-backup-github.sh >> \/var\/log\/wevads\/backup.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"30 0 * * *","command":"php \/opt\/wevads\/scripts\/daily-stats-aggregate.php >> \/var\/log\/wevads\/daily-stats.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"30 1 * * *","command":"php \/opt\/wevads\/scripts\/cron-engagement.php >> \/var\/log\/wevads\/engagement.log 2>&1","source":"crontab"},{"server":"S151","user":"ubuntu","schedule":"*\/5 * * * *","command":"curl -s -m 10 http:\/\/localhost:11434\/api\/generate -d {model:granite4,prompt:ok,stream:false,keep_alive:-1} > \/dev\/null 2>&1","source":"crontab"},{"server":"S151","user":"ubuntu","schedule":"*\/10 * * * *","command":"docker start openclaw 2>\/dev\/null","source":"crontab"},{"server":"S151","user":"root","schedule":"*\/5 * * * *","command":"\/opt\/tracking_monitor.sh","source":"crontab"},{"server":"Blade","user":"SYSTEM","schedule":"*\/60s loop","command":"sentinel-agent.ps1 (auto-sync S204)","source":"Task Scheduler"}],"stats":{"total_crons":10,"total_services":20,"total_docker":23}}
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"ts": "2026-04-07T20:49:49+00:00",
|
||||
"ts": "2026-04-07T20:59:40+00:00",
|
||||
"hostname": "LAPTOP-VE75QUHF",
|
||||
"cpu": "100%",
|
||||
"ram": "82% (16GB)",
|
||||
"disk": "83% (464GB)",
|
||||
"uptime": "0d 19h",
|
||||
"ram": "84% (16GB)",
|
||||
"disk": "?",
|
||||
"uptime": "0d20h07m",
|
||||
"user": "Yace",
|
||||
"ip": "41.248.190.86",
|
||||
"agent_version": "2.2"
|
||||
"agent_version": "2.0"
|
||||
}
|
||||
179
api/l99-e2e-report.json
Normal file
@@ -0,0 +1,179 @@
|
||||
{
|
||||
"pages": [
|
||||
{
|
||||
"name": "Homepage",
|
||||
"path": "/",
|
||||
"status": "PASS",
|
||||
"title": "WEVAL Consulting \u2014 Enterprise Digital Tr",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "L99 Brain",
|
||||
"path": "/l99-brain.html",
|
||||
"status": "PASS",
|
||||
"title": "L99 Brain \u2014 Sovereign AI",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "WEVIA Master",
|
||||
"path": "/wevia-master.html",
|
||||
"status": "PASS",
|
||||
"title": "WEVIA Master AI",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "Sovereign",
|
||||
"path": "/sovereign-claude.html",
|
||||
"status": "PASS",
|
||||
"title": "Sovereign Claude",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "Claw Chat",
|
||||
"path": "/claw-chat.html",
|
||||
"status": "PASS",
|
||||
"title": "WEVAL Claw Code Chat",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "OpenClaw",
|
||||
"path": "/openclaw.html",
|
||||
"status": "PASS",
|
||||
"title": "OpenClaw \u2014 WEVAL AI Gateway",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "Wevcode",
|
||||
"path": "/wevcode.html",
|
||||
"status": "PASS",
|
||||
"title": "WEVCODE \u2014 Sovereign Coding Agent",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "L99 SaaS",
|
||||
"path": "/l99-saas.html",
|
||||
"status": "PASS",
|
||||
"title": "L99 Mission Control \u2014 WEVAL Sovereign QA",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "Enterprise",
|
||||
"path": "/enterprise-model.html",
|
||||
"status": "PASS",
|
||||
"title": "WEVAL Enterprise Model",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "Meetings",
|
||||
"path": "/wevia-meeting-rooms.html",
|
||||
"status": "PASS",
|
||||
"title": "WEVIA Meeting Rooms",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "Console",
|
||||
"path": "/wevia-console.html",
|
||||
"status": "PASS",
|
||||
"title": "WEVIA Console",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "Cortex",
|
||||
"path": "/wevia-cortex.html",
|
||||
"status": "PASS",
|
||||
"title": "WEVIA CORTEX",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "Monitor",
|
||||
"path": "/realtime-monitor-v3.html",
|
||||
"status": "PASS",
|
||||
"title": "WEVAL Realtime Monitor v3",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "AI Bench",
|
||||
"path": "/ai-benchmark.html",
|
||||
"status": "PASS",
|
||||
"title": "WEVAL \u2014 AI Benchmark vs OPUS 4.6",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "WEVIA Life",
|
||||
"path": "/products/wevia-life.html",
|
||||
"status": "PASS",
|
||||
"title": "WEVAL Consulting \u2014 Enterprise Digital Tr",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "WEVIA App",
|
||||
"path": "/products/wevialife-app.html",
|
||||
"status": "PASS",
|
||||
"title": "WEVAL Consulting",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "L99 Fullscreen",
|
||||
"path": "/l99-fullscreen.html",
|
||||
"status": "PASS",
|
||||
"title": "L99 Fullscreen | WEVAL",
|
||||
"js_errors": 0
|
||||
},
|
||||
{
|
||||
"name": "Admin",
|
||||
"path": "/admin.html",
|
||||
"status": "PASS",
|
||||
"title": "WEVAL Admin",
|
||||
"js_errors": 0
|
||||
}
|
||||
],
|
||||
"sso": [
|
||||
{
|
||||
"page": "/ops-center.html",
|
||||
"redirected": true,
|
||||
"final_url": "https://weval-consulting.com/if/flow/default-authentication-",
|
||||
"status": "PASS"
|
||||
},
|
||||
{
|
||||
"page": "/security-dashboard.html",
|
||||
"redirected": true,
|
||||
"final_url": "https://weval-consulting.com/if/flow/default-authentication-",
|
||||
"status": "PASS"
|
||||
}
|
||||
],
|
||||
"apis": [],
|
||||
"scenarios": [
|
||||
{
|
||||
"name": "L99 Brain Click",
|
||||
"btns": 12,
|
||||
"msgs": 2,
|
||||
"status": "PASS"
|
||||
},
|
||||
{
|
||||
"name": "Enterprise Model",
|
||||
"agents": 669,
|
||||
"depts": 22,
|
||||
"status": "PASS"
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
"/tmp/pw-e2e/ss-homepage.png",
|
||||
"/tmp/pw-e2e/ss-l99-brain.png",
|
||||
"/tmp/pw-e2e/ss-wevia-master.png",
|
||||
"/tmp/pw-e2e/ss-sovereign.png",
|
||||
"/tmp/pw-e2e/ss-claw-chat.png",
|
||||
"/tmp/pw-e2e/ss-openclaw.png",
|
||||
"/tmp/pw-e2e/ss-wevcode.png",
|
||||
"/tmp/pw-e2e/ss-l99-saas.png",
|
||||
"/tmp/pw-e2e/ss-enterprise.png",
|
||||
"/tmp/pw-e2e/ss-meetings.png",
|
||||
"/tmp/pw-e2e/ss-console.png",
|
||||
"/tmp/pw-e2e/ss-cortex.png",
|
||||
"/tmp/pw-e2e/ss-monitor.png",
|
||||
"/tmp/pw-e2e/ss-ai-bench.png",
|
||||
"/tmp/pw-e2e/ss-wevia-life.png",
|
||||
"/tmp/pw-e2e/ss-wevia-app.png",
|
||||
"/tmp/pw-e2e/ss-l99-fullscreen.png",
|
||||
"/tmp/pw-e2e/ss-admin.png"
|
||||
]
|
||||
}
|
||||
101
api/l99-e2e-test.py
Executable file
@@ -0,0 +1,101 @@
|
||||
#!/usr/bin/env python3
|
||||
from playwright.sync_api import sync_playwright
|
||||
import time, json, os
|
||||
|
||||
results = {'pages':[], 'sso':[], 'apis':[], 'scenarios':[], 'screenshots':[]}
|
||||
|
||||
with sync_playwright() as p:
|
||||
b = p.chromium.launch(headless=True)
|
||||
ctx = b.new_context(record_video_dir='/tmp/pw-e2e/', viewport={'width':1920,'height':1080})
|
||||
pg = ctx.new_page()
|
||||
errs = []
|
||||
pg.on('pageerror', lambda e: errs.append(str(e)[:50]))
|
||||
|
||||
# === SCENARIO 1: ALL PAGES LOAD ===
|
||||
pages = [
|
||||
('Homepage', '/'),
|
||||
('L99 Brain', '/l99-brain.html'),
|
||||
('WEVIA Master', '/wevia-master.html'),
|
||||
('Sovereign', '/sovereign-claude.html'),
|
||||
('Claw Chat', '/claw-chat.html'),
|
||||
('OpenClaw', '/openclaw.html'),
|
||||
('Wevcode', '/wevcode.html'),
|
||||
('L99 SaaS', '/l99-saas.html'),
|
||||
('Enterprise', '/enterprise-model.html'),
|
||||
('Meetings', '/wevia-meeting-rooms.html'),
|
||||
('Console', '/wevia-console.html'),
|
||||
('Cortex', '/wevia-cortex.html'),
|
||||
('Monitor', '/realtime-monitor-v3.html'),
|
||||
('AI Bench', '/ai-benchmark.html'),
|
||||
('WEVIA Life', '/products/wevia-life.html'),
|
||||
('WEVIA App', '/products/wevialife-app.html'),
|
||||
('L99 Fullscreen', '/l99-fullscreen.html'),
|
||||
('Admin', '/admin.html'),
|
||||
]
|
||||
|
||||
for name, path in pages:
|
||||
try:
|
||||
errs.clear()
|
||||
pg.goto('https://weval-consulting.com'+path, wait_until='domcontentloaded', timeout=10000)
|
||||
time.sleep(1)
|
||||
code = pg.evaluate('() => document.readyState')
|
||||
title = pg.title()[:40]
|
||||
je = len(errs)
|
||||
# Screenshot
|
||||
ss_path = f'/tmp/pw-e2e/ss-{name.lower().replace(" ","-")}.png'
|
||||
pg.screenshot(path=ss_path)
|
||||
results['pages'].append({'name':name,'path':path,'status':'PASS','title':title,'js_errors':je})
|
||||
results['screenshots'].append(ss_path)
|
||||
except Exception as e:
|
||||
results['pages'].append({'name':name,'path':path,'status':'FAIL','error':str(e)[:60]})
|
||||
|
||||
# === SCENARIO 2: L99 BRAIN CLICK TEST ===
|
||||
pg.goto('https://weval-consulting.com/l99-brain.html', wait_until='networkidle', timeout=15000)
|
||||
time.sleep(1)
|
||||
btns = pg.locator('.sug').count()
|
||||
pg.locator('.sug').first.click()
|
||||
time.sleep(8)
|
||||
msgs = pg.locator('.msg').count()
|
||||
results['scenarios'].append({'name':'L99 Brain Click','btns':btns,'msgs':msgs,'status':'PASS' if msgs>0 else 'FAIL'})
|
||||
pg.screenshot(path='/tmp/pw-e2e/ss-l99-click.png')
|
||||
|
||||
# === SCENARIO 3: ENTERPRISE AGENTS ===
|
||||
pg.goto('https://weval-consulting.com/enterprise-model.html', wait_until='domcontentloaded', timeout=15000)
|
||||
time.sleep(3)
|
||||
agents = pg.evaluate('() => typeof AG !== "undefined" ? AG.length : 0')
|
||||
depts = pg.evaluate('() => typeof DP !== "undefined" ? DP.length : 0')
|
||||
results['scenarios'].append({'name':'Enterprise Model','agents':agents,'depts':depts,'status':'PASS' if agents>100 else 'FAIL'})
|
||||
pg.screenshot(path='/tmp/pw-e2e/ss-enterprise.png')
|
||||
|
||||
# === SCENARIO 4: SSO REDIRECT CHECK ===
|
||||
for sp in ['/ops-center.html', '/security-dashboard.html']:
|
||||
pg.goto('https://weval-consulting.com'+sp, wait_until='domcontentloaded', timeout=10000)
|
||||
time.sleep(1)
|
||||
url = pg.url
|
||||
is_sso = 'auth' in url or 'login' in url or 'outpost' in url
|
||||
results['sso'].append({'page':sp,'redirected':is_sso,'final_url':url[:60],'status':'PASS'})
|
||||
|
||||
ctx.close()
|
||||
b.close()
|
||||
|
||||
# Summary
|
||||
pass_count = sum(1 for p in results['pages'] if p.get('status')=='PASS')
|
||||
total = len(results['pages'])
|
||||
scen_pass = sum(1 for s in results['scenarios'] if s.get('status')=='PASS')
|
||||
|
||||
print(f"PAGES: {pass_count}/{total} PASS")
|
||||
print(f"SCENARIOS: {scen_pass}/{len(results['scenarios'])} PASS")
|
||||
print(f"SSO: {len(results['sso'])}/{len(results['sso'])} checked")
|
||||
print(f"SCREENSHOTS: {len(results['screenshots'])}")
|
||||
|
||||
for p in results['pages']:
|
||||
s = '✅' if p['status']=='PASS' else '❌'
|
||||
print(f" {s} {p['name']}: {p.get('title','')[:30]} {p.get('js_errors',0)}err")
|
||||
|
||||
for s in results['scenarios']:
|
||||
print(f" {'✅' if s['status']=='PASS' else '❌'} {s['name']}: {json.dumps({k:v for k,v in s.items() if k!='name' and k!='status'})}")
|
||||
|
||||
# Save JSON
|
||||
with open('/var/www/html/api/l99-e2e-report.json','w') as f:
|
||||
json.dump(results, f, indent=2)
|
||||
print("\nReport: /api/l99-e2e-report.json")
|
||||
BIN
api/l99-e2e-video.webm
Normal file
@@ -1 +1 @@
|
||||
{"pass":60,"fail":0,"warn":0,"total":60,"rate":100,"date":"2026-04-07T22:33:45+02:00"}
|
||||
{"pass":60,"fail":0,"warn":0,"total":60,"rate":100,"date":"2026-04-07T22:53:44+02:00"}
|
||||
|
||||
@@ -13,5 +13,5 @@
|
||||
"Run simulation",
|
||||
"CEO insights"
|
||||
],
|
||||
"timestamp": "2026-04-07 20:50:02"
|
||||
"timestamp": "2026-04-07 21:00:02"
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
{"ts": "20260407_224012", "version": "3.2", "score": 99, "pass": 152, "fail": 1, "total": 153, "elapsed": 46.2, "categories": {"S204": {"pass": 9, "fail": 0}, "S95-WV": {"pass": 12, "fail": 0}, "S95-ARS": {"pass": 17, "fail": 0}, "S95-iR": {"pass": 1, "fail": 0}, "INFRA": {"pass": 5, "fail": 0}, "API": {"pass": 27, "fail": 0}, "SEC": {"pass": 4, "fail": 0}, "S95-BK": {"pass": 6, "fail": 0}, "C2-API": {"pass": 4, "fail": 0}, "C2-SPA": {"pass": 1, "fail": 0}, "C2-WV": {"pass": 3, "fail": 0}, "SSO": {"pass": 25, "fail": 0}, "DATA": {"pass": 5, "fail": 0}, "CRONS": {"pass": 2, "fail": 0}, "BLADE": {"pass": 7, "fail": 0}, "LIFE": {"pass": 3, "fail": 0}, "FUNC": {"pass": 7, "fail": 0}, "01AVR": {"pass": 9, "fail": 1}, "STRUCT": {"pass": 5, "fail": 0}}, "failures": [{"n": "Caps10", "c": "01AVR", "s": "FAIL", "d": "9/10"}]}
|
||||
{"ts": "20260407_225012", "version": "3.2", "score": 98, "pass": 151, "fail": 2, "total": 153, "elapsed": 46.4, "categories": {"S204": {"pass": 9, "fail": 0}, "S95-WV": {"pass": 12, "fail": 0}, "S95-ARS": {"pass": 17, "fail": 0}, "S95-iR": {"pass": 1, "fail": 0}, "INFRA": {"pass": 5, "fail": 0}, "API": {"pass": 26, "fail": 1}, "SEC": {"pass": 4, "fail": 0}, "S95-BK": {"pass": 6, "fail": 0}, "C2-API": {"pass": 4, "fail": 0}, "C2-SPA": {"pass": 1, "fail": 0}, "C2-WV": {"pass": 3, "fail": 0}, "SSO": {"pass": 25, "fail": 0}, "DATA": {"pass": 5, "fail": 0}, "CRONS": {"pass": 2, "fail": 0}, "BLADE": {"pass": 7, "fail": 0}, "LIFE": {"pass": 3, "fail": 0}, "FUNC": {"pass": 7, "fail": 0}, "01AVR": {"pass": 9, "fail": 1}, "STRUCT": {"pass": 5, "fail": 0}}, "failures": [{"n": "WEVIA", "c": "API", "s": "FAIL", "d": "BAD"}, {"n": "Caps10", "c": "01AVR", "s": "FAIL", "d": "9/10"}]}
|
||||
BIN
api/ss-admin.png
Normal file
|
After Width: | Height: | Size: 140 KiB |
BIN
api/ss-ai-bench.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
api/ss-claw-chat.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
api/ss-console.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
api/ss-cortex.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
api/ss-enterprise.png
Normal file
|
After Width: | Height: | Size: 418 KiB |
BIN
api/ss-homepage.png
Normal file
|
After Width: | Height: | Size: 281 KiB |
BIN
api/ss-l99-brain.png
Normal file
|
After Width: | Height: | Size: 79 KiB |
BIN
api/ss-l99-click.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
api/ss-l99-fullscreen.png
Normal file
|
After Width: | Height: | Size: 115 KiB |
BIN
api/ss-l99-saas.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
BIN
api/ss-meetings.png
Normal file
|
After Width: | Height: | Size: 295 KiB |
BIN
api/ss-monitor.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
api/ss-openclaw.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
api/ss-sovereign.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
api/ss-wevcode.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
api/ss-wevia-app.png
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
BIN
api/ss-wevia-life.png
Normal file
|
After Width: | Height: | Size: 172 KiB |
BIN
api/ss-wevia-master.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"timestamp": "2026-04-07 22:45:11",
|
||||
"timestamp": "2026-04-07 22:55:07",
|
||||
"healthy": true,
|
||||
"issues": [],
|
||||
"fixes": [],
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"timestamp": "2026-04-07 20:45:05",
|
||||
"timestamp": "2026-04-07 20:55:03",
|
||||
"healthy": true,
|
||||
"checks": {
|
||||
"outpost": "UP",
|
||||
|
||||
@@ -232,7 +232,12 @@ function detectIntents($msg) {
|
||||
$intents[] = ['name' => 'ssh_exec', 'desc' => 'Stats Ethica', 'params' => ['cmd' => 'curl -sf "http://127.0.0.1/api/wevia-dispatcher.php?cap=ethica&auth=WEVIA2026" 2>/dev/null | head -5']];
|
||||
}
|
||||
|
||||
// L99 exhaustive test
|
||||
// L99 E2E Playwright (screenshots + video)
|
||||
if (preg_match("/\\b(e2e|end.*end|playwright|screenshot|capture|scenario|video.*test)/i", $msg)) {
|
||||
$intents[] = ['name'=>'ssh_exec','desc'=>'L99 E2E Playwright','params'=>['cmd'=>'timeout 120 python3 /var/www/html/api/l99-e2e-test.py 2>&1 | tail -25']];
|
||||
}
|
||||
|
||||
// L99 exhaustive test
|
||||
if (preg_match("/\\b(l99.*exhaust|test.*complet|tout.*test|full.*test|all.*test)/i", $msg)) {
|
||||
$intents[] = ['name'=>'ssh_exec','desc'=>'L99 Exhaustive','params'=>['cmd'=>'bash /var/www/html/api/l99-exhaustive.sh']];
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"timestamp": "2026-04-07 20:45:02",
|
||||
"timestamp": "2026-04-07 20:55:01",
|
||||
"version": "1.0",
|
||||
"disk": 80,
|
||||
"ram": 33,
|
||||
"ram": 31,
|
||||
"docker": 20,
|
||||
"ssl_days": 362,
|
||||
"ollama_models": 9,
|
||||
@@ -14,16 +14,16 @@
|
||||
{
|
||||
"level": "critical",
|
||||
"msg": "S204:mirofish DOWN (:5001)",
|
||||
"time": "20:45:02"
|
||||
"time": "20:55:01"
|
||||
}
|
||||
],
|
||||
"log": [
|
||||
"20:45:02 Disk: 80%",
|
||||
"20:45:03 SSL: 362d remaining",
|
||||
"20:45:03 Docker: 20 containers",
|
||||
"20:45:03 Ollama: 9 models, 26.2GB",
|
||||
"20:45:03 RAM: 33%",
|
||||
"20:45:04 Arch score: 98\/100"
|
||||
"20:55:01 Disk: 80%",
|
||||
"20:55:01 SSL: 362d remaining",
|
||||
"20:55:01 Docker: 20 containers",
|
||||
"20:55:01 Ollama: 9 models, 26.2GB",
|
||||
"20:55:02 RAM: 31%",
|
||||
"20:55:02 Arch score: 98\/100"
|
||||
],
|
||||
"s204_services": 8,
|
||||
"s95_mta": 5
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"ts":"22:48","status":"offline"}
|
||||
{"ts":"22:58","status":"offline"}
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
{"ts":"22:40","disk":"80%","swap":"71%","docker_dead":"none","http":"200","ssl":"Certificate will not expire
|
||||
{"ts":"22:50","disk":"80%","swap":"71%","docker_dead":"none","http":"200","ssl":"Certificate will not expire
|
||||
ok","alerts":"none","crons":54}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"timestamp": "2026-04-07 20:40:07",
|
||||
"timestamp": "2026-04-07 20:50:07",
|
||||
"healthy": false,
|
||||
"global_pass": 441,
|
||||
"global_fail": 14,
|
||||
"global_rate": 96.9,
|
||||
"global_pass": 442,
|
||||
"global_fail": 13,
|
||||
"global_rate": 97.1,
|
||||
"suites": {
|
||||
"l99_ux": {
|
||||
"pass": 146,
|
||||
@@ -18,8 +18,8 @@
|
||||
"total": 34
|
||||
},
|
||||
"nonreg": {
|
||||
"pass": 151,
|
||||
"fail": 2,
|
||||
"pass": 152,
|
||||
"fail": 1,
|
||||
"total": 153
|
||||
},
|
||||
"full_nonreg": {
|
||||
@@ -83,7 +83,7 @@
|
||||
},
|
||||
"issues": [
|
||||
"L99 UX: 3 failures",
|
||||
"NonReg: 2 failures ()",
|
||||
"NonReg: 1 failures ()",
|
||||
"Full NonReg: 7\/28 failures (75%)",
|
||||
"L99 Command: 2 failures",
|
||||
"L99 Mission: 2 failures (QUALITY, ssl)"
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
{"ts":"22:45","disk":"80%","ram":"33%","docker_dead":"0","ssl":"Certificate will not expire
|
||||
{"ts":"22:55","disk":"80%","ram":"33%","docker_dead":"0","ssl":"Certificate will not expire
|
||||
ok","models":"9","qdrant":"4","errors":"20"}
|
||||
|
||||