Commit Graph

86 Commits

Author SHA1 Message Date
Frederico Castro
47f0a80f3f feat(pdf): adicionar exportação de ficha do consultor em PDF
- 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
2025-12-18 22:43:42 -03:00
Frederico Castro
9d93e42a12 fix(backend): deduplicar vínculos de consultoria com mesmo ID
Dados do ATUACAPES podem conter registros duplicados de consultoria
com mesmo ID. Mantém o registro ativo (sem fim) quando há duplicatas.
2025-12-18 12:32:14 -03:00
Frederico Castro
7dc1284d0b feat(ui): exibir coordenação CAPES no card em vez de status consultoria
Substitui exibição de CONS_ATIVO/HIST pela coordenação CAPES mais
relevante (CA > CAJ > CAJ_MP > CAM), priorizando coordenações ativas.
2025-12-18 12:27:39 -03:00
Frederico Castro
b8b97e2f88 style(selos): aplicar estilo monocromático nos selos da listagem
- Selos compactos agora usam tons de slate/cinza
- Emojis com filtro grayscale para visual uniforme
- Selos completos (internos) mantêm cores originais
2025-12-18 06:37:31 -03:00
Frederico Castro
ffdd4cad2c feat(api): adicionar endpoint para consulta de posição individual no ranking
- Novo endpoint GET /api/v1/ranking/posicao/{id_pessoa}
- Retorna posição, pontuação por bloco e total de consultores
- Para integração com frontend do ATUACAPES
2025-12-18 05:50:11 -03:00
Frederico Castro
c388509acb feat(raw-data): adicionar visualização de dados brutos do ATUACAPES
- 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
2025-12-17 23:28:11 -03:00
Frederico Castro
99ce6e30d8 feat(vinculos): adicionar vínculos de consultoria com IES e ordenação cronológica
- 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)
2025-12-17 20:48:50 -03:00
Frederico Castro
678be6170f fix(ui): corrigir exibição de posição e status no ranking
- 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
2025-12-17 17:22:24 -03:00
Frederico Castro
15570be9c9 feat(avaliacao): adicionar nome da comissão nas avaliações
- 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
2025-12-17 14:15:43 -03:00
Frederico Castro
0f61b55944 fix(comparacao): corrigir alinhamento simétrico no modal de comparação
Ajusta layout para que valores absolutos fiquem próximos ao centro
e diferenças nas extremidades de cada lado.
2025-12-15 13:24:04 -03:00
Frederico Castro
6034289403 feat(comparacao): exibir selos de cada consultor no modal de comparacao 2025-12-15 13:13:47 -03:00
Frederico Castro
3254374486 fix(filtros): corrigir extração de selos e melhorar UX do filtro
- 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
2025-12-15 13:04:06 -03:00
Frederico Castro
c294d4cc77 feat(filtros): adicionar filtro multi-select por selos no ranking
- 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
2025-12-15 12:32:24 -03:00
Frederico Castro
d215e9ac76 feat(backend): adicionar validação de selos ao script
- Verifica se bolsas, premiações e orientações do DB batem com ES
- Valida top 50 consultores por padrão
- Integra validação de selos no fluxo principal (passo 4/5)
2025-12-15 12:21:54 -03:00
Frederico Castro
e785b9fc62 feat(backend): adicionar script de validação do ranking
- Cria script validar_ranking.py para verificar integridade do ranking
- Valida critérios do código vs especificação oficial
- Verifica ordenação, posições duplicadas e gaps
- Recalcula pontuação de amostra e compara com banco
- Corrige CONS_FALECIDO para não pontuar por tempo (spec oficial)
2025-12-15 12:16:54 -03:00
Frederico Castro
99e59e2100 docs: corrigir critérios de pontuação no README
- CONS_FALECIDO: não pontua por tempo
- MENCAO: teto corrigido de 20 para 30
- BOL_BPQ_INTERMEDIARIO: base=50, teto=100
- Avaliação/Coordenação Comissão: removido bônus recorrência inexistente
- Orientações: adicionados tetos (100, 50, 25, 35, 25, 15)
- Bancas: adicionados tetos (15, 15, 10)
2025-12-15 11:20:18 -03:00
Frederico Castro
0ea1b13eb1 chore: mover documentação para pasta docs e ignorar no git 2025-12-15 11:17:32 -03:00
Frederico Castro
4876d4d9f5 feat(frontend): adicionar link para perfil no ATUACAPES
- 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
2025-12-15 11:14:10 -03:00
Frederico Castro
b44582653b fix(oracle): corrigir persistência e carregamento do ranking
- Corrigir conexão Oracle com teste antes do pool
- Carregar ranking em batches de 10k (limite de 10k por query)
- Aumentar timeout de carregamento para 5 minutos
- Adicionar depends_on para Oracle no docker-compose
- Padronizar nome do container Oracle para oracle18c
2025-12-15 07:40:05 -03:00
Frederico Castro
3a0dd036f4 fix(frontend): aumentar timeout de polling para 45 minutos 2025-12-15 07:20:19 -03:00
Frederico Castro
df3d03d3b2 fix: resolver problemas identificados no code review
Correções de segurança:
- SQL Injection: usar prepared statements em ranking_repository.py
- Validação de entrada para parâmetros page/size

Correções de bugs:
- Bônus de continuidade: 15→20 pts para 8+ anos (conforme especificação)
- Memory leak: limpar _consultores após processamento do ranking

Melhorias de robustez:
- Substituir bare except por exceções específicas
- Threading.Lock para padrão singleton thread-safe
- Pool Oracle com configuração otimizada (timeout/getmode)
- ES client com timeouts diferenciados e verificação is_closed
- Logging para tipos de coordenação desconhecidos

Correções frontend:
- Polling com timeout máximo de 5 minutos
- useEffect cleanup para setTimeout
- React.memo e useMemo para otimização de performance
2025-12-15 07:11:28 -03:00
Frederico Castro
d639b82087 fix(selos): corrigir geração de selos e adicionar ícones visuais
- Corrigir extração de orientações (tipo "Orientação de Discentes")
- Selos de premiação agora usam campo papel (Autor/Orientador/Coorientador)
- Adicionar ícones visuais aos selos (emojis Unicode)
- Adicionar estilos CSS para novos tipos de selos
- Melhorias no Oracle client e ranking repository
2025-12-15 05:01:52 -03:00
Frederico Castro
97322e5ad7 fix(frontend): evitar erro por 409 em processamento (StrictMode) 2025-12-15 00:26:30 -03:00
Frederico Castro
6369ac5d22 feat(frontend): alinhar critérios e selos/hints 2025-12-15 00:13:15 -03:00
Frederico Castro
2a0dc1a652 feat(backend): ranking 100% Elasticsearch e critérios do PDF 2025-12-15 00:13:12 -03:00
Frederico Castro
70787fbb51 chore(security): remove credenciais hardcoded dos scripts 2025-12-14 23:57:06 -03:00
Frederico Castro
f91651056a Refatoracao de qualidade de codigo
- Mover logica de routes.py para RankingMapper na camada de aplicacao
- Consolidar funcoes mesclar_periodos e anos_completos_periodos em periodo.py
- Extrair RankingCache para modulo separado em infrastructure/cache
- Substituir todos os print() por logging adequado
- Corrigir exception handlers genericos para tipos especificos
- Remover classe Atuacao e atributo atuacoes_raw nao utilizados
- Documentar status dos scripts utilitarios
2025-12-14 21:47:00 -03:00
Frederico Castro
4a98e8b38c Add utility scripts and documentation
- Add TIPOS_ATUACAO_ELASTICSEARCH.md: mapping of ES activity types
- Add TOP_10_RANKING_CAPES.md: sample ranking output documentation
- Add backend/scripts/: utility scripts for analysis and debugging
  - analise_detalhada.py: detailed consultant analysis
  - auditar_ranking.py: ranking audit tool
  - bootstrap_ranking.sh: bootstrap script
  - buscar_consultores_especificos.py: search specific consultants
  - popular_componente_b.py: populate component B
  - top10_ranking.py: generate top 10 ranking
- Add scripts/reload_atuacapes.sh: reload ES index script
2025-12-14 21:36:57 -03:00
Frederico Castro
10d8efc96a Update README with V2 scoring criteria and visual badges 2025-12-14 21:29:43 -03:00
Frederico Castro
7928062cb8 Add visual badges (selos) to ConsultorCard
- Add SELOS constant with 18 badge types (coord, bolsa, premio, orientacoes, etc)
- Add gerarSelos() function to extract badges from consultor data
- Add SelosBadges component with compact and full display modes
- Integrate badges in card header (compact) and expanded details (full)
- Add CSS styles with gradient backgrounds and hover effects for each badge type
- Badges show achievement counts and support tooltips
2025-12-14 21:06:31 -03:00
Frederico Castro
120593831c Atualiza criterios de pontuacao para V2
Backend:
- CAJ retorno 20->15, CAJ_MP retorno 20->10, CAM atualidade 10->20, retorno 20->10
- CONS_ATIVO/HIST/FALECIDO continuidade 8a+ = 20 (simplificado)
- CONS_FALECIDO agora pontua tempo (5 pts/ano, teto 50)
- AVAL_COMIS_PREMIO e AVAL_COMIS_GP mudaram tipo para PAPEL
- AVAL_COMIS_GP teto 100->80
- Novo bonus de recorrencia anual para comissoes (2-6 pts/ano)
- PREMIACAO base 150->100, PREMIACAO_GP base 30->50, MENCAO base 10->30
- BOL_BPQ_INTERMEDIARIO base 50->30 (consolidado)
- Orientacoes/Co-orientacoes/Bancas: tetos zerados (sem limite)
- TipoAtuacao.RESULTADO renomeado para COMPETENCIA_RECONHECIMENTO

Frontend:
- Atualiza PONTOS_BASE e TETOS com novos valores V2
- Atualiza descricoes das formulas nos tooltips
- Melhora exibicao de teto=0 como "sem limite"
- Adiciona info de bonus de recorrencia nos tooltips
2025-12-14 20:37:55 -03:00
Frederico Castro
7000268261 Adiciona suporte ao Bloco B (Coordenacao PPG) e melhora tooltips
- Adiciona Bloco B no ConsultorCard com formula e detalhes
- Ajusta calculo de pontuacao total para incluir Bloco B
- Melhora tooltips com informacoes de teto e calculo detalhado
- Ajusta routes.py para preencher blocos corretamente
- Adiciona bloco_b no schema de ranking
2025-12-14 20:31:47 -03:00
Frederico Castro
0707c14e05 Enable Enter key for search 2025-12-13 18:28:10 -03:00
Frederico Castro
a3aab90c18 Merge fix/consultoria-tempo-criterios 2025-12-13 18:25:53 -03:00
Frederico Castro
57a78ce3e3 Fix consultoria tempo por períodos 2025-12-13 18:25:40 -03:00
Frederico Castro
abdb0782b7 Adiciona pontuacao base em cada item das listas de detalhes
- Exibe pontos ao lado de cada coordenacao, inscricao, avaliacao, etc
- Adiciona todos os codigos de pontuacao do documento oficial
- Inclui BOL_BPQ, CO_ORIENT e MB_BANCA no mapeamento
- Estiliza pontos com cor accent e fonte bold
2025-12-13 17:55:50 -03:00
Frederico Castro
f1c3aa2601 Corrige exibicao de detalhes no frontend do ranking
- Usa dados de pontuacao da API ao inves de objeto vazio
- Ajusta CSS para 3 caixinhas por linha nos blocos
- Corrige icone de expansao (seta ao inves de interrogacao)
- Trunca legendas longas com ellipsis
2025-12-13 17:42:04 -03:00
Frederico Castro
48c1074a91 Adiciona campo pontuacao detalhada ao retorno do ranking paginado 2025-12-13 17:25:37 -03:00
Frederico Castro
f1377634b2 Corrige insercao de JSON grande no Oracle usando CLOB 2025-12-13 17:22:50 -03:00
Frederico Castro
93fb0d8a39 Remove referencias ao Componente B dos scripts de inicializacao 2025-12-13 16:50:11 -03:00
Frederico Castro
2d4e93f82a Reimplementa sistema de ranking com novos critérios V2
Mudanças principais:
- Substitui 4 Componentes (A,B,C,D) por 3 Blocos (A,C,D)
- Remove Componente B (Coordenação PPG = 0 pts no V1)
- Adiciona novos tipos de atuação do Elasticsearch
- Implementa critérios de pontuação com tetos individuais

Bloco A - Coordenação CAPES:
- CA (max 450), CAJ (max 370), CAJ_MP (max 315), CAM (max 280)
- Calcula base + tempo + bônus atualidade + bônus retorno

Bloco C - Consultoria:
- CONS_ATIVO (base 150), CONS_HIST (base 100), CONS_FALECIDO (base 100)
- Bônus continuidade: 3anos=+5, 5anos=+10, 8anos=+15
- Bônus retorno: +15

Bloco D - Premiações/Avaliações:
- Inscrições (INSC_AUTOR, INSC_INST)
- Avaliações (AVAL_COMIS_PREMIO, AVAL_COMIS_GP)
- Coordenações (COORD_COMIS_PREMIO, COORD_COMIS_GP)
- Premiações (PREMIACAO, PREMIACAO_GP, MENCAO)
- Bolsas CNPQ, Participações, Orientações, Membros de Banca

Frontend:
- Header, ConsultorCard, CompararModal atualizados para 3 blocos
- API service atualizado para nova estrutura de dados
2025-12-13 16:41:55 -03:00
Frederico Castro
97cd328415 Adiciona calculo de continuidade no endpoint paginado 2025-12-13 16:13:36 -03:00
Frederico Castro
c909608e46 Adiciona tetos maximos por componente
- Componente A: teto 450 pts
- Componente B: teto 180 pts
- Componente C: teto 230 pts
- Componente D: teto 180 pts

Adiciona campo teto no ComponentePontuacao que limita o total
2025-12-13 12:33:46 -03:00
Frederico Castro
b18ae8199c Corrige calculo do Componente C (Consultoria)
- Adiciona campo vezes_responsavel na entidade Consultoria
- Corrige calculo de base: usa eventos_recentes > 0 (nao string situacao)
- Implementa calculo de extras:
  - extras_eventos: 2 pts/evento (max 20)
  - extras_responsavel: 5 pts/vez (max 25)
  - extras_areas: 10 pts/area extra (max 30)
- Extrai dados de consultorResponsavel dos eventos no repository
- Atualiza DTOs e schemas para incluir novo campo
2025-12-13 11:57:33 -03:00
Frederico Castro
8a8b4230c2 Melhora busca por nome para procurar cada palavra separadamente 2025-12-13 10:15:46 -03:00
Frederico Castro
c91a2e931f Remove arquivos desnecessarios e atualiza gitignore
- Remove boilerplate Vite (react.svg, vite.svg, README.md generico)
- Remove componente CalculoDetalhado nao utilizado
- Remove log de auditoria do versionamento
- Adiciona backend/logs/ e *.csv ao gitignore
2025-12-13 09:56:36 -03:00
Frederico Castro
36e01f895f Remove diretorio frontend/frontend duplicado com arquivos vazios 2025-12-13 09:40:53 -03:00
Frederico Castro
dfc4323739 Remove referencias a SUCUPIRA_PAINEL do backend e docs 2025-12-13 09:40:40 -03:00
Frederico Castro
f7d58228be Remove referencia a SUCUPIRA do footer do frontend 2025-12-13 09:37:32 -03:00
Frederico Castro
a82559377a Adiciona recurso de comparacao de consultores
- Permite selecionar ate 2 consultores na lista via checkbox
- Exibe barra flutuante com consultores selecionados
- Modal de comparacao lado a lado com todos os componentes (A, B, C, D)
- Destaque visual para valores maiores/menores entre os consultores
- Layout responsivo para mobile
2025-12-13 09:02:08 -03:00