113 lines
5.1 KiB
HTML
113 lines
5.1 KiB
HTML
<!DOCTYPE html>
|
|
<html><head><meta charset="utf-8"><title>PROOF WAVE-268</title>
|
|
<style>
|
|
body{font-family:-apple-system,Segoe UI,monospace;background:#0b0d15;color:#e2e8f0;padding:30px;font-size:14px;margin:0;min-height:100vh}
|
|
.box{background:#1e293b;padding:18px;border:2px solid #10b981;border-radius:10px;margin:12px 0}
|
|
.box.fail{border-color:#ef4444}
|
|
.key{color:#06b6d4;font-weight:700;font-size:12px}
|
|
.val{color:#fff}
|
|
h1{color:#f59e0b;margin:0 0 20px 0}
|
|
.btn{background:linear-gradient(135deg,#10b981,#06b6d4);color:#000;border:0;padding:14px 28px;font-size:16px;font-weight:800;border-radius:10px;cursor:pointer;box-shadow:0 4px 14px rgba(16,185,129,0.4)}
|
|
.btn:hover{transform:scale(1.02)}
|
|
.btn:disabled{opacity:.5;cursor:wait}
|
|
pre{color:#fff;white-space:pre-wrap;margin:6px 0 0 0;font-size:12px;max-height:300px;overflow:auto;background:#0f172a;padding:10px;border-radius:6px}
|
|
.ok{color:#10b981;font-weight:700}
|
|
.nok{color:#ef4444;font-weight:700}
|
|
#loader{display:none;color:#06b6d4;margin-top:20px;font-weight:700}
|
|
</style></head>
|
|
<body>
|
|
<h1>WAVE-268 PROOF TEST LIVE</h1>
|
|
<p style="color:#94a3b8">Teste directement depuis ton navigateur vers le backend WEVIA. Aucun cache, aucun intermediaire.</p>
|
|
<button id="runbtn" class="btn" onclick="runTests()">LANCER LES 5 TESTS LIVE</button>
|
|
<div id="loader">Running tests...</div>
|
|
<div id="results"></div>
|
|
<script>
|
|
async function runTests() {
|
|
var btn = document.getElementById("runbtn");
|
|
btn.disabled = true;
|
|
document.getElementById("loader").style.display = "block";
|
|
var res = document.getElementById("results");
|
|
res.innerHTML = "";
|
|
|
|
var cmds = [
|
|
"intents_pool",
|
|
"quelle heure",
|
|
"multiagent parallele: nonreg + l99 + git",
|
|
"orchestrate en parallele: ping + nonreg",
|
|
"cable un intent pour donner date quand on dit date_now. Commande: date"
|
|
];
|
|
|
|
for (var i = 0; i < cmds.length; i++) {
|
|
var cmd = cmds[i];
|
|
var t0 = Date.now();
|
|
var answer = "";
|
|
var engine = "";
|
|
var rawSample = "";
|
|
var status = "FAIL";
|
|
var err = "";
|
|
|
|
try {
|
|
var r = await fetch("/api/wevia-master-api.php", {
|
|
method: "POST",
|
|
headers: {"Content-Type": "application/json"},
|
|
body: JSON.stringify({message: cmd, session: "proof-" + Date.now()})
|
|
});
|
|
var txt = await r.text();
|
|
rawSample = txt.substring(0, 300);
|
|
|
|
// Try parse JSON direct
|
|
try {
|
|
var j = JSON.parse(txt);
|
|
answer = j.content || j.response || j.text || "";
|
|
engine = j.tool || j.engine || j.provider || "";
|
|
} catch(e) {
|
|
// Try parse SSE lines
|
|
var lines = txt.split("\n");
|
|
for (var k = 0; k < lines.length; k++) {
|
|
var line = lines[k];
|
|
if (line.indexOf("data: ") === 0) {
|
|
try {
|
|
var d = JSON.parse(line.substring(6));
|
|
if ((d.type === "answer" || d.type === "chunk") && d.text) {
|
|
answer = d.text;
|
|
engine = d.engine || "";
|
|
break;
|
|
}
|
|
} catch(e2) {}
|
|
}
|
|
}
|
|
}
|
|
|
|
var isFake = answer.toLowerCase().indexOf("intent shell reel") >= 0
|
|
|| answer.indexOf("Soutien technique") >= 0
|
|
|| answer.indexOf("Conseils d'affaires") >= 0;
|
|
status = answer ? (isFake ? "FAKE/LLM" : "REAL") : "EMPTY";
|
|
} catch(e) {
|
|
err = e.message;
|
|
status = "ERR";
|
|
}
|
|
|
|
var elapsed = Date.now() - t0;
|
|
var boxClass = (status === "REAL") ? "box" : "box fail";
|
|
var statusClass = (status === "REAL") ? "ok" : "nok";
|
|
|
|
var html = '<div class="' + boxClass + '">';
|
|
html += '<div><span class="key">CMD:</span> <span class="val">' + cmd + '</span></div>';
|
|
html += '<div><span class="key">STATUS:</span> <span class="' + statusClass + '">' + status + '</span></div>';
|
|
html += '<div><span class="key">ENGINE:</span> <span class="val">' + (engine || "?") + '</span></div>';
|
|
html += '<div><span class="key">TIME:</span> <span class="val">' + elapsed + 'ms</span></div>';
|
|
if (err) html += '<div><span class="key">ERR:</span> <span class="val">' + err + '</span></div>';
|
|
if (answer) html += '<div><span class="key">ANSWER:</span></div><pre>' + answer.substring(0,800).replace(/</g,"<") + '</pre>';
|
|
if (!answer) html += '<div><span class="key">RAW:</span></div><pre>' + rawSample.replace(/</g,"<") + '</pre>';
|
|
html += '</div>';
|
|
|
|
res.innerHTML += html;
|
|
}
|
|
|
|
res.innerHTML += '<div class="box" style="border-color:#f59e0b"><b>Tests termines</b> - ' + new Date().toLocaleString("fr-FR") + '</div>';
|
|
|
|
document.getElementById("loader").style.display = "none";
|
|
btn.disabled = false;
|
|
}
|
|
</script>
|
|
</body></html> |