PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC]); }catch(Exception $e){echo json_encode(["ok"=>false,"error"=>"db"]);exit;} if($action==="summary"){ $agents=(int)$db->query("SELECT COUNT(*) FROM agents")->fetchColumn(); $active=(int)$db->query("SELECT COUNT(*) FROM agents WHERE status='active'")->fetchColumn(); $skills=(int)$db->query("SELECT COUNT(*) FROM company_skills")->fetchColumn(); $issues=(int)$db->query("SELECT COUNT(*) FROM issues")->fetchColumn(); $projects=(int)$db->query("SELECT COUNT(*) FROM projects")->fetchColumn(); $goals=(int)$db->query("SELECT COUNT(*) FROM goals")->fetchColumn(); $routines=(int)$db->query("SELECT COUNT(*) FROM routines")->fetchColumn(); // Qdrant $kb=@json_decode(@file_get_contents("http://localhost:6333/collections/wevia_kb"),true); $sk=@json_decode(@file_get_contents("http://localhost:6333/collections/weval_skills"),true); $lr=@json_decode(@file_get_contents("http://localhost:6333/collections/wevia_learnings"),true); echo json_encode(["ok"=>true, "agents"=>$agents,"agents_active"=>$active, "skills"=>$skills,"issues"=>$issues,"projects"=>$projects,"goals"=>$goals,"routines"=>$routines, "rag"=>["kb"=>$kb["result"]["points_count"]??0,"skills"=>$sk["result"]["points_count"]??0,"learnings"=>$lr["result"]["points_count"]??0] ]); }elseif($action==="agents"){ $q=$_GET["q"]??"";$status=$_GET["status"]??""; $w=[];$p=[]; if($q){$w[]="name ILIKE :q";$p[":q"]="%$q%";} if($status){$w[]="status=:s";$p[":s"]=$status;} $wh=$w?"WHERE ".implode(" AND ",$w):""; $st=$db->prepare("SELECT name,status FROM agents $wh ORDER BY name LIMIT 50"); $st->execute($p); echo json_encode(["ok"=>true,"agents"=>$st->fetchAll()]); }elseif($action==="skills"){ $rows=$db->query("SELECT name FROM company_skills ORDER BY name LIMIT 100")->fetchAll(); echo json_encode(["ok"=>true,"skills"=>$rows,"total"=>(int)$db->query("SELECT COUNT(*) FROM company_skills")->fetchColumn()]); }else{ echo json_encode(["ok"=>true,"actions"=>["summary","agents","skills"]]); }