Backend:
- test_pdf_rules.py: 108 testes para regras de pontuação do PDF
- test_pdf_selos.py: validação de selos disponíveis
Frontend:
- Configuração Vitest para testes de componentes React
- FiltroSelos.test.jsx: testes do componente de filtro
- Header.test.jsx: testes do componente de cabeçalho
- Adicionar ref para controlar requisições já feitas no App.jsx
- Adicionar ref para controlar fetch no RawDataModal.jsx
- Adicionar componente FiltroAtivo para filtrar consultores
- Novo endpoint GET /api/v1/ranking/exportar/excel
- Exporta apenas consultores com pontuação > 0
- Usa xlsxwriter para geração rápida (~40s para 300k registros)
- Layout profissional com formatação, filtros e cores condicionais
- Barra de progresso real no frontend com dois estados:
- Animação indeterminada durante geração no servidor
- Progresso real durante download do arquivo
- Botão de exportação integrado ao layout do sistema
- Suporte a cancelamento da exportação
Converte selos para uppercase em todas as camadas (frontend, API e
repository) para garantir que o filtro funcione independente de como
o usuário digita ou seleciona os selos.
- Remover selos sem dados: POS_DOC, CO_ORIENT_*, MB_BANCA_*, BOL_BPQ, PPG_COORD
- Atualizar seção Orientações para ORIENT_TESE e ORIENT_DISS apenas
- Remover seção Bancas (sem dados no ATUACAPES)
- Criar seções Participações (EVENTO, PROJ) e Características (IDIOMA_MULTILINGUE)
- Alinhar layout das tabelas de selos (65% código, 35% selo centralizado)
- Adicionar classe CSS selo-idioma
- Adicionar estilos CSS para secao Lattes (titulacoes em badges separados)
- Montar arquivo .env no container backend para carregar credenciais Oracle CAPES
- Configurar DNS da VPN CAPES no docker-compose para resolucao de hostnames
- Adicionar idiomas e formacoes ao _source das queries ES (client.py)
- Corrigir type mismatch int/str no endpoint paginado (routes.py)
- Adicionar campo evento nas inscricoes para nome do premio
- Implementar extracao de idiomas do ES no repository
- Ajustar frontend para exibir selo multilingue corretamente
- Adicionar 10 novos selos: MB_BANCA_*, EVENTO, PROJ, IDIOMA_*, TITULACAO_*
- Adicionar TETOS para Bloco A e B no calculo de pontuacao
- Adicionar modais para selos de banca, evento e projeto
- Corrigir alinhamento de colunas nas tabelas do painel de criterios
- Corrigir alinhamento nos modais de blocos (BlocoCriteriosModal)
- Ajustar layout dos selos para linha dedicada abaixo do nome
- Corrigir distribuicao de espaco nas tabelas com selos
- Corrigir extracao de datas de consultoria no backend
- Criar BlocoCriteriosModal com dados completos da planilha oficial
- Incluir formula, base, teto, tempo, bonus e recorrencias por bloco
- Tornar blocos clicaveis para abrir modal com informacoes detalhadas
- Bloco A: Coordenacao CAPES com bonus atualidade/retorno
- Bloco B: Consultoria com bonus continuidade/retorno
- Bloco C: Premiacoes, Comissoes, Inscricoes com recorrencias
- Bloco D: Indicadores e selos (idioma, titulacao)
- Bloco E: Explicacao do indicador PPG_COORD
- Corrigir gerarInsights() removendo conceitos inexistentes (TETOS_BLOCO,
"Destaque em Coordenação CAPES", aproveitamento % do teto de bloco)
- Adicionar valores corretos de bônus conforme Aba 4 do Excel oficial
- Remover "max 300" do Bloco C (não existe teto de bloco na especificação)
- Remover PRES_CAM do Bloco D (código inexistente na planilha oficial)
- Criar funcao gerarInsights() com regras baseadas nos criterios oficiais
- Adicionar botao "?" junto a posicao para abrir modal de insights
- Mostrar percentil, bloco dominante, coordenacoes, premiacoes, etc
- Calcular aproveitamento dos tetos por bloco
- Backend: reorganizar blocos para A (Coord CAPES), B (Consultoria),
C (Avaliacoes/Premiacoes), D (Indicadores), E (Coord PPG)
- Frontend: atualizar labels e formulas dos blocos
- Frontend: ajustar CSS para blocos com tamanho uniforme e quebra de linha
- Adicionar migration script para COMPONENTE_E no Oracle
Backend:
- Adicionar entidade DocenciaPPG para dados de docencia
- Extrair docencias do Elasticsearch (tipo "Docência")
- Serializar docencias no JSON de detalhes do consultor
- Aumentar batch size de 500 para 2000 para melhor performance
Frontend:
- Remover Bloco B (Coord. PPG) - reservado para V2
- Simplificar formula para: Bloco A + Bloco C + Bloco D
- Filtrar orientacoes/bancas da listagem (sao apenas selos)
- Atualizar Header com nota que PPG_COORD e apenas indicador
- Exibir pontuacao base nos modais de orientacao/banca
- Nao usar inativacaoSituacao como data fim quando situacao indica ativo
- Evita que consultores com "Atividade Continua" tenham 0 anos consecutivos
- Corrigir alinhamento dos headers nas tabelas de criterios (Header.css)
- Substituir tooltips por modais clicaveis nos score items
- Adicionar PontuacaoModal com formula de calculo detalhada
- Criar ScoreItemClickable para itens de pontuacao clicaveis
- Exibir breakdown: base, tempo, bonus, teto e total
- Estilar formula-box com fonte monospace para clareza
- Manter consistencia visual com outros modais do sistema
- Criar componente ItemDetalheModal para exibir detalhes de atuações
- Adicionar modais clicáveis em: vínculos, coordenações, premiações,
avaliações, inscrições e participações
- Melhorar healthcheck do Oracle no docker-compose
- Adicionar retry com backoff na conexão Oracle
- Padronizar tamanho dos badges de tipos de atuação
- Remover carregamento de 350k registros em memória no startup
- Refatorar endpoints para buscar dados direto do Oracle:
- ranking_paginado
- buscar_por_nome
- ranking_estatisticas
- obter_posicao_ranking
- Adicionar healthcheck leve no Oracle com start_period de 60s
- Corrigir start-ngrok.sh para subir todos os containers
- Adicionar domínio ngrok-free.dev no vite.config.js
- Adiciona campo tipos_atuacao ao schema e extração no mapper
- Exibe tipos de atuação (Coordenador, Consultor, Avaliador, etc.)
na seção expandida do card, acima de Selos e Reconhecimentos
- Inclui estilos visuais distintos para cada tipo de atuação
- Melhorias no Header e SugerirConsultores
- Adicionar seleção múltipla de consultores entre diferentes buscas
- Criar endpoint POST /api/v1/equipe/pdf para gerar documento da equipe
- Implementar template HTML profissional para PDF da equipe
- Exibir estatísticas: total, ativos, coordenadores, premiados, IES
- Persistir seleção ao trocar termos de busca (equipe interdisciplinar)
- Mostrar temas combinados na barra flutuante e no PDF
- Corrigir renderização de emojis no PDF (substituir por texto)
- Melhorar contraste da cor do ranking no frontend (roxo → ciano)
- Corrigir validação Pydantic para ignorar campos extras do .env
- Novo endpoint GET /api/v1/consultores/sugerir com busca por tema
- Busca inteligente em areas de avaliacao, conhecimento e pesquisa
- Filtro por consultores ativos e area de avaliacao especifica
- Endpoint GET /api/v1/consultores/areas-avaliacao com lista de areas
- Novo componente SugerirConsultores no frontend
- Botao 'Sugerir por Tema' integrado na interface principal
- Score de match baseado em relevancia do tema e experiencia
- Adicionar ordenação das atuações por data (mais recente primeiro)
- Ajustar grid de dados pessoais para campo nome ocupar 2 colunas
- Reduzir minmax do grid de 220px para 150px para melhor distribuição
Backend:
- Reescrever criterios_pontuacao.py com valores corretos do PDF
- Adicionar Blocos B e E ao enum
- Corrigir Base/Teto: AVAL_COMIS_GP (40), COORD_COMIS_PREMIO (40),
COORD_COMIS_GP (50), PROJ teto (30)
- Orientacoes/Bancas agora sao selos (Base=0, Teto=0)
- CONS_FALECIDO agora pontua tempo (5 pts/ano)
- Remover codigos obsoletos (PREMIACAO, MENCAO, BOL_BPQ_SUP/INT)
- Usar apenas BOL_BPQ_NIVEL, PREMIACAO_*_AUTOR, MENCAO_AUTOR
- Atualizar ranking_store.py e validar_ranking.py
Frontend:
- Atualizar ConsultorCard e CompararModal com codigos corretos
- Adicionar logo CAPES em PNG com transparencia
- Ajustar espacamento do header e tamanho das fontes
- Mapear pasta public no docker-compose
- Adicionar critérios diferenciados por papel (autor vs orientador)
- Implementar INSC_INST_AUTOR, PREMIACAO_GP_AUTOR, PREMIACAO_AUTOR, MENCAO_AUTOR
- Adicionar bônus de recorrência para inscrições, eventos e projetos
- Corrigir lógica de bônus de consultoria (continuidade e retorno)
- Ajustar extração de selos no frontend para novos códigos
- Adicionar BOL_BPQ_NIVEL para bolsas sem nível especificado
- Refinar cálculo de pontuação com novos tetos e multiplicadores
- Expandir RawDataModal com mais funcionalidades de visualização
- Ajustar template HTML da ficha do consultor
- Adicionar configuração MCP do projeto
- Atualizar gitignore para ignorar arquivos locais
- Novo endpoint GET /api/v1/consultor/{id}/pdf para download
- Serviço PDFService usando WeasyPrint para geração
- Template HTML com layout padrão governo federal
- Botão de exportar PDF no card e modal de dados brutos
- Novo endpoint GET /api/v1/consultor/{id}/raw para buscar documento completo do ES
- Novo componente RawDataModal com formatação inteligente de campos
- Botão de acesso rápido no ConsultorCard (ícone ⋮)
- Melhorias de estilo no Header e ConsultorCard
- Adicionar entidades e DTOs para vínculos de consultoria (IES, período, situação)
- Extrair vínculos do Elasticsearch com datas e informações da IES
- Exibir vínculos no card do consultor com sigla e nome completo da IES
- Ordenar todas as listas do detalhe por data/ano decrescente (mais recente primeiro)
- Ajustar caixa do rank para crescer automaticamente com números grandes
- Reduzir fonte proporcionalmente para posições com 4-7 dígitos
- Exibir STATUS com valor padrão '-' quando consultoria não existe
- Ajustar responsividade para telas menores
- Adiciona campo nome_comissao em AvaliacaoComissao (entity, DTO, schema)
- Extrai nome da comissão do Elasticsearch no repository
- Propaga campo pelo job de processamento e use case
- Exibe nome da comissão no ConsultorCard (frontend)
- Remove link do manual PDF do footer
- Corrigir lógica de extração de selos para usar códigos exatos
- Filtro agora exige todos os selos selecionados (AND em vez de OR)
- Botão Aplicar volta: seleção não dispara filtro automaticamente
- Layout dos controles unificado em barra com fundo
- Backend: extrair selos de detalhes e filtrar por eles
- API: endpoint /ranking/selos e parâmetro selos em /ranking/paginado
- Frontend: componente FiltroSelos com dropdown e seleção múltipla
- Selos disponíveis: funções, premiações, orientações
- Adiciona ícone de link externo antes do nome do consultor
- Link abre perfil no ATUACAPES em nova aba (/perfil/{id_pessoa})
- Variável de ambiente HOST_ATUACAPES configurável
- Adiciona retry automático (10 tentativas) ao carregar ranking
- Corrige espaçamento da seção de selos
- Atualiza arquivos .env.example