diff --git a/frontend/src/components/ConsultorCard.jsx b/frontend/src/components/ConsultorCard.jsx index 1df2fcd..f88534c 100644 --- a/frontend/src/components/ConsultorCard.jsx +++ b/frontend/src/components/ConsultorCard.jsx @@ -878,8 +878,6 @@ const PONTOS_BASE = { EVENTO: 1, PROJ: 10, }; -const TETOS_BLOCO = { A: 450, B: 230, C: 500, D: 300 }; - const gerarInsights = (consultor, totalConsultores) => { const insights = []; const posicao = consultor.posicao || consultor.rank || 0; @@ -905,10 +903,10 @@ const gerarInsights = (consultor, totalConsultores) => { } const blocos = [ - { nome: 'Coordenação CAPES', letra: 'A', valor: blocoA, teto: TETOS_BLOCO.A }, - { nome: 'Consultoria', letra: 'B', valor: blocoB, teto: TETOS_BLOCO.B }, - { nome: 'Avaliações/Premiações', letra: 'C', valor: blocoC, teto: TETOS_BLOCO.C }, - { nome: 'Indicadores', letra: 'D', valor: blocoD, teto: TETOS_BLOCO.D }, + { nome: 'Coordenação CAPES', letra: 'A', valor: blocoA }, + { nome: 'Consultoria', letra: 'B', valor: blocoB }, + { nome: 'Avaliações/Premiações', letra: 'C', valor: blocoC }, + { nome: 'Indicadores', letra: 'D', valor: blocoD }, ]; const blocosAtivos = blocos.filter(b => b.valor > 0); @@ -916,7 +914,7 @@ const gerarInsights = (consultor, totalConsultores) => { const maiorBloco = blocosAtivos.reduce((a, b) => a.valor > b.valor ? a : b); const pct = Math.round(maiorBloco.valor / pontuacao * 100); if (pct >= 50) { - insights.push({ icone: '📊', texto: `${pct}% da pontuação vem de ${maiorBloco.nome} (Bloco ${maiorBloco.letra})` }); + insights.push({ icone: '📊', texto: `${pct}% da pontuação vem de ${maiorBloco.nome}` }); } } @@ -924,48 +922,48 @@ const gerarInsights = (consultor, totalConsultores) => { const coordAtiva = coords.find(c => c.ativo ?? !c.fim); if (coordAtiva) { const labels = { CA: 'Coordenador de Área', CAJ: 'Coordenador Adjunto', CAJ_MP: 'Coord. Adjunto MP', CAM: 'Câmara Temática' }; - insights.push({ icone: '🎯', texto: `${labels[coordAtiva.codigo] || coordAtiva.codigo} em exercício` }); + const bonusAtual = { CA: 30, CAJ: 20, CAJ_MP: 15, CAM: 20 }; + insights.push({ icone: '🎯', texto: `${labels[coordAtiva.codigo] || coordAtiva.codigo} em exercício (+${bonusAtual[coordAtiva.codigo] || 0} bônus atualidade)` }); } else if (coords.length > 0) { insights.push({ icone: '📜', texto: `Histórico de ${coords.length} coordenação(ões) CAPES` }); } - if (blocoA >= 300) { - insights.push({ icone: '🌟', texto: 'Destaque em Coordenação CAPES' }); - } - const consultoria = consultor.consultoria || {}; if (consultor.ativo && consultoria.anos_consecutivos >= 8) { - insights.push({ icone: '💎', texto: `${consultoria.anos_consecutivos} anos consecutivos de consultoria (+bônus continuidade)` }); - } else if (consultor.ativo && consultoria.anos_consecutivos >= 5) { + insights.push({ icone: '💎', texto: `${consultoria.anos_consecutivos} anos consecutivos (+20 bônus continuidade)` }); + } else if (consultoria.anos_consecutivos >= 3) { insights.push({ icone: '🔷', texto: `${consultoria.anos_consecutivos} anos consecutivos de consultoria` }); } if (consultoria.retornos > 0) { - insights.push({ icone: '🔄', texto: `Retorno à consultoria (+bônus reativação)` }); + const bonusRetorno = consultor.ativo ? 15 : 20; + insights.push({ icone: '🔄', texto: `Retorno à consultoria (+${bonusRetorno} bônus reativação)` }); } const premiacoes = consultor.premiacoes || []; const gps = premiacoes.filter(p => p.codigo === 'PREMIACAO_GP_AUTOR'); const premios = premiacoes.filter(p => p.codigo === 'PREMIACAO_AUTOR'); + const mencoes = premiacoes.filter(p => p.codigo === 'MENCAO_AUTOR'); if (gps.length > 0) { - insights.push({ icone: '🏆', texto: `${gps.length}x Grande Prêmio CAPES` }); - } else if (premios.length > 0) { - insights.push({ icone: '🥇', texto: `${premios.length}x Prêmio CAPES` }); + insights.push({ icone: '🏆', texto: `${gps.length}x Grande Prêmio CAPES (base 100 pts cada)` }); + } + if (premios.length > 0) { + insights.push({ icone: '🥇', texto: `${premios.length}x Prêmio CAPES (base 50 pts cada)` }); + } + if (mencoes.length > 0) { + insights.push({ icone: '🎖️', texto: `${mencoes.length}x Menção Honrosa (base 30 pts cada)` }); } const anos = consultor.anos_atuacao || 0; if (anos >= 15) { insights.push({ icone: '👑', texto: `${anos} anos de contribuição ao SNPG` }); } else if (anos >= 10) { - insights.push({ icone: '🎖️', texto: `Veterano com ${anos} anos de atuação` }); + insights.push({ icone: '🏅', texto: `Veterano com ${anos} anos de atuação` }); } - blocosAtivos.forEach(b => { - const aproveitamento = Math.round(b.valor / b.teto * 100); - if (aproveitamento >= 80) { - insights.push({ icone: '✅', texto: `${b.nome}: ${aproveitamento}% do teto (${b.valor}/${b.teto})` }); - } - }); + if (blocoA > 0 && blocoB > 0 && blocoC > 0) { + insights.push({ icone: '🌟', texto: 'Perfil diversificado: coordenação + consultoria + avaliações' }); + } if (insights.length === 0) { insights.push({ icone: '📋', texto: `Pontuação total: ${pontuacao} pontos` }); diff --git a/frontend/src/components/Header.jsx b/frontend/src/components/Header.jsx index 7676c75..b44cae0 100644 --- a/frontend/src/components/Header.jsx +++ b/frontend/src/components/Header.jsx @@ -74,7 +74,6 @@ const Header = ({ total }) => {

C - Premiacoes, Avaliacoes, Inscricoes

- max 300
@@ -179,7 +178,6 @@ const Header = ({ total }) => { -
PROJ1030📁
EVENTO15📅
PPG_COORD--🎓
PRES_CAM--👑