auto-sync-2230
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated_at": "2026-04-23T22:20:02.647323",
|
||||
"generated_at": "2026-04-23T22:30:02.950941",
|
||||
"stats": {
|
||||
"total": 52,
|
||||
"pending": 33,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-23T20:21:24+00:00",
|
||||
"ts": "2026-04-23T20:27:06+00:00",
|
||||
"summary": {
|
||||
"total_categories": 8,
|
||||
"total_kpis": 64,
|
||||
|
||||
@@ -10022,5 +10022,35 @@
|
||||
"status": "PENDING_APPROVAL",
|
||||
"created_at": "2026-04-23T20:22:35+00:00",
|
||||
"source": "opus4-autowire-early-v2"
|
||||
},
|
||||
"807": {
|
||||
"name": "wevia_self_introspection",
|
||||
"triggers": [
|
||||
"self introspection"
|
||||
],
|
||||
"cmd": "echo \"=== WIRED_PENDING ===\"; ls \/var\/www\/html\/api\/wired-pending\/ 2>\/dev\/null | wc -l; echo \"=== STUBS_PENDING_WIRING ===\"; grep -rln \"PENDING_WIRING\" \/var\/www\/html\/api\/*.php 2>\/dev\/null | wc -l; echo \"=== SKILLS_DIR ===\"; ls \/opt\/wevia-brain\/skills\/ 2>\/dev\/null | wc -l; echo \"=== OPUS_INTENTS_COUNT ===\"; grep -c \"^\\s*\\[\" \/var\/www\/html\/api\/opus-intents.php 2>\/dev\/null || echo 0; echo \"=== TOTAL_INTENT_FILES ===\"; find \/var\/www\/html\/api -name \"*intent*.php\" 2>\/dev\/null | wc -l",
|
||||
"status": "PENDING_APPROVAL",
|
||||
"created_at": "2026-04-23T20:26:29+00:00",
|
||||
"source": "opus4-autowire-early-v2"
|
||||
},
|
||||
"808": {
|
||||
"name": "wevia_orphans_3_rescue",
|
||||
"triggers": [
|
||||
"orphans rescue 3"
|
||||
],
|
||||
"cmd": "cd \/var\/www\/html && echo \"=== ORPHAN_CANDIDATES ===\"; for f in wtp*.html weval-technology-platform.html wevia*.html; do [ -f \"$f\" ] && incoming=$(grep -l \"href=\\\"$f\\\"\" *.html 2>\/dev\/null | wc -l) && echo \"$f incoming_links=$incoming\"; done | sort -k2 -t= -n | head -10; echo \"=== V83_ORPHANS_REPORT ===\"; curl -sS -m 5 http:\/\/localhost\/api\/v83-orphans-report.php 2>\/dev\/null | head -30",
|
||||
"status": "PENDING_APPROVAL",
|
||||
"created_at": "2026-04-23T20:26:31+00:00",
|
||||
"source": "opus4-autowire-early-v2"
|
||||
},
|
||||
"809": {
|
||||
"name": "wevia_whatsapp_rotation_check",
|
||||
"triggers": [
|
||||
"whatsapp rotation check"
|
||||
],
|
||||
"cmd": "echo \"=== WHATSAPP_SECRETS ===\"; sudo -n grep -c \"WHATSAPP\" \/etc\/weval\/secrets.env 2>\/dev\/null || echo 0; echo \"=== SECRETS_LAST_MOD ===\"; sudo -n stat -c \"%y\" \/etc\/weval\/secrets.env 2>\/dev\/null; echo \"=== BLADE_HTTP ===\"; curl -sS -o \/dev\/null -w \"%{http_code}\" -m 5 https:\/\/weval-consulting.com\/api\/blade-agent.php 2>\/dev\/null; echo; echo \"=== SELENIUM_CHROME_ACCOUNT_FILE ===\"; grep -rln \"selenium_chrome_account\" \/var\/www\/html\/api\/ 2>\/dev\/null | head -3; echo \"=== WHATSAPP_RENEWAL_URL ===\"; echo \"https:\/\/business.facebook.com\/settings\/system-users\"",
|
||||
"status": "PENDING_APPROVAL",
|
||||
"created_at": "2026-04-23T20:26:33+00:00",
|
||||
"source": "opus4-autowire-early-v2"
|
||||
}
|
||||
}
|
||||
12
api/wired-pending/intent-opus4-wevia_orphans_3_rescue.php
Normal file
12
api/wired-pending/intent-opus4-wevia_orphans_3_rescue.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
return array (
|
||||
'name' => 'wevia_orphans_3_rescue',
|
||||
'triggers' =>
|
||||
array (
|
||||
0 => 'orphans rescue 3',
|
||||
),
|
||||
'cmd' => 'cd /var/www/html && echo "=== ORPHAN_CANDIDATES ==="; for f in wtp*.html weval-technology-platform.html wevia*.html; do [ -f "$f" ] && incoming=$(grep -l "href=\\"$f\\"" *.html 2>/dev/null | wc -l) && echo "$f incoming_links=$incoming"; done | sort -k2 -t= -n | head -10; echo "=== V83_ORPHANS_REPORT ==="; curl -sS -m 5 http://localhost/api/v83-orphans-report.php 2>/dev/null | head -30',
|
||||
'status' => 'PENDING_APPROVAL',
|
||||
'created_at' => '2026-04-23T20:26:31+00:00',
|
||||
'source' => 'opus4-autowire-early-v2',
|
||||
);
|
||||
12
api/wired-pending/intent-opus4-wevia_self_introspection.php
Normal file
12
api/wired-pending/intent-opus4-wevia_self_introspection.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
return array (
|
||||
'name' => 'wevia_self_introspection',
|
||||
'triggers' =>
|
||||
array (
|
||||
0 => 'self introspection',
|
||||
),
|
||||
'cmd' => 'echo "=== WIRED_PENDING ==="; ls /var/www/html/api/wired-pending/ 2>/dev/null | wc -l; echo "=== STUBS_PENDING_WIRING ==="; grep -rln "PENDING_WIRING" /var/www/html/api/*.php 2>/dev/null | wc -l; echo "=== SKILLS_DIR ==="; ls /opt/wevia-brain/skills/ 2>/dev/null | wc -l; echo "=== OPUS_INTENTS_COUNT ==="; grep -c "^\\s*\\[" /var/www/html/api/opus-intents.php 2>/dev/null || echo 0; echo "=== TOTAL_INTENT_FILES ==="; find /var/www/html/api -name "*intent*.php" 2>/dev/null | wc -l',
|
||||
'status' => 'PENDING_APPROVAL',
|
||||
'created_at' => '2026-04-23T20:26:29+00:00',
|
||||
'source' => 'opus4-autowire-early-v2',
|
||||
);
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
return array (
|
||||
'name' => 'wevia_whatsapp_rotation_check',
|
||||
'triggers' =>
|
||||
array (
|
||||
0 => 'whatsapp rotation check',
|
||||
),
|
||||
'cmd' => 'echo "=== WHATSAPP_SECRETS ==="; sudo -n grep -c "WHATSAPP" /etc/weval/secrets.env 2>/dev/null || echo 0; echo "=== SECRETS_LAST_MOD ==="; sudo -n stat -c "%y" /etc/weval/secrets.env 2>/dev/null; echo "=== BLADE_HTTP ==="; curl -sS -o /dev/null -w "%{http_code}" -m 5 https://weval-consulting.com/api/blade-agent.php 2>/dev/null; echo; echo "=== SELENIUM_CHROME_ACCOUNT_FILE ==="; grep -rln "selenium_chrome_account" /var/www/html/api/ 2>/dev/null | head -3; echo "=== WHATSAPP_RENEWAL_URL ==="; echo "https://business.facebook.com/settings/system-users"',
|
||||
'status' => 'PENDING_APPROVAL',
|
||||
'created_at' => '2026-04-23T20:26:33+00:00',
|
||||
'source' => 'opus4-autowire-early-v2',
|
||||
);
|
||||
8
proofs/wave278-wtp-orphans/run.log
Normal file
8
proofs/wave278-wtp-orphans/run.log
Normal file
@@ -0,0 +1,8 @@
|
||||
=== WTP ORPHANS PANEL TEST (wave-278) ===
|
||||
login: 302
|
||||
WTP loaded
|
||||
panel exists: false
|
||||
PANEL NOT FOUND - grep check
|
||||
html contains wtp-orphans-panel: NO
|
||||
video: proofs/wave278-wtp-orphans/wtp-orphans-e2e.webm
|
||||
DONE
|
||||
BIN
proofs/wave278-wtp-orphans/wtp-orphans-e2e.webm
Normal file
BIN
proofs/wave278-wtp-orphans/wtp-orphans-e2e.webm
Normal file
Binary file not shown.
@@ -5346,5 +5346,132 @@ if (typeof window.navigateTo === 'function'){
|
||||
setInterval(updateQuick, 30000);
|
||||
})();
|
||||
</script>
|
||||
|
||||
<!-- === WAVE-277 PHASE-7 WTP ORPHANS AUTO-INTEGRATION (Opus wave-278) === -->
|
||||
<!-- Doctrine 14: enrichir pas écraser | Zero régression | Load registry API + render cards -->
|
||||
<style id="wtp-orphans-style">
|
||||
#wtp-orphans-panel{margin:40px auto;max-width:1400px;padding:0 20px;font-family:'Inter',system-ui,sans-serif}
|
||||
#wtp-orphans-panel .op-hdr{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:20px;flex-wrap:wrap;gap:16px}
|
||||
#wtp-orphans-panel .op-title{font-size:1.6rem;font-weight:700;color:#f1f5f9;margin:0;letter-spacing:-.02em}
|
||||
#wtp-orphans-panel .op-subtitle{font-size:.85rem;color:#94a3b8;margin-top:6px}
|
||||
#wtp-orphans-panel .op-kpis{display:flex;gap:16px;flex-wrap:wrap}
|
||||
#wtp-orphans-panel .op-kpi{background:rgba(15,23,42,.6);border:1px solid rgba(148,163,184,.15);padding:10px 16px;border-radius:10px;backdrop-filter:blur(8px)}
|
||||
#wtp-orphans-panel .op-kpi-val{font-size:1.2rem;font-weight:700;color:#06b6d4}
|
||||
#wtp-orphans-panel .op-kpi-lbl{font-size:.7rem;color:#94a3b8;text-transform:uppercase;letter-spacing:1px}
|
||||
#wtp-orphans-panel .op-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}
|
||||
#wtp-orphans-panel .op-tab{background:rgba(30,41,59,.8);border:1px solid rgba(148,163,184,.15);color:#cbd5e1;padding:8px 14px;border-radius:8px;font-size:.8rem;cursor:pointer;transition:all .15s}
|
||||
#wtp-orphans-panel .op-tab:hover{background:rgba(6,182,212,.1);border-color:rgba(6,182,212,.4);color:#06b6d4}
|
||||
#wtp-orphans-panel .op-tab.ac{background:rgba(6,182,212,.15);border-color:#06b6d4;color:#06b6d4}
|
||||
#wtp-orphans-panel .op-tab .cnt{margin-left:6px;background:rgba(148,163,184,.2);padding:1px 7px;border-radius:10px;font-size:.7rem}
|
||||
#wtp-orphans-panel .op-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
|
||||
#wtp-orphans-panel .op-card{background:rgba(15,23,42,.5);border:1px solid rgba(148,163,184,.15);border-radius:10px;padding:12px;transition:all .15s;cursor:pointer;text-decoration:none;display:flex;flex-direction:column;gap:8px}
|
||||
#wtp-orphans-panel .op-card:hover{border-color:#06b6d4;background:rgba(6,182,212,.06);transform:translateY(-2px)}
|
||||
#wtp-orphans-panel .op-card .thumb{width:100%;aspect-ratio:16/10;background:rgba(30,41,59,.8);border-radius:6px;background-size:cover;background-position:center;flex-shrink:0}
|
||||
#wtp-orphans-panel .op-card .thumb.no-thumb{display:flex;align-items:center;justify-content:center;color:#64748b;font-size:2rem}
|
||||
#wtp-orphans-panel .op-card .name{font-size:.82rem;font-weight:600;color:#e2e8f0;margin:0;word-break:break-word}
|
||||
#wtp-orphans-panel .op-card .badge{font-size:.65rem;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;display:inline-block;padding:2px 6px;background:rgba(30,41,59,.6);border-radius:4px;width:fit-content}
|
||||
#wtp-orphans-panel .op-search{background:rgba(15,23,42,.6);border:1px solid rgba(148,163,184,.2);color:#e2e8f0;padding:8px 14px;border-radius:8px;font-size:.85rem;margin-bottom:14px;width:280px;outline:none}
|
||||
#wtp-orphans-panel .op-search:focus{border-color:#06b6d4}
|
||||
</style>
|
||||
|
||||
<div id="wtp-orphans-panel">
|
||||
<div class="op-hdr">
|
||||
<div>
|
||||
<h2 class="op-title">🔗 Orphans Auto-Registry</h2>
|
||||
<div class="op-subtitle">Pages HTML non-reliées à WTP — rattachement zéro écrasement · rendu temps réel depuis <code>/api/wtp-orphans-registry.php</code></div>
|
||||
</div>
|
||||
<div class="op-kpis" id="op-kpis-container">
|
||||
<div class="op-kpi"><div class="op-kpi-val" id="op-total">—</div><div class="op-kpi-lbl">Total HTML</div></div>
|
||||
<div class="op-kpi"><div class="op-kpi-val" id="op-linked">—</div><div class="op-kpi-lbl">Linked WTP</div></div>
|
||||
<div class="op-kpi"><div class="op-kpi-val" id="op-orphans">—</div><div class="op-kpi-lbl">Orphans</div></div>
|
||||
<div class="op-kpi"><div class="op-kpi-val" id="op-coverage">—</div><div class="op-kpi-lbl">Link rate</div></div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="text" class="op-search" id="op-search" placeholder="🔍 filter by name..." />
|
||||
<div class="op-tabs" id="op-tabs"></div>
|
||||
<div class="op-grid" id="op-grid"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(async function wtpOrphans(){
|
||||
try {
|
||||
const r = await fetch('/api/wtp-orphans-registry.php?t='+Date.now());
|
||||
const d = await r.json();
|
||||
if(!d.ok) return;
|
||||
|
||||
// KPIs
|
||||
document.getElementById('op-total').textContent = d.total_html;
|
||||
document.getElementById('op-linked').textContent = d.linked_in_wtp;
|
||||
document.getElementById('op-orphans').textContent = d.orphans_count;
|
||||
document.getElementById('op-coverage').textContent = d.link_rate_pct + '%';
|
||||
|
||||
// Tabs per category - hide legacy/doublon/deprecated by default (less relevant)
|
||||
const cats = d.categories || {};
|
||||
const catOrder = ['ACTIVE_HUB','ACTIVE_DASHBOARD','ACTIVE_ADMIN','ACTIVE_AGENT','ACTIVE_BLADE','ACTIVE_AI','ACTIVE_CRM','ACTIVE_PRODUCT','ACTIVE_OTHER','LEGACY','DOUBLON','TESTS','DEPRECATED'];
|
||||
const tabsEl = document.getElementById('op-tabs');
|
||||
const catsPresent = catOrder.filter(c => cats[c] && cats[c].length > 0);
|
||||
const allBtn = `<button class="op-tab ac" data-cat="__all">All<span class="cnt">${d.orphans_count}</span></button>`;
|
||||
tabsEl.innerHTML = allBtn + catsPresent.map(c => {
|
||||
const lbl = c.replace('ACTIVE_','').replace('_',' ');
|
||||
return `<button class="op-tab" data-cat="${c}">${lbl}<span class="cnt">${cats[c].length}</span></button>`;
|
||||
}).join('');
|
||||
|
||||
// Merge flat list with category info
|
||||
const all = [];
|
||||
for(const c of catsPresent) {
|
||||
for(const item of cats[c]) {
|
||||
all.push({...item, _cat: c});
|
||||
}
|
||||
}
|
||||
|
||||
const gridEl = document.getElementById('op-grid');
|
||||
const searchEl = document.getElementById('op-search');
|
||||
let activeCat = '__all';
|
||||
let searchTerm = '';
|
||||
|
||||
function render(){
|
||||
const filtered = all.filter(i => {
|
||||
if(activeCat !== '__all' && i._cat !== activeCat) return false;
|
||||
if(searchTerm && !i.name.toLowerCase().includes(searchTerm)) return false;
|
||||
return true;
|
||||
});
|
||||
if(filtered.length === 0) {
|
||||
gridEl.innerHTML = '<div style="color:#94a3b8;padding:40px;text-align:center;grid-column:1/-1">No pages match</div>';
|
||||
return;
|
||||
}
|
||||
gridEl.innerHTML = filtered.map(i => {
|
||||
const url = '/' + i.name;
|
||||
const thumb = i.thumb_url ? `<div class="thumb" style="background-image:url('${i.thumb_url}')"></div>` : `<div class="thumb no-thumb">📄</div>`;
|
||||
const catBadge = i._cat.replace('ACTIVE_','').toLowerCase();
|
||||
return `<a class="op-card" href="${url}" target="_blank" title="${i.name}">${thumb}<div class="name">${i.name.replace('.html','')}</div><span class="badge">${catBadge}</span></a>`;
|
||||
}).join('');
|
||||
}
|
||||
|
||||
// Tab click
|
||||
tabsEl.addEventListener('click', (e) => {
|
||||
const t = e.target.closest('.op-tab');
|
||||
if(!t) return;
|
||||
tabsEl.querySelectorAll('.op-tab').forEach(x => x.classList.remove('ac'));
|
||||
t.classList.add('ac');
|
||||
activeCat = t.dataset.cat;
|
||||
render();
|
||||
});
|
||||
|
||||
// Search input
|
||||
searchEl.addEventListener('input', (e) => {
|
||||
searchTerm = e.target.value.toLowerCase().trim();
|
||||
render();
|
||||
});
|
||||
|
||||
render();
|
||||
console.log('[WTP Orphans] loaded', d.orphans_count, 'orphans across', catsPresent.length, 'active categories');
|
||||
} catch(e) {
|
||||
console.warn('[WTP Orphans] load failed:', e);
|
||||
document.getElementById('wtp-orphans-panel').style.display = 'none';
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
<!-- === END WAVE-277 PHASE-7 === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user