101 lines
4.8 KiB
PHP
101 lines
4.8 KiB
PHP
<?php
|
|
header("Content-Type: application/json");
|
|
$path = "/var/www/html/wevia.html";
|
|
$c = @file_get_contents($path);
|
|
$orig = strlen($c);
|
|
|
|
if (strpos($c, "AMBRE-V10-MERMAID") !== false) {
|
|
echo json_encode(["already_wired"=>true]);
|
|
exit;
|
|
}
|
|
|
|
// Use pattern matching for V9 anchor
|
|
$pos = strpos($c, "// === AMBRE-V9-PDF-PREMIUM");
|
|
if ($pos === false) {
|
|
echo json_encode(["error"=>"V9 not found at all"]);
|
|
exit;
|
|
}
|
|
|
|
// Back up to line start
|
|
$line_start = strrpos(substr($c, 0, $pos), "\n") + 1;
|
|
|
|
$v10 = ' // === AMBRE-V10-MERMAID 2026-04-22 · Mermaid RAG + inline SVG + artifact panel ===
|
|
var _mermaid_intent_pat = /(?:mermaid|sch[eé]ma|diagramme|flowchart|sequence\\s+diagram|gantt\\s+chart)/i;
|
|
if (_mermaid_intent_pat.test(text)) {
|
|
if (typeof showThinking === "function") showThinking();
|
|
busy = true;
|
|
try{var sb=document.getElementById("sendBtn");if(sb)sb.disabled=true;}catch(e){}
|
|
|
|
var _fetch = (typeof window.__ambreFetch === "function") ? window.__ambreFetch : fetch;
|
|
_fetch("/api/ambre-tool-mermaid.php", {
|
|
method: "POST",
|
|
headers: {"Content-Type":"application/json"},
|
|
body: JSON.stringify({topic: text})
|
|
})
|
|
.then(function(r){ return r.text().then(function(t){ try{return JSON.parse(t);}catch(e){return null;} }); })
|
|
.then(function(data){
|
|
if (typeof hideThinking === "function") hideThinking();
|
|
busy = false;
|
|
try{var sb=document.getElementById("sendBtn");if(sb)sb.disabled=false;}catch(e){}
|
|
try{var mi=document.getElementById("msgInput");if(mi){mi.value="";mi.disabled=false;}}catch(e){}
|
|
|
|
if (!data || !data.ok) {
|
|
addMsg("assistant", "❌ Erreur Mermaid. " + ((data && data.error) || "Réessayez."), "0");
|
|
return;
|
|
}
|
|
|
|
var mcode = data.mermaid_code;
|
|
var topic = data.topic || text;
|
|
var src = data.source || "unknown";
|
|
var kind = data.kind || "flowchart";
|
|
|
|
var srcBadge = (src === "kb_reused") ?
|
|
"<span class=\\"nx-badge\\" style=\\"background:rgba(16,185,129,.15);color:#10b981\\">♻️ KB Reused (" + (data.use_count || 0) + " uses)</span>" :
|
|
"<span class=\\"nx-badge\\" style=\\"background:rgba(99,102,241,.15);color:#6366f1\\">🧠 LLM Generated</span>";
|
|
var kindBadge = "<span class=\\"nx-badge\\" style=\\"background:rgba(139,92,246,.15);color:#8b5cf6\\">" + kind + "</span>";
|
|
var elapsedBadge = "<span class=\\"nx-badge\\" style=\\"background:rgba(245,158,11,.15);color:#f59e0b\\">" + (data.elapsed_ms || 0) + "ms</span>";
|
|
var badges = "<div style=\\"display:flex;gap:6px;flex-wrap:wrap;margin:8px 0\\">" + srcBadge + kindBadge + elapsedBadge + "</div>";
|
|
|
|
var uniqId = "mmd-" + Date.now();
|
|
var inlineBlock = "<div style=\\"margin:12px 0;padding:14px;background:#fafafa;border:1px solid #e5e7eb;border-radius:12px\\">" +
|
|
"<div style=\\"font-weight:600;font-size:13px;color:#6b7280;margin-bottom:10px\\">📊 " + topic + "</div>" +
|
|
"<div class=\\"mermaid\\" id=\\"" + uniqId + "\\" style=\\"text-align:center\\">" + mcode + "</div>" +
|
|
"<details style=\\"margin-top:10px\\"><summary style=\\"cursor:pointer;font-size:11px;color:#94a3b8\\">📝 Voir le code</summary>" +
|
|
"<pre style=\\"background:#1a1a2e;color:#e6edf3;padding:10px;border-radius:8px;font-size:11px;margin-top:8px;overflow-x:auto\\">" +
|
|
mcode.replace(/</g,"<").replace(/>/g,">") + "</pre></details>" +
|
|
"</div>";
|
|
|
|
addMsg("assistant", badges + inlineBlock, (data.elapsed_ms/1000).toFixed(2));
|
|
|
|
setTimeout(function(){
|
|
try {
|
|
if (window.mermaid && typeof window.mermaid.run === "function") {
|
|
window.mermaid.run({ nodes: [document.getElementById(uniqId)] });
|
|
}
|
|
} catch(e) { console.warn("mermaid render fail", e); }
|
|
}, 300);
|
|
})
|
|
.catch(function(err){
|
|
if (typeof hideThinking === "function") hideThinking();
|
|
busy = false;
|
|
try{var sb=document.getElementById("sendBtn");if(sb)sb.disabled=false;}catch(e){}
|
|
addMsg("assistant", "❌ Service Mermaid indisponible.", "0");
|
|
});
|
|
return;
|
|
}
|
|
// === END AMBRE-V10-MERMAID ===
|
|
|
|
';
|
|
|
|
$new_c = substr($c, 0, $line_start) . $v10 . substr($c, $line_start);
|
|
|
|
$backup = "/opt/wevads/vault/wevia.html.GOLD-" . date("Ymd-His") . "-v10-mermaid";
|
|
@copy($path, $backup);
|
|
$wrote = @file_put_contents($path, $new_c);
|
|
|
|
echo json_encode([
|
|
"delta" => strlen($new_c) - $orig,
|
|
"wrote" => $wrote,
|
|
"backup" => basename($backup),
|
|
]);
|