This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"ts": "2026-04-13T18:39:17+00:00",
|
||||
"ts": "2026-04-13T18:47:37+00:00",
|
||||
"hostname": "LAPTOP-VE75QUHF",
|
||||
"cpu": "76%",
|
||||
"ram": "88% (16GB)",
|
||||
"disk": "83% (464GB)",
|
||||
"uptime": "1d 2h",
|
||||
"cpu": "43%",
|
||||
"ram": "89% (16GB)",
|
||||
"disk": "?",
|
||||
"uptime": "1d03h00m",
|
||||
"user": "Yace",
|
||||
"ip": "160.177.167.67",
|
||||
"agent_version": "2.2"
|
||||
"agent_version": "2.0"
|
||||
}
|
||||
@@ -10,6 +10,6 @@
|
||||
"SAMBANOVA_KEY": "https:\/\/cloud.sambanova.ai\/apis",
|
||||
"MISTRAL_KEY": "https:\/\/console.mistral.ai\/api-keys"
|
||||
},
|
||||
"ts": "2026-04-13T16:00:12+00:00",
|
||||
"ts": "2026-04-13T18:47:11+00:00",
|
||||
"priority": "P0"
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"type": "key_renewal",
|
||||
"provider": "SAMBANOVA_KEY",
|
||||
"reason": "FAIL",
|
||||
"reason": "NO_BALANCE",
|
||||
"urls": {
|
||||
"GITHUB_TOKEN": "https:\/\/github.com\/settings\/tokens\/new?scopes=repo,workflow&description=WEVIA-Auto",
|
||||
"GROQ_KEY": "https:\/\/console.groq.com\/keys",
|
||||
@@ -10,6 +10,6 @@
|
||||
"SAMBANOVA_KEY": "https:\/\/cloud.sambanova.ai\/apis",
|
||||
"MISTRAL_KEY": "https:\/\/console.mistral.ai\/api-keys"
|
||||
},
|
||||
"ts": "2026-04-13T16:00:12+00:00",
|
||||
"ts": "2026-04-13T18:47:11+00:00",
|
||||
"priority": "P1"
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
"st": "LIVE"
|
||||
},
|
||||
"reasoning": {
|
||||
"p": "cerebras",
|
||||
"p": "groq",
|
||||
"m": "qwen-3-235b",
|
||||
"s": "86/90",
|
||||
"st": "LIVE"
|
||||
|
||||
92
api/execution-map.json.GOLD-20260413
Normal file
92
api/execution-map.json.GOLD-20260413
Normal file
@@ -0,0 +1,92 @@
|
||||
{
|
||||
"fast": {
|
||||
"p": "groq",
|
||||
"m": "llama-3.3-70b",
|
||||
"s": "88/90",
|
||||
"st": "LIVE"
|
||||
},
|
||||
"reasoning": {
|
||||
"p": "cerebras",
|
||||
"m": "qwen-3-235b",
|
||||
"s": "86/90",
|
||||
"st": "LIVE"
|
||||
},
|
||||
"orchestration": {
|
||||
"p": "nvidia",
|
||||
"m": "nemotron-49b",
|
||||
"s": "84/90",
|
||||
"st": "LIVE"
|
||||
},
|
||||
"multilingual": {
|
||||
"p": "mistral",
|
||||
"m": "mistral-small",
|
||||
"s": "82/90",
|
||||
"st": "LIVE"
|
||||
},
|
||||
"rag": {
|
||||
"p": "cohere",
|
||||
"m": "command-r",
|
||||
"s": "80/90",
|
||||
"st": "LIVE"
|
||||
},
|
||||
"blade": {
|
||||
"p": "blade",
|
||||
"m": "GLM5 cascade",
|
||||
"s": "75/90",
|
||||
"st": "LIVE"
|
||||
},
|
||||
"local_glm4": {
|
||||
"p": "ollama",
|
||||
"m": "glm4:9b",
|
||||
"s": "65/90",
|
||||
"st": "LIVE"
|
||||
},
|
||||
"local_ds": {
|
||||
"p": "ollama",
|
||||
"m": "deepseek-r1:7b",
|
||||
"s": "63/90",
|
||||
"st": "LIVE"
|
||||
},
|
||||
"medical": {
|
||||
"p": "ollama",
|
||||
"m": "medllama2",
|
||||
"s": "56/90",
|
||||
"st": "LIVE"
|
||||
},
|
||||
"litellm": {
|
||||
"p": "litellm",
|
||||
"m": "100+ unified",
|
||||
"s": "90/90",
|
||||
"st": "TO_WIRE"
|
||||
},
|
||||
"kimi": {
|
||||
"p": "kimi",
|
||||
"m": "K2.5 1T",
|
||||
"s": "95/90",
|
||||
"st": "TO_WIRE"
|
||||
},
|
||||
"glm5": {
|
||||
"p": "zhipu",
|
||||
"m": "GLM-5 744B",
|
||||
"s": "95/90",
|
||||
"st": "TO_WIRE"
|
||||
},
|
||||
"dsv32": {
|
||||
"p": "deepseek",
|
||||
"m": "V3.2 685B",
|
||||
"s": "91/90",
|
||||
"st": "TO_WIRE"
|
||||
},
|
||||
"gemma4": {
|
||||
"p": "google",
|
||||
"m": "Gemma4 26B",
|
||||
"s": "85/90",
|
||||
"st": "TO_WIRE"
|
||||
},
|
||||
"llama4": {
|
||||
"p": "meta",
|
||||
"m": "Llama4 10M ctx",
|
||||
"s": "87/90",
|
||||
"st": "TO_WIRE"
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"ts": "2026-04-13T16:00:12+00:00",
|
||||
"ts": "2026-04-13T18:47:11+00:00",
|
||||
"results": {
|
||||
"GITHUB_TOKEN": 401,
|
||||
"GROQ_KEY": 200,
|
||||
"CEREBRAS_API_KEY": 200,
|
||||
"GEMINI_KEY": 200,
|
||||
"SAMBANOVA_KEY": 0,
|
||||
"SAMBANOVA_KEY": 402,
|
||||
"MISTRAL_KEY": 200
|
||||
},
|
||||
"expired": [
|
||||
@@ -16,8 +16,8 @@
|
||||
},
|
||||
{
|
||||
"name": "SAMBANOVA_KEY",
|
||||
"code": 0,
|
||||
"reason": "FAIL"
|
||||
"code": 402,
|
||||
"reason": "NO_BALANCE"
|
||||
}
|
||||
],
|
||||
"renewed": [],
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"timestamp": "2026-04-13T20:30:12.608256",
|
||||
"timestamp": "2026-04-13T20:45:12.488938",
|
||||
"layers": {
|
||||
"DOCKER": {
|
||||
"n": "DOCKER",
|
||||
@@ -10,8 +10,8 @@
|
||||
"CAPABILITIES": {
|
||||
"n": "CAPABILITIES",
|
||||
"t": 10,
|
||||
"p": 8,
|
||||
"c": "cy"
|
||||
"p": 7,
|
||||
"c": "am"
|
||||
},
|
||||
"CRONS": {
|
||||
"n": "CRONS",
|
||||
@@ -22,7 +22,7 @@
|
||||
"SYSTEMD": {
|
||||
"n": "SYSTEMD",
|
||||
"t": 4,
|
||||
"p": 4,
|
||||
"p": 3,
|
||||
"c": "cy"
|
||||
},
|
||||
"PORTS-S204": {
|
||||
@@ -58,5 +58,5 @@
|
||||
},
|
||||
"fixes": [],
|
||||
"total": 197,
|
||||
"pass": 185
|
||||
"pass": 183
|
||||
}
|
||||
@@ -13,5 +13,5 @@
|
||||
"Run simulation",
|
||||
"CEO insights"
|
||||
],
|
||||
"timestamp": "2026-04-13 18:40:02"
|
||||
"timestamp": "2026-04-13 18:45:01"
|
||||
}
|
||||
@@ -1,42 +1,31 @@
|
||||
<?php
|
||||
header("Content-Type: application/json");
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
$action = $_GET["action"] ?? "health";
|
||||
$action=$_GET["action"]??"status";
|
||||
try{
|
||||
$db=new PDO("pgsql:host=localhost;dbname=adx_system","admin","admin123",[PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC]);
|
||||
$db->exec("SET search_path TO admin,public");
|
||||
}catch(Exception $e){echo json_encode(["ok"=>false,"error"=>"db"]);exit;}
|
||||
|
||||
// Proxy to S95 Arsenal for real O365 data
|
||||
function s95_api($path) {
|
||||
$ch = curl_init("http://10.1.0.3:5890/api/$path");
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>1, CURLOPT_TIMEOUT=>5]);
|
||||
return curl_exec($ch);
|
||||
}
|
||||
|
||||
if ($action === "health") {
|
||||
// Fetch real status from S95 sentinel
|
||||
$h = json_decode(s95_api("sentinel-brain.php?action=health"), true);
|
||||
// Query actual O365 account data from credentials table
|
||||
$conn = @pg_connect("host=10.1.0.3 port=5432 dbname=adx_system user=admin password=admin123");
|
||||
$warming = $active = $pending = $sends = 0;
|
||||
if ($conn) {
|
||||
$r = @pg_query($conn, "SELECT COUNT(*) as cnt FROM credentials WHERE type ILIKE '%office%' OR type ILIKE '%o365%' OR type ILIKE '%graph%'");
|
||||
$total = $r ? intval(pg_fetch_assoc($r)["cnt"]) : 0;
|
||||
$r2 = @pg_query($conn, "SELECT COUNT(*) as cnt FROM unified_send_log WHERE created_at > NOW() - INTERVAL '24 hours'");
|
||||
$sends = $r2 ? intval(pg_fetch_assoc($r2)["cnt"]) : 0;
|
||||
pg_close($conn);
|
||||
}
|
||||
echo json_encode([
|
||||
"ok" => true,
|
||||
"source" => $conn ? "live" : "cache",
|
||||
"warming" => 911,
|
||||
"active" => 1,
|
||||
"pending" => 871,
|
||||
"suspended" => 0,
|
||||
"health" => "82%",
|
||||
"sends" => $sends ?: 192,
|
||||
"total" => 1783,
|
||||
"s95" => !empty($h)
|
||||
]);
|
||||
} elseif ($action === "sentinel") {
|
||||
echo s95_api("sentinel-brain.php?action=health");
|
||||
} else {
|
||||
echo json_encode(["ok"=>true,"actions"=>["health","sentinel"]]);
|
||||
if($action==="status"){
|
||||
$t=(int)$db->query("SELECT COUNT(*) FROM office_accounts")->fetchColumn();
|
||||
$a=(int)$db->query("SELECT COUNT(*) FROM office_accounts WHERE LOWER(status)='active'")->fetchColumn();
|
||||
$w=(int)$db->query("SELECT COUNT(*) FROM office_accounts WHERE LOWER(status)='warming'")->fetchColumn();
|
||||
$s=(int)$db->query("SELECT COUNT(*) FROM office_accounts WHERE LOWER(status) IN ('suspended','blocked')")->fetchColumn();
|
||||
$snd=(int)$db->query("SELECT COUNT(*) FROM graph_send_log")->fetchColumn();
|
||||
$exc=(int)$db->query("SELECT COUNT(*) FROM office_accounts WHERE exchange_configured=true")->fetchColumn();
|
||||
$ten=(int)$db->query("SELECT COUNT(*) FROM graph_tenants")->fetchColumn();
|
||||
echo json_encode(["ok"=>true,"total"=>$t,"active"=>$a,"warming_count"=>$w,"warming"=>$w,"suspended"=>$s,"sends"=>$snd,"exchange"=>$exc,"tenants"=>$ten,"accounts_warming"=>$w,"health"=>$t>0?round($a/$t*100)."%":"0%"]);
|
||||
}elseif($action==="accounts"){
|
||||
$p=max(1,(int)($_GET["p"]??1));$pp=50;$off=($p-1)*$pp;
|
||||
$q=$_GET["q"]??"";
|
||||
$wh=$q?"WHERE (name ILIKE '%".addslashes($q)."%' OR tenant_domain ILIKE '%".addslashes($q)."%')":"";
|
||||
$rows=$db->query("SELECT id,name,tenant_domain,LOWER(status) as status,current_step,exchange_configured,domains_count FROM office_accounts $wh ORDER BY id DESC LIMIT $pp OFFSET $off")->fetchAll();
|
||||
$cnt=(int)$db->query("SELECT COUNT(*) FROM office_accounts $wh")->fetchColumn();
|
||||
echo json_encode(["ok"=>true,"accounts"=>$rows,"total"=>$cnt,"page"=>$p,"pages"=>max(1,ceil($cnt/$pp))]);
|
||||
}elseif($action==="tenants"){
|
||||
$rows=$db->query("SELECT tenant_domain,status,users_count,sends_today,daily_limit FROM graph_tenants ORDER BY users_count DESC LIMIT 20")->fetchAll();
|
||||
echo json_encode(["ok"=>true,"tenants"=>$rows]);
|
||||
}else{
|
||||
echo json_encode(["ok"=>true,"actions"=>["status","accounts","tenants"]]);
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,14 +1,13 @@
|
||||
{
|
||||
"timestamp": "2026-04-13 20:35:10",
|
||||
"timestamp": "2026-04-13 20:45:05",
|
||||
"healthy": false,
|
||||
"issues": [
|
||||
"Chatbot check error: Expecting value: line 1 column 1 (char 0)",
|
||||
"Domain crm.weval-consulting.com: HTTP 502",
|
||||
"Domain code.weval-consulting.com: HTTP 404",
|
||||
"Domain deerflow.weval-consulting.com: HTTP 502",
|
||||
"Domain n8n.weval-consulting.com: HTTP 502"
|
||||
],
|
||||
"fixes": [],
|
||||
"issues_count": 5,
|
||||
"issues_count": 4,
|
||||
"fixes_count": 0
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"timestamp": "2026-04-13 18:35:08",
|
||||
"timestamp": "2026-04-13 18:45:08",
|
||||
"healthy": false,
|
||||
"checks": {
|
||||
"outpost": "DOWN",
|
||||
@@ -8,10 +8,10 @@
|
||||
"flow:wevads.weval-consulting.com": "OK",
|
||||
"flow:ethica.weval-consulting.com": "FAIL:200",
|
||||
"flow:n8n.weval-consulting.com": "FAIL:502",
|
||||
"flow:crm.weval-consulting.com": "FAIL:502",
|
||||
"flow:crm.weval-consulting.com": "FAIL:200",
|
||||
"flow:mm.weval-consulting.com": "FAIL:200",
|
||||
"flow:analytics.weval-consulting.com": "FAIL:200",
|
||||
"flow:deerflow.weval-consulting.com": "FAIL:502",
|
||||
"flow:deerflow.weval-consulting.com": "FAIL:200",
|
||||
"callback_location": "MISSING",
|
||||
"ssl:weval-consulting.com": "52d",
|
||||
"ssl:auth.weval-consulting.com": "52d",
|
||||
@@ -19,7 +19,7 @@
|
||||
"docker:authentik-worker": "NOT_FOUND",
|
||||
"docker:authentik-db": "NOT_FOUND",
|
||||
"docker:authentik-redis": "NOT_FOUND",
|
||||
"open_ports": 47,
|
||||
"open_ports": 49,
|
||||
"nginx": "OK"
|
||||
},
|
||||
"flow_ok": 3,
|
||||
@@ -30,57 +30,57 @@
|
||||
{
|
||||
"level": "critical",
|
||||
"msg": "Outpost DOWN 9090",
|
||||
"ts": "2026-04-13T18:35:01+00:00"
|
||||
"ts": "2026-04-13T18:45:01+00:00"
|
||||
},
|
||||
{
|
||||
"level": "critical",
|
||||
"msg": "Outpost STILL DOWN",
|
||||
"ts": "2026-04-13T18:35:06+00:00"
|
||||
"ts": "2026-04-13T18:45:06+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Auth flow ethica.weval-consulting.com: 200",
|
||||
"ts": "2026-04-13T18:35:07+00:00"
|
||||
"ts": "2026-04-13T18:45:07+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Auth flow n8n.weval-consulting.com: 502",
|
||||
"ts": "2026-04-13T18:35:07+00:00"
|
||||
"ts": "2026-04-13T18:45:07+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Auth flow crm.weval-consulting.com: 502",
|
||||
"ts": "2026-04-13T18:35:07+00:00"
|
||||
"msg": "Auth flow crm.weval-consulting.com: 200",
|
||||
"ts": "2026-04-13T18:45:07+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Auth flow mm.weval-consulting.com: 200",
|
||||
"ts": "2026-04-13T18:35:07+00:00"
|
||||
"ts": "2026-04-13T18:45:07+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Auth flow analytics.weval-consulting.com: 200",
|
||||
"ts": "2026-04-13T18:35:08+00:00"
|
||||
"ts": "2026-04-13T18:45:07+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Auth flow deerflow.weval-consulting.com: 502",
|
||||
"ts": "2026-04-13T18:35:08+00:00"
|
||||
"msg": "Auth flow deerflow.weval-consulting.com: 200",
|
||||
"ts": "2026-04-13T18:45:08+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Callback location missing in nginx",
|
||||
"ts": "2026-04-13T18:35:08+00:00"
|
||||
"ts": "2026-04-13T18:45:08+00:00"
|
||||
}
|
||||
],
|
||||
"fixes": [
|
||||
{
|
||||
"title": "Restart authentik",
|
||||
"ts": "2026-04-13T18:35:01+00:00"
|
||||
"ts": "2026-04-13T18:45:01+00:00"
|
||||
},
|
||||
{
|
||||
"title": "Callback location auto-added",
|
||||
"ts": "2026-04-13T18:35:08+00:00"
|
||||
"ts": "2026-04-13T18:45:08+00:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,41 +1,46 @@
|
||||
{
|
||||
"timestamp": "2026-04-13 18:35:01",
|
||||
"timestamp": "2026-04-13 18:45:01",
|
||||
"version": "1.0",
|
||||
"disk": 65,
|
||||
"ram": 26,
|
||||
"ram": 23,
|
||||
"docker": 16,
|
||||
"ssl_days": 357,
|
||||
"ollama_models": 0,
|
||||
"arch_score": 100,
|
||||
"fixes_count": 1,
|
||||
"alerts_count": 2,
|
||||
"alerts_count": 3,
|
||||
"fixes": [
|
||||
{
|
||||
"title": "Restart ollama",
|
||||
"cmd": "systemctl restart ollama",
|
||||
"output": "",
|
||||
"time": "18:35:01"
|
||||
"time": "18:45:01"
|
||||
}
|
||||
],
|
||||
"alerts": [
|
||||
{
|
||||
"level": "critical",
|
||||
"msg": "S204:ollama DOWN (:11435)",
|
||||
"time": "18:35:01"
|
||||
"time": "18:45:01"
|
||||
},
|
||||
{
|
||||
"level": "critical",
|
||||
"msg": "S204:deerflow DOWN (:2024)",
|
||||
"time": "18:45:01"
|
||||
},
|
||||
{
|
||||
"level": "critical",
|
||||
"msg": "S204:authentik DOWN (:9090)",
|
||||
"time": "18:35:01"
|
||||
"time": "18:45:01"
|
||||
}
|
||||
],
|
||||
"log": [
|
||||
"18:35:01 AUTO-FIX: Restart ollama",
|
||||
"18:35:01 Disk: 65%",
|
||||
"18:35:01 SSL: 357d remaining",
|
||||
"18:35:01 Docker: 16 containers",
|
||||
"18:35:01 RAM: 26%",
|
||||
"18:35:01 Arch score: 100\/100"
|
||||
"18:45:01 AUTO-FIX: Restart ollama",
|
||||
"18:45:02 Disk: 65%",
|
||||
"18:45:02 SSL: 357d remaining",
|
||||
"18:45:02 Docker: 16 containers",
|
||||
"18:45:02 RAM: 23%",
|
||||
"18:45:02 Arch score: 100\/100"
|
||||
],
|
||||
"s204_services": 8,
|
||||
"s95_mta": 5
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"ts":"20:38","status":"offline"}
|
||||
{"ts":"20:46","status":"offline"}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"date": "2026-04-13 18:30:01",
|
||||
"date": "2026-04-13 18:45:01",
|
||||
"score": "7\/13 (53.8%)",
|
||||
"passed": 7,
|
||||
"failed": 6,
|
||||
@@ -35,7 +35,7 @@
|
||||
{
|
||||
"name": "eng:Compare",
|
||||
"ok": true,
|
||||
"detail": "123t 3a"
|
||||
"detail": "165t 3a"
|
||||
},
|
||||
{
|
||||
"name": "api:Dream",
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
{"ts":"20:30","disk":"65%","swap":"37%","docker_dead":"none","http":"200","ssl":"Certificate will not expire
|
||||
ok","alerts":"none","crons":58}
|
||||
{"ts":"20:40","disk":"65%","swap":"27%","docker_dead":"none","http":"200","ssl":"Certificate will not expire
|
||||
ok","alerts":" Nginx:RESTARTED","crons":59}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"timestamp": "2026-04-13 18:30:10",
|
||||
"timestamp": "2026-04-13 18:40:06",
|
||||
"healthy": false,
|
||||
"global_pass": 280,
|
||||
"global_fail": 13,
|
||||
@@ -34,8 +34,8 @@
|
||||
"total": 93
|
||||
},
|
||||
"chat_monitor": {
|
||||
"pass": 2,
|
||||
"fail": 1,
|
||||
"pass": 3,
|
||||
"fail": 0,
|
||||
"total": 3,
|
||||
"caps": {
|
||||
"Lean Six Sigma": {
|
||||
@@ -49,9 +49,9 @@
|
||||
"json": true
|
||||
},
|
||||
"SearXNG": {
|
||||
"ok": false,
|
||||
"code": 429,
|
||||
"json": false
|
||||
"ok": true,
|
||||
"code": 200,
|
||||
"json": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -64,9 +64,9 @@
|
||||
"score": 100
|
||||
},
|
||||
"chatbot_post": {
|
||||
"healthy": false,
|
||||
"provider": "none",
|
||||
"code": 0
|
||||
"healthy": true,
|
||||
"provider": "Gemini 2.5 Flash",
|
||||
"code": 200
|
||||
},
|
||||
"regression_scan": {
|
||||
"ok": 250,
|
||||
@@ -85,10 +85,8 @@
|
||||
"NonReg: 2 failures ()",
|
||||
"Full NonReg: 9\/28 failures (68%)",
|
||||
"L99 Command: 2 failures",
|
||||
"Chat Monitor: 1 capabilities returning non-JSON",
|
||||
"Auth Agent: unhealthy",
|
||||
"Chatbot POST: returning maintenance\/crash (provider cascade broken)",
|
||||
"L99 Mission: 2 failures (QUALITY, ssl)"
|
||||
],
|
||||
"issues_count": 7
|
||||
"issues_count": 5
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
{"ts": "20:35", "status": "ok"}
|
||||
{"ts": "20:45", "status": "ok"}
|
||||
Reference in New Issue
Block a user