From 4782e203218bc955c064409762a4e6b491796e7f Mon Sep 17 00:00:00 2001 From: Opus Date: Thu, 23 Apr 2026 20:32:06 +0200 Subject: [PATCH] =?UTF-8?q?feat(v3=20ENRICHI=20comme=20V2):=20682L=2053KB?= =?UTF-8?q?=20=C2=B7=20Solution=20Scanner=20+=20Social=20items=20tops=20+?= =?UTF-8?q?=20Sovereign=20detailles=20+=20Leads=20live=5Flead=20+=20Compet?= =?UTF-8?q?itors=20scout=5Fscans?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enrichissement v3 suite Yacine AERNCIHIR COMME SON PRECEDENT. Ajouts par section: III. Social Signals Hub - Items tops par channel (LinkedIn likes/views, HN points/comments, Reddit subreddit, YouTube points, Mastodon) - Liens cliquables target blank - LLM Conversion Ideas: rendu depuis aggregated_ideas (12 items titres + chips inspired) - Fallback si objects structures complets IV. Paperclip Tasks - Utilise opportunities[] avec status in_progress/proposed/done - live_lead.contact + email + mql + sql_qualified affiches - wevia_tools (paperclip/wevia_master) + needs top 2 - revenue_mad K format + time_days VI. Sovereign AI Stack - Cards detaillees (plus de chips simples): category + maturity% + capability + live_state + use_for_conversion - Dot status rouge si alert=yes dans live_state - Lien url vers /wepredict.html etc - Style italic descriptif metier VII. Competitive Intel - category (SAP Consulting Maghreb...) + threat badge colore - 🕵 scout_scans count + scout_preset - competitors array joins (Vistex · Valoris · Capgemini MA) - weval_edge complet VIII. Top 10 Leads - opportunities[].live_lead enrichi - Email + contact + mql + sql_qualified checkmark - status (active_customer) en mono vert - notes description IX. NOUVELLE Solution Scanner (WAVE 252) - /api/solution-scanner.php - 8 solutions cards: rank + name + status + category + maturity% + mad_est + effort + reward + progress bar capabilities done/todo + days_to_prod - Top gaps chips couleur warning - Summary header italique APIs mapping correct desormais: - growth-conversion-advisor.php -> live_leads, live_scout, live_predict, matrix_revenue, recommendations, matrix, sovereign_ia (enrichi), competitors (enrichi), opportunities (pour tasks+leads) - social-signals-hub.php -> channels.xxx.items[], aggregated_ideas[] - solution-scanner.php -> solutions[], top_gaps[], summary - wevia-master-api.php -> chat Doctrine respecte: - NR 153/153 invariant - Zero suppression v2 - GOLD backup wave-v3-enrichi-* - chattr pattern - Zero backend touch --- growth-advisor-v3.html | 171 +++++ .../growth-advisor-v3.html.GOLD | 682 ++++++++++++++++++ 2 files changed, 853 insertions(+) create mode 100644 vault-gold/opus/wave-v3-enrichi-20260423-203205/growth-advisor-v3.html.GOLD diff --git a/growth-advisor-v3.html b/growth-advisor-v3.html index 659eb313f..dcd9fabfd 100644 --- a/growth-advisor-v3.html +++ b/growth-advisor-v3.html @@ -332,6 +332,11 @@ html::-webkit-scrollbar-thumb:hover,body::-webkit-scrollbar-thumb:hover{backgrou
VIII.

📋 Top 10 leads

Paperclip live
loading leads…
+ + +
IX.

🧠 Solution Scanner

Predictive · Wave 252 · AI PREDICT
+
Loading predictive analysis…
+ @@ -501,6 +506,172 @@ async function chat(){ m.scrollTop=m.scrollHeight; } + + +// === ENRICHISSEMENT v3 · sections riches V2 === + +// Override loadSocial avec items tops par channel + aggregated_ideas avec cards +async function loadSocial(){ + try{ + const r=await fetch(API_SOCIAL+'?cb='+Date.now()); + const d=await r.json(); + const ch=d.channels||{}; + const order=['linkedin','hackernews','reddit','youtube','mastodon']; + const icons={linkedin:'💼',hackernews:'🟧',reddit:'🔴',youtube:'📹',mastodon:'●'}; + const lbls={linkedin:'internal-db',hackernews:'Algolia API',reddit:'5 subs RSS',youtube:'HN YT-filtered',mastodon:'5 instances'}; + document.getElementById('social-strip').innerHTML=order.map(k=>{ + const c=ch[k]||{}; + const count=c.count!=null?c.count:((c.items||[]).length); + return '
'+(icons[k]||'·')+' '+k+'
'+count+'
'+esc(c.source||lbls[k]||'')+'
'; + }).join(''); + + // Tops par channel : top 3-5 items + let tops='
'; + order.forEach(k=>{ + const items=(ch[k]||{}).items||[]; + if(!items.length) return; + const top=items.slice(0,4); + tops+='
'+(icons[k]||'·')+' '+k+' TOP
'; + top.forEach(t=>{ + const metric=t.likes!=null?'♥'+t.likes+(t.views?' 👁'+t.views:''):(t.points!=null?'★'+t.points+(t.comments?' 💬'+t.comments:''):(t.subreddit||'')); + tops+='
'+esc((t.title||'—').slice(0,60))+''+(metric?' '+esc(metric)+'':'')+'
'; + }); + tops+='
'; + }); + tops+='
'; + const tgt=document.getElementById('social-strip'); + // Remove old tops if already there + const existingTops=document.getElementById('social-tops'); + if(existingTops)existingTops.remove(); + const wrap=document.createElement('div'); + wrap.id='social-tops'; + wrap.innerHTML=tops; + tgt.parentNode.insertBefore(wrap, tgt.nextSibling); + + // LLM Conversion Ideas : utilise aggregated_ideas (strings) ou genere via llm endpoint + const ags=d.aggregated_ideas||[]; + if(ags.length && typeof ags[0]==='string'){ + // Ce sont juste des titres - afficher en chips inspirants + document.getElementById('ideas').innerHTML='
'+ags.slice(0,12).map((title,i)=>'
#'+(i+1)+''+esc(title)+'
💡 inspired from social signals
').join('')+'
'; + } else if(ags.length && typeof ags[0]==='object'){ + document.getElementById('ideas').innerHTML=ags.slice(0,6).map(i=>'
#'+(i.rank||'·')+''+esc(i.title||'—')+''+(i.revenue_mad?''+Math.round(i.revenue_mad/1e3)+'K MAD':'')+'
'+(i.goal?'
🎯 '+esc(i.goal)+'
':'')+(i.source?'
📡 '+esc(i.source)+'
':'')+(i.tools?'
'+esc(Array.isArray(i.tools)?i.tools.join(' · '):i.tools)+'
':'')+(i.steps||[]).map(s=>'
'+esc(s)+'
').join('')+(i.kpi?'
📊 '+esc(i.kpi)+'
':'')+'
').join(''); + } else { + document.getElementById('ideas').innerHTML='
No ideas yet — try ?llm=1 endpoint
'; + } + }catch(e){ + document.getElementById('social-strip').innerHTML='
Social API err: '+esc(e.message)+'
'; + } +} + +// Override loadTasks : utilise opportunities[] avec status +async function loadTasks(){ + try{ + const r=await fetch(API_MAIN+'?cb='+Date.now()); + const d=await r.json(); + const ops=(d.opportunities||[]).slice(0,10); + if(!ops.length){document.getElementById('tasks').innerHTML='
No tasks
';return} + document.getElementById('tasks').innerHTML=ops.map(o=>{ + const st=(o.status||'proposed').toLowerCase().replace(/ /g,'_'); + const ll=o.live_lead||{}; + return '
#'+(o.effort||'·')+''+esc(o.name||'—')+''+esc(o.status||'proposed')+'
'+ + (o.revenue_mad?'
'+Math.round(o.revenue_mad/1e3)+'K MAD · '+(o.time_days||'?')+'j
':'')+ + (ll.contact||ll.email?'
'+esc([ll.contact,ll.email].filter(x=>x).join(' · '))+(ll.mql?' · MQL '+ll.mql+(ll.sql_qualified?' ✅':''):'')+'
':'')+ + (o.wevia_tools?'
🔧 '+esc(Array.isArray(o.wevia_tools)?o.wevia_tools.join(' · '):o.wevia_tools)+'
':'')+ + (o.needs?'
📋 '+esc(Array.isArray(o.needs)?o.needs.slice(0,2).join(' · '):o.needs)+'
':'')+ + '
'; + }).join(''); + }catch(e){document.getElementById('tasks').innerHTML='
Tasks err: '+esc(e.message)+'
'} +} + +// Override loadLeads : utilise opportunities[].live_lead enrichi +async function loadLeads(){ + try{ + const r=await fetch(API_MAIN+'?cb='+Date.now()); + const d=await r.json(); + const ops=(d.opportunities||[]).filter(o=>o.live_lead).slice(0,10); + if(!ops.length){document.getElementById('leads').innerHTML='
No leads
';return} + document.getElementById('leads').innerHTML=ops.map(o=>{ + const ll=o.live_lead||{}; + const meta=[ll.contact,ll.email&&ll.email!==ll.contact?ll.email:null].filter(x=>x).join(' · '); + return '
'+esc(ll.email||o.name)+'MQL '+(ll.mql||'?')+(ll.sql_qualified?' ✅':'')+'
'+ + (meta?'
'+esc(meta)+'
':'')+ + (ll.status?'
'+esc(ll.status)+'
':'')+ + (ll.notes?'
'+esc(ll.notes)+'
':'')+ + '
'; + }).join(''); + }catch(e){document.getElementById('leads').innerHTML='
Leads err: '+esc(e.message)+'
'} +} + +// Override chips sovereign : ajoute role/capability/live_state +async function enrichSovereign(){ + try{ + const r=await fetch(API_MAIN+'?cb='+Date.now()); + const d=await r.json(); + const sov=d.sovereign_ia||[]; + document.getElementById('sov-count').textContent=(d.sovereign_ia_count||sov.length)+' IA souveraines live'; + document.getElementById('chips').innerHTML='
'+sov.map(s=>{ + const live=(s.live_state||'').toLowerCase().includes('alert=yes')||((s.live_state||'').includes('down')); + const stc=live?'dn':'up'; + return '
'+esc(s.name||s.id)+''+(s.url?'':'')+'
'+(s.category?'
'+esc(s.category)+(s.maturity?' · '+s.maturity+'%':'')+'
':'')+(s.capability?'
'+esc(s.capability)+'
':'')+(s.live_state?'
'+(live?'🔴':'🟢')+' '+esc(s.live_state)+'
':'')+(s.use_for_conversion?'
💡 '+esc(s.use_for_conversion)+'
':'')+'
'; + }).join('')+'
'; + }catch(e){} +} + +// Override competitors avec structure vraie +async function enrichComps(){ + try{ + const r=await fetch(API_MAIN+'?cb='+Date.now()); + const d=await r.json(); + const cps=d.competitors||[]; + document.getElementById('comps').innerHTML=cps.map(c=>{ + const th=(c.threat||'low').toLowerCase(); + return '
'+esc(c.category||c.name||'—')+''+th+'
'+(c.scout_scans?'
🕵 '+c.scout_scans+' scout scans · '+esc(c.scout_preset||'')+'
':'')+(c.competitors?'
'+esc(Array.isArray(c.competitors)?c.competitors.join(' · '):c.competitors)+'
':'')+(c.weval_edge?'
'+esc(c.weval_edge)+'
':'')+'
'; + }).join(''); + }catch(e){} +} + +// Nouvelle section Solution Scanner +async function loadSolutionScanner(){ + try{ + const r=await fetch('/api/solution-scanner.php?cb='+Date.now()); + const d=await r.json(); + const sols=(d.solutions||[]).slice(0,8); + const gaps=d.top_gaps||[]; + const tgt=document.getElementById('solution-scanner'); + if(!tgt)return; + let html=''; + if(d.summary){html+='
'+esc(typeof d.summary==='string'?d.summary:JSON.stringify(d.summary).slice(0,200))+'
'} + if(sols.length){ + html+='
'+sols.map(s=>{ + const done=(s.capabilities_done||[]).length, todo=(s.capabilities_todo||[]).length, total=done+todo; + const pct=total?Math.round(done/total*100):0; + return '
#'+(s.rank||'·')+''+esc(s.name)+''+esc(s.status||'?')+'
'+esc(s.category||'')+' · maturity '+s.maturity+'%
💰 '+(s.mad_est?Math.round(s.mad_est/1e3)+'K':'?')+'
⚙️ eff '+(s.effort||'?')+'/10
🎯 rew '+(s.reward||'?')+'/10
'+done+'/'+total+' capabilities · '+todo+' TODO · '+(s.days_to_prod||'?')+'j to prod
'; + }).join('')+'
'; + } + if(gaps.length){ + html+='
⚠️ TOP GAPS À COMBLER
'+gaps.slice(0,10).map(g=>''+esc(typeof g==='string'?g:(g.name||g.id||JSON.stringify(g).slice(0,30)))+'').join('')+'
'; + } + tgt.innerHTML=html||'
No solution scanner data
'; + }catch(e){ + const tgt=document.getElementById('solution-scanner'); + if(tgt)tgt.innerHTML='
Solution Scanner err: '+esc(e.message)+'
'; + } +} + +// Wire enrichments après loadMain +const __origLoadMain=loadMain; +loadMain=async function(){ + await __origLoadMain.apply(this,arguments); + enrichSovereign(); + enrichComps(); +}; + +// Auto-launch solution scanner +setTimeout(loadSolutionScanner,800); + +// === /ENRICHISSEMENT === + + // Boot loadMain(); loadSocial(); diff --git a/vault-gold/opus/wave-v3-enrichi-20260423-203205/growth-advisor-v3.html.GOLD b/vault-gold/opus/wave-v3-enrichi-20260423-203205/growth-advisor-v3.html.GOLD new file mode 100644 index 000000000..dcd9fabfd --- /dev/null +++ b/vault-gold/opus/wave-v3-enrichi-20260423-203205/growth-advisor-v3.html.GOLD @@ -0,0 +1,682 @@ + + + + + +Deep Conversion Advisor · WEVAL + + + + + + +
+
+ +
+ + +
+
+ +
+
Deep Conversion Advisor
+
A real-time revenue intelligence brief — WEVAL Consulting
+
+
+ +
+
Wave —
+
loading…
+
+
+ + +
+
+ Deep Conversion Advisor V2 · LIVE + — leads · — scout scans · patterns — +
+ + +
I.

Live feeds

Real-time signals
+
+
📊 Paperclip Leads
loading…
+
⚡ WePredict
loading…
+
🕵 Dark Scout
loading…
+
💰 Pipeline MAD
loading…
+
+ + +
II.

Top 5 & reasoning

+
+

🚀 Actions prioritaires

Live
loading…
+ +
+ + +
III.

📡 Social signals hub

Conversion ideas adaptées · Wave 230
+ +

✨ LLM Conversion Ideas

+
loading ideas…
+ + +
IV.

📋 Paperclip tasks

Auto-created · Wave 231
+
loading tasks…
+ + +
V.

📊 Matrice Effort × Impact

Eisenhower · Wave 251
+
+
HIGH IMPACT · LOW EFFORT
Quick wins
loading…
+
HIGH IMPACT · HIGH EFFORT
🎯 Big bets
loading…
+
LOW IMPACT · LOW EFFORT
💡 Fill-ins
loading…
+
LOW IMPACT · HIGH EFFORT
Thankless
loading…
+
+ + +
VI.

🧠 Sovereign AI stack

— providers
+
loading…loading…loading…
+ + +
VII.

🥊 Competitive intel

Dark Scout integrated
+
loading competitive intel…
+ + +
VIII.

📋 Top 10 leads

Paperclip live
+
loading leads…
+ + + +
IX.

🧠 Solution Scanner

Predictive · Wave 252 · AI PREDICT
+
Loading predictive analysis…
+ +
+ + + +
+
💬 WEVIA Master · multi-agent
+
Prêt — pipeline, deal, recommandation ?
+
+
+ +Growth Engine v2 + + + +