Files
html/api/l99-functional-test.php
2026-04-16 02:28:32 +02:00

81 lines
5.8 KiB
PHP

<?php
header('Content-Type:application/json');
set_time_limit(300);
$ts=date('c');$r=[];
function tf($url,$name,$checks){
$ch=curl_init($url);
curl_setopt_array($ch,[CURLOPT_RETURNTRANSFER=>1,CURLOPT_TIMEOUT=>15,CURLOPT_SSL_VERIFYPEER=>0,CURLOPT_FOLLOWLOCATION=>1]);
$body=curl_exec($ch);$code=curl_getinfo($ch,CURLINFO_HTTP_CODE);curl_close($ch);
$res=[];$p=0;$f=0;
foreach($checks as $k=>$v){
$ok=stripos($body,$v)!==false||preg_match("/$v/i",$body);
if($ok){$p++;$res[$k]='P';}else{$f++;$res[$k]='F';}
}
return['n'=>$name,'c'=>$code,'p'=>$p,'f'=>$f,'t'=>count($checks),'ck'=>$res,'s'=>strlen($body)];
}
function cd($url,$hdrs,$pay,$name){
$ch=curl_init($url);
curl_setopt_array($ch,[CURLOPT_POST=>1,CURLOPT_POSTFIELDS=>json_encode($pay),CURLOPT_HTTPHEADER=>$hdrs,CURLOPT_RETURNTRANSFER=>1,CURLOPT_TIMEOUT=>15,CURLOPT_SSL_VERIFYPEER=>0]);
$res=curl_exec($ch);$code=curl_getinfo($ch,CURLINFO_HTTP_CODE);curl_close($ch);
$j=@json_decode($res,true);$txt=$j['choices'][0]['message']['content']??'';
$ok=strlen($txt)>1;
return['n'=>$name,'c'=>$code,'p'=>$ok?1:0,'f'=>$ok?0:1,'t'=>1,'ck'=>['resp'=>$ok?'P':'F'],'s'=>strlen($res)];
}
$b='https://weval-consulting.com';
// 15 PAGES
$r[]=tf("$b/login",'Login',['input'=>'input','pwd'=>'password','btn'=>'button']);
$r[]=tf("$b/admin-saas.html",'Admin',['agent'=>'agent','docker'=>'docker','nonreg'=>'nonreg','health'=>'health','cron'=>'cron','oss'=>'oss','logout'=>'logout','tab'=>'Enterprise']);
$r[]=tf("$b/wevads-ia/",'WEVADS',['camp'=>'ampagne','contact'=>'ontact','sender'=>'ender','template'=>'emplate','assist'=>'ssistant','input'=>'input','brain'=>'rain','analyt'=>'nalytics','logout'=>'ogout']);
$r[]=tf("$b/agents-archi.html",'Archi3D',['three'=>'THREE','canvas'=>'canvas','agent'=>'agent','bloom'=>'loom','orbit'=>'OrbitControls']);
$r[]=tf("$b/enterprise-model.html",'Enterprise',['agent'=>'agent','dept'=>'epartment','canvas'=>'canvas']);
$r[]=tf("$b/agents-fleet.html",'Fleet',['fleet'=>'leet','agent'=>'agent','active'=>'ctive']);
$r[]=tf("$b/l99-brain.html",'L99Brain',['layer'=>'ayer','test'=>'est','pct'=>'%']);
$r[]=tf("$b/director-center.html",'Director',['director'=>'irector','fetch'=>'fetch','panel'=>'anel']);
$r[]=tf("$b/wevia-meeting-rooms.html",'Meetings',['room'=>'oom','meeting'=>'eeting']);
$r[]=tf("$b/architecture.html",'Archi',['scan'=>'can','gap'=>'ap','topology'=>'opology','score'=>'core']);
$r[]=tf("$b/openclaw.html",'OpenClaw',['provider'=>'rovider','input'=>'input','model'=>'odel']);
$r[]=tf("$b/wevia-console.html",'Console',['console'=>'onsole','wevia'=>'evia','fetch'=>'fetch']);
$r[]=tf("$b/director-chat.html",'DirChat',['chat'=>'hat','input'=>'input']);
$r[]=tf("$b/value-streaming.html",'ValStream',['nav'=>'href','body'=>'body']);
$r[]=tf("$b/paperclip.html",'PaperPg',['nav'=>'href','body'=>'body']);
// 3 CHAT DIRECT
$r[]=cd('https://api.groq.com/openai/v1/chat/completions',['Content-Type: application/json','Authorization: Bearer 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'],['model'=>'llama-3.3-70b-versatile','messages'=>[['role'=>'user','content'=>'Capital Maroc?']],'max_tokens'=>15],'Chat:Groq');
$r[]=cd('https://api.cerebras.ai/v1/chat/completions',['Content-Type: application/json','Authorization: Bearer csk-4wrrhkpr568ry9xx49k9mcynwdx483nx53dd62yh5xedfckh'],['model'=>'qwen-3-235b-a22b','messages'=>[['role'=>'user','content'=>'2+2?']],'max_tokens'=>15],'Chat:Cerebras');
$r[]=cd('https://integrate.api.nvidia.com/v1/chat/completions',['Content-Type: application/json','Authorization: Bearer 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'],['model'=>'nvidia/llama-3.3-nemotron-super-49b-v1','messages'=>[['role'=>'user','content'=>'Bonjour']],'max_tokens'=>15],'Chat:GLM5');
// 6 APIs
$r[]=tf("$b/api/ecosystem-health.php",'API:Eco',['l99'=>'l99','docker'=>'docker','oss'=>'oss','skills'=>'skills']);
$r[]=tf("$b/api/agents-status.php",'API:Agents',['agent'=>'agent','total'=>'total']);
$r[]=tf("$b/api/nonreg-api.php?cat=summary",'API:NonReg',['pass'=>'pass','total'=>'total']);
$r[]=tf("$b/api/wevia-master-autoheal.php",'API:Heal',['services'=>'services','pass'=>'pass']);
$r[]=tf("$b/api/agents-full-count.php",'API:Count',['total'=>'total','skills'=>'skills']);
$r[]=tf("$b/api/execution-map.json",'API:Map',['groq'=>'groq','nvidia'=>'nvidia']);
// 8 SUBDOMAINS
$r[]=tf("https://crm.weval-consulting.com",'Sub:CRM',['twenty'=>'wenty','html'=>'html']);
$r[]=tf("https://deerflow.weval-consulting.com",'Sub:Deer',['html'=>'html','chat'=>'hat']);
$r[]=tf("https://paperclip.weval-consulting.com",'Sub:Lang',['langfuse'=>'angfuse']);
$r[]=tf("https://analytics.weval-consulting.com",'Sub:Plaus',['plausible'=>'lausible']);
$r[]=tf("https://mm.weval-consulting.com",'Sub:MM',['mattermost'=>'attermost']);
$r[]=tf("https://monitor.weval-consulting.com",'Sub:Kuma',['uptime'=>'ptime']);
$r[]=tf("https://n8n.weval-consulting.com",'Sub:n8n',['n8n'=>'n8n']);
$r[]=tf("https://mirofish.weval-consulting.com",'Sub:Miro',['html'=>'html']);
// OLLAMA
$ch=curl_init('http://127.0.0.1:11434/api/generate');
curl_setopt_array($ch,[CURLOPT_POST=>1,CURLOPT_POSTFIELDS=>json_encode(['model'=>'glm4:9b','prompt'=>'Hi','stream'=>false]),CURLOPT_HTTPHEADER=>['Content-Type:application/json'],CURLOPT_RETURNTRANSFER=>1,CURLOPT_TIMEOUT=>20]);
$or=curl_exec($ch);$oc=curl_getinfo($ch,CURLINFO_HTTP_CODE);curl_close($ch);
$oj=@json_decode($or,true);$ot=$oj['response']??'';
$r[]=['n'=>'Ollama:glm4','c'=>$oc,'p'=>strlen($ot)>3?1:0,'f'=>strlen($ot)>3?0:1,'t'=>1,'ck'=>['r'=>strlen($ot)>3?'P':'F'],'s'=>strlen($or)];
$tp=0;$tf=0;$tt=0;
foreach($r as $t){$tp+=$t['p'];$tf+=$t['f'];$tt+=$t['t'];}
$pct=$tt>0?round(100*$tp/$tt):0;
file_put_contents('/var/log/l99-functional.log',"[$ts] $tp/$tt ($pct%)\n",FILE_APPEND);
echo json_encode(['ts'=>$ts,'checks'=>$tt,'pass'=>$tp,'fail'=>$tf,'pct'=>$pct,'tests'=>$r]);