Commit Graph

4 Commits

Author SHA1 Message Date
Frederico Castro
6297d135ec fix: corrigir cálculo de anos consecutivos em períodos sobrepostos
Corrige bug onde consultores ativos com vínculos sobrepostos tinham
anos_consecutivos zerados incorretamente.

Problema: Ao mesclar períodos sobrepostos (ex: UP encerrado + UTFPR ativo),
o período mesclado era marcado como encerrado, resultando em
anos_consecutivos = 0 mesmo para consultores ativos.

Solução: Período mesclado é ativo se QUALQUER um dos períodos originais
for ativo (lógica OR em vez de considerar apenas o primeiro período).

Impacto:
- Consultores ativos com múltiplos vínculos agora recebem corretamente
  bônus de continuidade (até +20 pontos)
- Exemplo: Valdir Fernandes (#1) tinha 0 anos consecutivos, agora tem 10

Otimizações adicionais:
- Aumenta batch_size de 5.000 para 10.000 consultores
- Reduz tempo de processamento de ~60min para ~25min (58% mais rápido)
- Reduz requisições ao Elasticsearch pela metade

Arquivos alterados:
- backend/src/domain/value_objects/periodo.py: lógica de mesclagem corrigida
- backend/src/application/jobs/processar_ranking.py: batch_size otimizado

Testado com 350.222 consultores em 25min 35s
2025-12-19 14:14:57 -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
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
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