102 lines
5.3 KiB
PHP
102 lines
5.3 KiB
PHP
<?php
|
|
header("Content-Type: application/json");
|
|
$path = "/var/www/html/wevia.html";
|
|
$c = @file_get_contents($path);
|
|
$orig_size = strlen($c);
|
|
|
|
// Check if V9 already present
|
|
if (strpos($c, "AMBRE-V9-PDF-PREMIUM") !== false) {
|
|
echo json_encode(["already_wired"=>true, "size"=>$orig_size]);
|
|
exit;
|
|
}
|
|
|
|
// Find V7 anchor (route BEFORE V7 so premium pattern matches first)
|
|
$anchor = " // === AMBRE-V7-PREMIUM-TOOLS 2026-04-21";
|
|
$idx = strpos($c, $anchor);
|
|
if ($idx === false) {
|
|
echo json_encode(["error"=>"V7 anchor not found"]);
|
|
exit;
|
|
}
|
|
|
|
$v9_block = <<<'JS'
|
|
// === AMBRE-V9-PDF-PREMIUM 2026-04-22 · premium PDF with Chart.js artifact right-panel ===
|
|
var _pdf_premium_pat = /(?:pdf|rapport)\s+(?:premium|qualit[eé]|pro|professionnel|avec\s+graphique|hd|chart)|(?:cr[eé]e[zr]?|g[eé]n[eè]re[zr]?|fais|fait|produi[st])\s+(?:un\s+)?(?:rapport|pdf)\s+(?:premium|pro|complet|avec\s+graphique|hd|qualit[eé])/i;
|
|
if (_pdf_premium_pat.test(text)) {
|
|
if (typeof showThinking === 'function') showThinking();
|
|
busy = true;
|
|
try{var sb=document.getElementById("sendBtn");if(sb)sb.disabled=true;}catch(e){}
|
|
|
|
var _fetchFn = (typeof window.__ambreFetch === 'function') ? window.__ambreFetch : fetch;
|
|
_fetchFn('/api/ambre-tool-pdf-premium.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 génération PDF premium. ' + ((data && data.error) || 'Réessayez.'), '0');
|
|
return;
|
|
}
|
|
|
|
var url = data.url;
|
|
var title = data.title || 'Rapport';
|
|
var subtitle = data.subtitle || '';
|
|
var badges = '<div style="display:flex;gap:6px;flex-wrap:wrap;margin:8px 0">' +
|
|
'<span class="nx-badge" style="background:rgba(99,102,241,.15);color:#6366f1">📊 PDF Premium</span>' +
|
|
'<span class="nx-badge" style="background:rgba(16,185,129,.15);color:#10b981">📈 Chart.js</span>' +
|
|
'<span class="nx-badge" style="background:rgba(245,158,11,.15);color:#f59e0b">' + data.pages + ' pages</span>' +
|
|
'<span class="nx-badge" style="background:rgba(139,92,246,.15);color:#8b5cf6">' + data.size_kb + 'KB</span>' +
|
|
'</div>';
|
|
|
|
var card = '<div style="margin:10px 0;padding:18px;background:linear-gradient(135deg,rgba(99,102,241,.08),rgba(139,92,246,.04));border:1px solid rgba(99,102,241,.2);border-radius:14px">' +
|
|
'<div style="display:flex;align-items:center;gap:12px">' +
|
|
'<div style="width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff">📄</div>' +
|
|
'<div style="flex:1"><div style="font-weight:700;font-size:15px;color:#1a1a2e">' + title + '</div>' +
|
|
'<div style="font-size:12px;color:#6b7280;margin-top:2px">' + subtitle + '</div></div>' +
|
|
'<a href="' + url + '" target="_blank" style="padding:9px 18px;background:#6366f1;color:#fff;border-radius:10px;text-decoration:none;font-weight:600;font-size:13px">↓ Télécharger</a>' +
|
|
'</div></div>';
|
|
|
|
addMsg('assistant', badges + card, (data.total_ms/1000).toFixed(1));
|
|
|
|
// Open in right preview panel if function exists
|
|
if (typeof openPreview === 'function') {
|
|
try { openPreview(url, 'pdf'); } catch(e) {}
|
|
} else if (typeof switchPreviewTab === 'function') {
|
|
// Load PDF into iframe preview
|
|
try {
|
|
var pb = document.getElementById('previewBody');
|
|
if (pb) {
|
|
pb.innerHTML = '<iframe src="' + url + '" style="width:100%;height:100%;border:none"></iframe>';
|
|
var pp = document.querySelector('.preview-panel'); if (pp) pp.style.width = '50%';
|
|
}
|
|
} catch(e) {}
|
|
}
|
|
})
|
|
.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 PDF Premium temporairement indisponible.', '0');
|
|
});
|
|
return;
|
|
}
|
|
// === END AMBRE-V9-PDF-PREMIUM ===
|
|
|
|
JS;
|
|
|
|
$new_c = substr($c, 0, $idx) . $v9_block . substr($c, $idx);
|
|
$delta = strlen($new_c) - $orig_size;
|
|
|
|
// Backup + write
|
|
$backup = "/opt/wevads/vault/wevia.html.GOLD-" . date("Ymd-His") . "-v9-pdf-premium";
|
|
@copy($path, $backup);
|
|
$wrote = @file_put_contents($path, $new_c);
|
|
|
|
echo json_encode(["orig"=>$orig_size, "new"=>strlen($new_c), "delta"=>$delta, "wrote"=>$wrote, "backup"=>basename($backup)]);
|