Commit Graph

41 Commits

Author SHA1 Message Date
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
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
57a78ce3e3 Fix consultoria tempo por períodos 2025-12-13 18:25:40 -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
dfc4323739 Remove referencias a SUCUPIRA_PAINEL do backend e docs 2025-12-13 09:40:40 -03:00
Frederico Castro
3edd81dbcb Ajusta bootstrap e portas para subida sem conflitos 2025-12-12 22:44:12 -03:00
Frederico Castro
77029695cb Bootstrap tenta multiplos DSNs para Oracle 2025-12-12 20:08:29 -03:00
Frederico Castro
b411e69713 Adiciona script bootstrap para rodar ranking + componente B automaticamente 2025-12-12 19:54:06 -03:00
Frederico Castro
59d359b214 Remove logs e busca de PPG no passo online 2025-12-10 17:45:12 -03:00
Frederico Castro
c4e92584f8 Evita buscar PPG no job principal para acelerar carga 2025-12-10 17:33:42 -03:00
Frederico Castro
8d36a71df8 Aumenta batch do ranking para 5000 para acelerar carga 2025-12-10 17:27:19 -03:00
Frederico Castro
9614963973 Ajusta pontuacao de premiacoes (banca/comissao como avaliador/coordenador) 2025-12-10 17:08:25 -03:00
Frederico Castro
9df56075ef Corrige import List no endpoint de busca 2025-12-10 16:30:45 -03:00
Frederico Castro
01aace497b Busca por nome com destaque e navegação para página 2025-12-10 16:20:37 -03:00
Frederico Castro
90552fe607 Permite page size até 1000 no ranking paginado 2025-12-10 16:12:59 -03:00
Frederico Castro
1fbf659122 Inclui vezes_responsavel no JSON de consultoria 2025-12-10 16:02:27 -03:00
Frederico Castro
1e24b5eda5 Checkpoint ajustes atuais 2025-12-10 15:43:12 -03:00
Frederico Castro
71a8aa4417 Inclui detalhes de coordenacoes e premiações no ranking paginado 2025-12-10 15:25:28 -03:00
Frederico Castro
23ecb8d30a Adiciona script de auditoria do ranking 2025-12-10 14:30:27 -03:00
Frederico Castro
6f11b7c166 Automatiza componente B e ajuste frontend do ranking 2025-12-10 13:49:43 -03:00
Frederico Castro
d1379b4f5c docs: Adiciona resumo completo do projeto de ranking
Documenta:
- Arquitetura implementada (4 componentes)
- Estrutura de código (Clean Architecture)
- Problema atual (Componente B = 0 por rede)
- Soluções propostas (script standalone)
- Comandos úteis e validações
- Status: 95% completo, falta resolver acesso rede CAPES
2025-12-10 05:28:34 -03:00
Frederico Castro
57ef5a763a fix: Corrige cálculo de pontuação da nota do PPG no Componente B
Mudanças:
- Implementa escala correta de nota: 7=20, 6=15, 5=10, 4=5, 3=0
- Usa MAIOR nota entre os programas coordenados
- Adiciona documentação detalhada no método
- Corrige extras para programas adicionais (só conta se > 1)

Conforme especificação técnica oficial CAPES
2025-12-10 04:24:24 -03:00
Frederico Castro
e11cdcd083 feat: Implementa duas conexões Oracle simultâneas
- Oracle LOCAL (Docker): Para salvar TB_RANKING_CONSULTOR
- Oracle REMOTO (CAPES): Para ler SUCUPIRA_PAINEL.VM_COORDENADOR
- ConsultorRepositoryImpl usa oracle_remote para buscar PPG
- RankingRepository usa oracle_local para salvar ranking
- ProcessarRankingJob recebe ambos os clientes
- Componente B agora está preparado para funcionar

Nota: Elasticsearch precisa ser acessível da rede CAPES
2025-12-10 04:21:17 -03:00
Frederico Castro
f69bcd928c feat: Implementa job de ranking para 300k consultores
- Processa 350.215 consultores via Scroll API
- Insere em TB_RANKING_CONSULTOR com MERGE (upsert)
- Calcula posições via SP_ATUALIZAR_POSICOES
- Frontend com paginação completa
- Adiciona traceback detalhado para debug
2025-12-10 03:59:08 -03:00
Frederico Castro
c6aaf66e87 refactor: Substitui APScheduler por asyncio nativo para OCP
- Remove dependência apscheduler
- Implementa loop asyncio com sleep calculado
- Compatível com ambientes sem cron (OCP/Kubernetes)
- Documenta solução em SCHEDULER.md
2025-12-10 01:55:55 -03:00
Frederico Castro
3ea6a4409e feat: Implementa job de ranking para 300k consultores
Backend:
- Adiciona Scroll API no cliente Elasticsearch para processar todos os 300k+ consultores
- Cria tabela TB_RANKING_CONSULTOR no Oracle para ranking pré-calculado
- Implementa job de processamento com APScheduler (diário às 3h)
- Adiciona endpoints: /ranking/paginado, /ranking/status, /ranking/processar, /ranking/estatisticas
- Repository Oracle com paginação eficiente via ROW_NUMBER
- Status do job com progresso em tempo real (polling)
- Leitura automática de LOBs no OracleClient

Frontend:
- Componente RankingPaginado com paginação completa
- Barra de progresso do job em tempo real
- Botão para reprocessar ranking
- Alternância entre Top N (rápido) e Ranking Completo (300k)

Infraestrutura:
- Docker compose com depends_on para garantir Oracle disponível
- Schema SQL com procedure SP_ATUALIZAR_POSICOES
- Índices otimizados para paginação
2025-12-10 01:33:00 -03:00
Frederico Castro
ff4d838f34 feat: Aprimora cálculo de pontuação e extração de dados
- Adiciona campos situacao, anos_completos, anos_consecutivos e retornos
  na entidade Consultoria para suportar regras documentadas
- Implementa mesclagem de períodos sobrepostos para evitar contagem dupla
- Melhora componente A com cálculo por área e detecção de retornos
- Ajusta componente B com bônus por nota PPG
- Refatora componente C com bônus de continuidade e retorno
- Implementa componente D com classificação de nível de prêmio
  (Grande Prêmio, PCT, Interfarma, outros) e pontuação diferenciada
- Trata datas inconsistentes (fim < início) como períodos em aberto
- Extrai situacaoConsultoria do campo dadosConsultoria.situacaoConsultoria
2025-12-09 22:57:46 -03:00
Frederico Castro
e7b34e33a8 fix: Correções no cálculo de pontuação e extração de dados
- Refatora calculador para agrupar coordenações por tipo com hierarquia
- Corrige contagem de eventos separando SAE de consultorias
- Melhora extração de área de avaliação usando dadosConsultoria
- Ajusta pontuação de premiações conforme regras documentadas
- Usa alias ES em vez de índice específico
2025-12-09 19:57:35 -03:00
Frederico Castro
d237097913 refactor: Otimização da query ES e melhorias na UI
Backend:
- Query ES otimizada com boost por tipo de atuação
- Coordenação de área com maior peso (boost 10)
- Aumento do tamanho de busca para 1000 candidatos
- Cache de ranking mantido (TTL 5 min)

Frontend:
- Correção do display do score (pontuacao.pontuacao_total)
- Reorganização dos componentes de pontuação em tabelas
- Aumento do timeout do axios para 3 minutos
- Melhoria visual do Header com badges de pontuação máxima
2025-12-09 05:01:32 -03:00
Frederico Castro
9e6ba459a8 feat: Sistema de Ranking de Consultores CAPES - versão inicial
Backend (FastAPI + DDD):
- Arquitetura DDD com camadas Domain, Application, Infrastructure, Interface
- Integração com Elasticsearch (ATUACAPES) para dados de consultores
- Integração com Oracle (SUCUPIRA_PAINEL) para coordenações PPG
- Cálculo dos 4 componentes de pontuação (A, B, C, D)
- Cache em memória para otimização de performance
- API REST com endpoints /ranking, /ranking/detalhado, /consultor/{id}

Frontend (React + Vite):
- Interface responsiva com cards expansíveis
- Visualização detalhada de pontuação por componente
- Filtro por quantidade de consultores (Top 10, 50, 100, etc)

Docker:
- docker-compose com shared_network externa
- Backend com Oracle Instant Client
- Frontend com Vite dev server
2025-12-09 01:24:35 -03:00