auto-sync-0140

This commit is contained in:
opus
2026-04-22 01:40:03 +02:00
parent 4193cac577
commit d9016feadc
8 changed files with 86 additions and 6 deletions

View File

@@ -0,0 +1,24 @@
<?php
header("Content-Type: text/plain");
$gold = "/opt/wevads/vault/wevia.html.GOLD-20260421-230109-pre-safe-write";
$current = "/var/www/html/wevia.html";
$g_content = @file_get_contents($gold);
$c_content = @file_get_contents($current);
echo "GOLD size: " . strlen($g_content) . "\n";
echo "Current size: " . strlen($c_content) . "\n\n";
// Parse both with node to see which has error
file_put_contents("/tmp/gold.js", "void function(){" . extract_main_script($g_content) . "}();");
file_put_contents("/tmp/current.js", "void function(){" . extract_main_script($c_content) . "}();");
echo "=== GOLD node --check ===\n";
echo @shell_exec("node --check /tmp/gold.js 2>&1 | head -10");
echo "\n=== Current node --check ===\n";
echo @shell_exec("node --check /tmp/current.js 2>&1 | head -10");
function extract_main_script($html) {
preg_match('/<script>(.*?)<\/script>/s', $html, $m);
return $m[1] ?? "";
}

13
api/ambre-gold-list.php Normal file
View File

@@ -0,0 +1,13 @@
<?php
header("Content-Type: application/json");
$golds = glob("/opt/wevads/vault/wevia.html.GOLD-2026*");
usort($golds, function($a,$b){return filemtime($b)-filemtime($a);});
$out = [];
foreach (array_slice($golds, 0, 20) as $g) {
$out[] = [
"name" => basename($g),
"size" => filesize($g),
"mtime" => date("c", filemtime($g)),
];
}
echo json_encode($out, JSON_PRETTY_PRINT);

View File

@@ -80,7 +80,7 @@
"workerIndex": 0,
"parallelIndex": 0,
"status": "passed",
"duration": 4665,
"duration": 4765,
"errors": [],
"stdout": [
{
@@ -104,7 +104,7 @@
],
"stderr": [],
"retry": 0,
"startTime": "2026-04-21T23:27:03.240Z",
"startTime": "2026-04-21T23:37:33.159Z",
"annotations": [],
"attachments": [
{
@@ -133,8 +133,8 @@
],
"errors": [],
"stats": {
"startTime": "2026-04-21T23:27:02.653Z",
"duration": 5440.364,
"startTime": "2026-04-21T23:37:32.630Z",
"duration": 5456.215,
"expected": 1,
"skipped": 0,
"unexpected": 0,

View File

@@ -0,0 +1,7 @@
<?php
header("Content-Type: application/json");
$base = "/var/www/html/api/ambre-pw-tests/tests";
$spec = base64_decode("Y29uc3QgeyB0ZXN0IH0gPSByZXF1aXJlKCJAcGxheXdyaWdodC90ZXN0Iik7Cgp0ZXN0KCJWMjIgwrcgc21va2UgYWZ0ZXIgcmVnZXggZml4IDIiLCBhc3luYyAoeyBwYWdlIH0pID0+IHsKICB0ZXN0LnNldFRpbWVvdXQoNjAwMDApOwogIGNvbnN0IGVycm9ycyA9IFtdOwogIHBhZ2Uub24oInBhZ2VlcnJvciIsIGUgPT4gZXJyb3JzLnB1c2goZS5tZXNzYWdlKSk7CiAgcGFnZS5vbigiY29uc29sZSIsIG1zZyA9PiB7CiAgICBpZiAobXNnLnR5cGUoKSA9PT0gIndhcm5pbmciIHx8IG1zZy50eXBlKCkgPT09ICJlcnJvciIpIHsKICAgICAgZXJyb3JzLnB1c2gobXNnLnR5cGUoKSArICI6ICIgKyBtc2cudGV4dCgpLnN1YnN0cmluZygwLCAyMDApKTsKICAgIH0KICB9KTsKICAKICBhd2FpdCBwYWdlLmdvdG8oIi93ZXZpYS5odG1sIik7CiAgYXdhaXQgcGFnZS53YWl0Rm9yVGltZW91dCgzNTAwKTsKICAKICBjb25zb2xlLmxvZygiZXJyb3JzOiIsIEpTT04uc3RyaW5naWZ5KGVycm9ycywgbnVsbCwgMikpOwogIAogIC8vIE5vdyB0cnkgc2VuZGluZyBhIG1lc3NhZ2UKICBjb25zdCBpbnB1dCA9IHBhZ2UubG9jYXRvcigiI21zZ0lucHV0Iik7CiAgYXdhaXQgaW5wdXQuZmlsbCgiY2FsY3VsZSAyKzIiKTsKICBhd2FpdCBwYWdlLndhaXRGb3JUaW1lb3V0KDQwMCk7CiAgYXdhaXQgaW5wdXQucHJlc3MoIkVudGVyIik7CiAgCiAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpOwogIGxldCByZXBseSA9ICIiOwogIHdoaWxlIChEYXRlLm5vdygpIC0gc3RhcnQgPCAyMDAwMCkgewogICAgY29uc3Qgc3RhdGUgPSBhd2FpdCBwYWdlLmV2YWx1YXRlKCgpID0+IHsKICAgICAgY29uc3QgYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tc2cuYXNzaXN0YW50IC5idWJibGUnKTsKICAgICAgcmV0dXJuIGEubGVuZ3RoID4gMCA/IGFbYS5sZW5ndGggLSAxXS5pbm5lclRleHQgOiAiIjsKICAgIH0pOwogICAgaWYgKHN0YXRlICYmICFzdGF0ZS5zdGFydHNXaXRoKCJCb25qb3VyICEgQ29tbWVudCIpKSB7CiAgICAgIHJlcGx5ID0gc3RhdGU7CiAgICAgIGJyZWFrOwogICAgfQogICAgYXdhaXQgcGFnZS53YWl0Rm9yVGltZW91dCgxNTAwKTsKICB9CiAgY29uc29sZS5sb2coIlJlcGx5OiIsIHJlcGx5LnN1YnN0cmluZygwLCAyNTApKTsKICAKICBhd2FpdCBwYWdlLnNjcmVlbnNob3QoeyBwYXRoOiAib3V0cHV0L3YyMi1jYWxjLnBuZyIgfSk7Cn0pOwo=");
foreach (glob("$base/*.spec.js") as $old) @unlink($old);
$written = @file_put_contents("$base/v22-smoke.spec.js", $spec);
echo json_encode(["written" => $written]);

View File

@@ -0,0 +1,36 @@
<?php
header("Content-Type: text/plain");
$file = "/var/www/html/wevia.html";
$content = file_get_contents($file);
$len_before = strlen($content);
// The broken regex on line 1503 uses [.*+?^${}()|[\]\\/] which has [] inside [] chars -- INVALID
// Replace with safer version using non-class-based escape
$broken = 'var _escUrl = finalFileUrl.replace(/[.*+?^${}()|[\]\\\\\/]/g, \'\\\\$&\');';
$fixed = 'var _escUrl = finalFileUrl.split(/([^A-Za-z0-9])/).map(function(p,i){return i%2?"\\\\"+p:p;}).join("");';
if (strpos($content, $broken) !== false) {
$new_content = str_replace($broken, $fixed, $content);
// GOLD backup
$gold = "/opt/wevads/vault/wevia.html.GOLD-" . date("Ymd-His") . "-regex-fix";
@copy($file, $gold);
// Write
@chattr_remove(); // ignore - chattr might not be set
file_put_contents($file, $new_content);
echo "FIXED! delta=" . (strlen($new_content) - $len_before) . " gold=$gold\n";
} else {
echo "Pattern not found in file\n";
// Show what we have at line 1503
$lines = explode("\n", $content);
echo "Line 1503: " . ($lines[1502] ?? "N/A") . "\n";
// Extract exact bytes
$line = $lines[1502];
$pos_var = strpos($line, "var _escUrl");
if ($pos_var !== false) {
echo "Bytes 60-200: " . bin2hex(substr($line, 60, 50)) . "\n";
}
}
function chattr_remove(){ @shell_exec("chattr -i /var/www/html/wevia.html 2>&1"); }

View File

@@ -1,7 +1,7 @@
{
"ok": true,
"version": "V83-business-kpi",
"ts": "2026-04-21T23:33:41+00:00",
"ts": "2026-04-21T23:39:41+00:00",
"summary": {
"total_categories": 8,
"total_kpis": 64,

View File

@@ -1500,7 +1500,7 @@ function send() {
finalFileUrl = data.file_url;
// Format final response with link if present
if (currentChunkEl && finalFileUrl) {
var _escUrl = finalFileUrl.replace(/[.*+?^${}()|[\]\\\/]/g, '\\$&'); var linkHtml = fullResponse.replace(new RegExp(_escUrl, 'g'), '<a href="'+finalFileUrl+'" target="_blank" style="color:#2563eb;font-weight:600">'+finalFileUrl+'</a>');
var _escUrl = finalFileUrl.split(/([^A-Za-z0-9])/).map(function(p,i){return i%2?"\\"+p:p;}).join(""); var linkHtml = fullResponse.replace(new RegExp(_escUrl, 'g'), '<a href="'+finalFileUrl+'" target="_blank" style="color:#2563eb;font-weight:600">'+finalFileUrl+'</a>');
currentChunkEl.innerHTML = linkHtml;
}
var elapsed = ((performance.now() - startTime) / 1000).toFixed(1);