(function(){ function classify(F,C){const X=C,Y=F;if(X>=50&&Y>=50)return Y>=X?'Propósito':'Acolhimento';if(X<50&&Y>=50)return(Y+X)<=100?'Aprendizado':'Prazer';if(X<50&&Y<50)return Y<=X?'Autoridade':'Resultado';return(Y+X)>=100?'Ordem':'Segurança';} function extractFECA(line){const part=line.split('>')[0];const nums=part.match(/\d+(?:\.\d+)?/g);if(!nums||nums.length<4)return null;for(let i=0;i<=nums.length-4;i++){const[F,E,C,A]=nums.slice(i,i+4).map(Number);if(Math.abs(F+E-100)<=2&&Math.abs(C+A-100)<=2&&F>=0&&F<=100&&E>=0&&E<=100&&C>=0&&C<=100&&A>=0&&A<=100)return{F:Math.round(F*100)/100,C:Math.round(C*100)/100};}return null;} function same(a,b){if(!a||!b)return false;return Math.abs(a.F-b.F)<=0.1&&Math.abs(a.C-b.C)<=0.1;} var lastR=null,riskData={critico:[],relevante:[],latente:[]}; const SC=window.QSC,QD=window.QQD,AXIS=window.QAXIS,QP=window.QQP,EL=window.QEL,COMB=window.QCOMB,SIGNAL=window.QSIGNAL,DISP=window.QDISP,QINSIGHTS=window.QINSIGHTS; const ELEM_LABELS={comportamentos:'Comportamentos comuns',crencas:'Crenças comuns',valores:'Recompensa e punição',estrutura:'Estrutura e cargos',lideranca:'Liderança e comunicação'}; function run(){ const raw=document.getElementById('qInp').value.trim(); const errEl=document.getElementById('qErr'),out=document.getElementById('qOut'); document.getElementById('qAna').innerHTML='';errEl.textContent='';out.innerHTML=''; document.getElementById('qBtnA').disabled=true;lastR=null; if(!raw)return; const lines=raw.split('\n').map(l=>l.trim()).filter(Boolean); const sCounts={};Object.keys(SC).forEach(s=>sCounts[s]=0); let prev=null,total=0,skip=0,sF=0,sC=0; lines.forEach(line=>{const feca=extractFECA(line);if(!feca){skip++;return;}if(same(feca,prev)){skip++;return;}sCounts[classify(feca.F,feca.C)]++;sF+=feca.F;sC+=feca.C;total++;prev=feca;}); if(total===0){out.innerHTML='
Nenhuma coordenada válida.
';return;} const ss=Object.entries(sCounts).sort((a,b)=>b[1]-a[1]); const maxS=ss[0][1]||1; const sRows=ss.map(([n,c],i)=>{const p=((c/total)*100).toFixed(1);const col=SC[n];return`
${i+1}${n}
${c}×${p}%
`;}).join(''); const qd=QD.map(q=>({...q,count:q.styles.reduce((s,st)=>s+sCounts[st],0)})).sort((a,b)=>b.count-a.count); const maxQ=qd[0].count||1; const qRows=qd.map((q,i)=>{const p=((q.count/total)*100).toFixed(1);return`
${i+1}${q.name}
${q.count}×${p}%
`;}).join(''); const aF=sF/total,aE=100-aF,aC=sC/total,aA=100-aC; const axHTML=`
FlexívelEstável
${aF.toFixed(1)}%${aE.toFixed(1)}%
ColaborativoAutônomo
${aC.toFixed(1)}%${aA.toFixed(1)}%
`; out.innerHTML=`
Estilos
${sRows}
Quadrantes
${qRows}
Eixos
${axHTML}
${total} ponto${total!==1?'s':''} classificado${total!==1?'s':''}${skip?' · '+skip+' ignorada'+(skip!==1?'s':''):''}
`; lastR={sCounts,ss,qd,aF,aE,aC,aA,total}; document.getElementById('qBtnA').disabled=false; } function buildHeadline(ss,qd,aF,aE,aC,aA,total){ const s1pct=(ss[0][1]/total)*100,s2pct=(ss[1][1]/total)*100; const base=ss[0][0]; const traco=s2pct>=20&&Math.abs(s1pct-s2pct)<20?ss[1][0]:null; const q1p=(qd[0].count/total)*100,q2p=(qd[1].count/total)*100; const quadStr=q2p>=30?`${qd[0].name} e ${qd[1].name}`:`${qd[0].name}`; const feGap=Math.abs(aF-aE),caGap=Math.abs(aC-aA); let feStr,caStr; if(feGap<10)feStr=`${aF.toFixed(0)}% flexível e ${aE.toFixed(0)}% estável (equilíbrio)`; else if(aF>aE)feStr=`${aF.toFixed(0)}% flexível`; else feStr=`${aE.toFixed(0)}% estável`; if(caGap<10)caStr=`${aC.toFixed(0)}% colaborativa e ${aA.toFixed(0)}% autônoma (equilíbrio)`; else if(aC>aA)caStr=`${aC.toFixed(0)}% colaborativa`; else caStr=`${aA.toFixed(0)}% autônoma`; const tracoStr=traco?`, com traços de ${traco}`:''; return`
Uma cultura baseada em ${base}${tracoStr}, com características marcantes no quadrante ${quadStr} — ${feStr} e ${caStr}.
`; } function buildElements(ss,total){ const pcts=ss.map(([n,c])=>({n,p:(c/total)*100})); const primary=pcts[0]; const secondary=pcts[1].p>=20?pcts[1]:null; const tertiary=pcts[2].p>=20?pcts[2]:null; const noneAbove20=pcts[0].p<20; let html=''; Object.keys(ELEM_LABELS).forEach(key=>{ html+=`
${ELEM_LABELS[key]}
`; if(noneAbove20){ html+=`
${DISP[key]}
`; } else { const colP=SC[primary.n]; html+=`
▶ ${primary.n} ${primary.p.toFixed(0)}%
${EL[key][primary.n]||''}
`; if(secondary){const colS=SC[secondary.n];html+=`
▶ ${secondary.n} ${secondary.p.toFixed(0)}%
${EL[key][secondary.n]||''}
`;} } html+='
'; }); if(!noneAbove20&&secondary){ const ck=[primary.n,secondary.n].sort().join('+'); const combText=COMB[ck]; if(combText)html+=`
A combinação ${primary.n} + ${secondary.n}
${combText}
`; if(tertiary)html+=`
↳ Sinal adicional: ${tertiary.n} (${tertiary.p.toFixed(0)}%)
${SIGNAL[tertiary.n]||''}
`; } return html; } function buildAnalysis(){ if(!lastR)return; const{sCounts,ss,qd,aF,aE,aC,aA,total}=lastR; const fe=Math.abs(aF-aE)<10?'B':(aF>aE?'F':'E'); const ca=Math.abs(aC-aA)<10?'B':(aC>aA?'C':'A'); const axisText=AXIS[`${fe}_${ca}`]||''; const q1=qd[0],q2=qd[1]; const q2p=(q2.count/total)*100; let quadKey=q1.name; if(q2p>=30){const k=[q1.name,q2.name].sort().join('+');if(QP[k])quadKey=k;} const quadText=QP[quadKey]||QP[q1.name]; const headline=buildHeadline(ss,qd,aF,aE,aC,aA,total); const perfil=`${axisText} ${quadText}`.trim(); const elemsHTML=buildElements(ss,total); const riskHTML=buildRiskHTML(); document.getElementById('qAna').innerHTML=`
Análise de cultura
${headline}
${perfil}
${elemsHTML}${riskHTML}
`; } function buildRiskHTML(){ if(!lastR)return''; const{sCounts,total}=lastR; const pcts={};Object.keys(sCounts).forEach(s=>{pcts[s]=(sCounts[s]/total)*100;}); const scored=[]; QINSIGHTS.forEach(ins=>{const w=ins.w||{};let sc=0,ws=0;Object.keys(pcts).forEach(s=>{const wt=w[s]||0;sc+=wt*pcts[s];if(wt>0)ws+=wt;});if(sc>0)scored.push({...ins,score:sc,wsum:ws});}); scored.sort((a,b)=>b.score!==a.score?b.score-a.score:b.wsum-a.wsum); const critAll=scored.slice(0,5),relAll=scored.slice(5,10),latAll=scored.slice(10,20); function norm(sc,arr,lo,hi){if(!arr.length)return lo;const top=arr[0].score,bot=arr[arr.length-1].score;if(top===bot)return Math.round((lo+hi)/2);return Math.round(lo+(sc-bot)/(top-bot)*(hi-lo));} critAll.forEach(i=>{i.risk='critico';i.norm=norm(i.score,critAll,88,100);}); relAll.forEach(i=>{i.risk='relevante';i.norm=norm(i.score,relAll,52,72);}); latAll.forEach(i=>{i.risk='latente';i.norm=norm(i.score,latAll,10,38);}); riskData={critico:critAll,relevante:relAll,latente:latAll}; return`
Riscos Culturais Identificados
${critAll.length} riscos identificados
${renderCards(critAll)}
`; } function renderCards(items){ if(!items.length)return'
Nenhum resultado nesta categoria.
'; return items.map(ins=>{ const color=ins.risk==='critico'?'#f91069':ins.risk==='relevante'?'#f97316':'#6b7280'; const label=ins.risk==='critico'?'Risco Crítico':ins.risk==='relevante'?'Risco Relevante':'Risco Latente'; return`
${buildGauge(ins.norm,color)}
● ${label}
${ins.title}
${ins.desc}
`; }).join(''); } function buildGauge(score,color){ const pct=Math.min(score,100)/100,r=22,cx=32,cy=28; const circ=2*Math.PI*r,arc=Math.PI*r,fill=pct*arc,gap=circ-fill; const angle=Math.PI*(1+pct),nr=r-5; const nx=(cx+nr*Math.cos(angle)).toFixed(2),ny=(cy+nr*Math.sin(angle)).toFixed(2); const rot=`rotate(180 ${cx} ${cy})`; return``; } window.qRun=run; window.qBuildAnalysis=buildAnalysis; window.qFilterRisk=function(tier,btn){ document.querySelectorAll('.q-ftab').forEach(t=>t.classList.remove('active')); btn.classList.add('active'); const items=riskData[tier]||[]; document.getElementById('qRiskCount').textContent=items.length+' riscos identificados'; document.getElementById('qRiskCards').innerHTML=renderCards(items); }; window.qClear=function(){ document.getElementById('qInp').value='';document.getElementById('qErr').textContent=''; document.getElementById('qOut').innerHTML='';document.getElementById('qAna').innerHTML=''; document.getElementById('qBtnA').disabled=true;lastR=null; }; document.addEventListener('DOMContentLoaded',function(){ const inp=document.getElementById('qInp'); if(inp)inp.addEventListener('keydown',function(e){if(e.key==='Enter'&&e.ctrlKey)run();}); }); })();