98 lines
4.9 KiB
PHP
98 lines
4.9 KiB
PHP
<?php
|
|
header("Content-Type: application/json");
|
|
$path = "/var/www/html/wevia.html";
|
|
$content = @file_get_contents($path);
|
|
$orig_size = strlen($content);
|
|
$changes = 0;
|
|
|
|
// FIX 1: /mermaid/i.test → indexOf (removes runtime regex parse issue)
|
|
$old1 = "if(e&&e.message&&/mermaid/i.test(e.message)) return true;";
|
|
$new1 = "if(e&&e.message&&String(e.message).toLowerCase().indexOf('mermaid')>=0) return true;";
|
|
if (strpos($content, $old1) !== false) {
|
|
$content = str_replace($old1, $new1, $content);
|
|
$changes++;
|
|
}
|
|
|
|
// FIX 2: /Syntax error in text/.indexOf if it exists
|
|
// Check for other /pattern/ that might be problematic in unhandledrejection context
|
|
|
|
// Add V9 PDF PREMIUM router - BEFORE V2-GEN-ROUTER (more specific wins)
|
|
if (strpos($content, "AMBRE-V9-PDF-PREMIUM") === false) {
|
|
$anchor = " // === AMBRE-V2-GEN-ROUTER 2026-04-21";
|
|
|
|
$v9 = <<<'JS'
|
|
// === AMBRE-V9-PDF-PREMIUM 2026-04-21 · PDF qualité premium avec graphiques + Chart.js ===
|
|
// Circuit additif · ne remplace PAS V2 (qui gère docs standards)
|
|
// Déclencheurs: "pdf premium", "rapport premium", "pdf qualite", "pdf avec graphique"
|
|
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)) {
|
|
var _topic = text.replace(/^(?:cr[eé]e[zr]?|g[eé]n[eè]re[zr]?|fais|fait|produi[st])\s+(?:moi\s+)?(?:un\s+)?(?:rapport|pdf)\s+(?:premium|pro|complet|qualit[eé]|hd|avec\s+graphique)?\s*(?:sur|pour|de|du|:|à\s+propos\s+de)?\s*/i, '').trim();
|
|
if (_topic.length < 5) _topic = text;
|
|
fetch('/api/ambre-tool-pdf-premium.php', {
|
|
method: 'POST',
|
|
headers: {'Content-Type':'application/json'},
|
|
body: JSON.stringify({topic: _topic})
|
|
})
|
|
.then(function(r){ return r.text().then(function(t){ try{return JSON.parse(t);}catch(e){return null;} }); })
|
|
.then(function(data){
|
|
hideThinking();
|
|
var elapsed = ((performance.now()-startTime)/1000).toFixed(1);
|
|
var resp;
|
|
if (data && data.success) {
|
|
resp = '📊 **PDF Premium généré** : ' + data.title + '\n\n' +
|
|
'- **' + data.sections + ' sections** avec contenu détaillé\n' +
|
|
'- **' + data.kpis + ' KPI** visualisés\n' +
|
|
'- **Graphique interactif** (' + (data.has_chart ? 'Chart.js intégré' : 'aucun') + ')\n' +
|
|
'- ~**' + data.pages + ' pages** · ' + data.size_kb + ' KB\n\n' +
|
|
'📥 [**Télécharger PDF**](' + data.url + ')\n' +
|
|
'🖼 [Prévisualiser HTML](' + data.html_preview + ')';
|
|
} else {
|
|
resp = '❌ Génération PDF Premium échouée. ' + (data && data.error ? data.error : 'Réessayez.');
|
|
}
|
|
chatHistory.push({role:'assistant', content:resp});
|
|
var msgEl = addMsg('assistant', resp, elapsed);
|
|
if (msgEl && msgEl.querySelector('.msg-inner')) {
|
|
var b = document.createElement('div'); b.className = 'nx-badges';
|
|
b.innerHTML = '<span class="nx-badge" style="background:rgba(124,58,237,0.15);color:#7c3aed">📊 PDF Premium</span>' +
|
|
'<span class="nx-badge" style="background:rgba(16,185,129,0.15);color:#10b981">📈 Chart.js</span>';
|
|
msgEl.querySelector('.msg-inner').appendChild(b);
|
|
}
|
|
// Open artifact panel with HTML preview
|
|
if (data && data.html_preview && typeof openPreview === 'function') {
|
|
try { openPreview(data.html_preview, 'pdf'); } catch(e){}
|
|
}
|
|
busy=false; try{var s=document.getElementById("sendBtn");if(s)s.disabled=false;}catch(e){}
|
|
try{var m=document.getElementById("msgInput");if(m){m.value="";m.disabled=false;}}catch(e){}
|
|
})
|
|
.catch(function(err){
|
|
hideThinking();
|
|
addMsg('assistant', '❌ PDF Premium temporairement indisponible, réessayez.', '0');
|
|
busy=false;
|
|
try{var s=document.getElementById("sendBtn");if(s)s.disabled=false;}catch(e){}
|
|
});
|
|
return;
|
|
}
|
|
// === END AMBRE-V9-PDF-PREMIUM ===
|
|
|
|
JS;
|
|
|
|
if (strpos($content, $anchor) !== false) {
|
|
$content = str_replace($anchor, $v9 . $anchor, $content);
|
|
$changes++;
|
|
}
|
|
}
|
|
|
|
if ($changes === 0) { echo json_encode(["error"=>"no changes", "orig"=>$orig_size]); exit; }
|
|
|
|
$backup = "/opt/wevads/vault/wevia.html.GOLD-" . date("Ymd-His") . "-v9-pdf-premium";
|
|
@copy($path, $backup);
|
|
$wrote = @file_put_contents($path, $content);
|
|
echo json_encode([
|
|
"orig" => $orig_size,
|
|
"new" => strlen($content),
|
|
"delta" => strlen($content) - $orig_size,
|
|
"changes" => $changes,
|
|
"wrote" => $wrote,
|
|
"backup" => basename($backup),
|
|
]);
|