- 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
12 KiB
Tipos de Atuação Disponíveis no Elasticsearch (AtuaCAPES)
Mapeamento completo dos tipos de atuação encontrados no índice
atuacapesdo Elasticsearch CAPES
Visão Geral
Este documento lista todos os tipos de atuação (atuacoes.tipo) disponíveis no índice Elasticsearch do sistema AtuaCAPES, identificados através da análise do código implementado e da documentação do projeto.
Tipos de Atuação Implementados
Componente A - Coordenação CAPES
| Tipo | Descrição | Boost | Pontuação Base |
|---|---|---|---|
Coordenação de Área de Avaliação |
Coordenadores ativos (CA, CAJ, CAJ-MP, CAM) | 10 | 200-100 pts |
Histórico de Coordenação de Área de Avaliação |
Coordenadores históricos (mandatos encerrados) | 5 | 200-100 pts |
Subtipos identificados em dadosCoordenacaoArea.tipo:
Coordenador de Área(CA) - Base: 200 ptsCoordenador Adjunto(CAJ) - Base: 150 ptsCoordenador Adjunto de Mestrado Profissionalizante(CAJ-MP) - Base: 120 ptsCoordenador de Câmara Temática(CAM) - Base: 100 pts
Componente C - Consultoria
| Tipo | Descrição | Boost | Pontuação Base |
|---|---|---|---|
Consultor |
Registro de consultoria ativa ou histórica | 2 | 150 pts (ativo) |
Histórico de Consultoria |
Consultorias encerradas | 1 | 100 pts (histórico) |
Valores de situacaoConsultoria:
Atividade Contínua- Consultor AtivoAtivo- Consultor Ativo- Outros valores ou com
inativacaoSituacaopreenchido = Histórico
Componente D - Premiações
| Tipo | Descrição | Boost | Pontuação |
|---|---|---|---|
Premiação Prêmio |
Prêmio recebido | 3 | 60-180 pts |
Avaliação Prêmio |
Participação em avaliação/comissão | 2 | 2-115 pts |
Inscrição Prêmio |
Inscrição em prêmio | 1 | 1-2 pts |
Níveis de Premiação:
Nível 1 - Grande Prêmio CAPES
dadosPremiacaoPremio.premiacao: "Grande Prêmio"- Pontuação: 150 + 50 = 200 pts (limitado a 180)
Nível 1 - Prêmio CAPES de Tese (PCT)
dadosPremiacaoPremio.premio: "PCT"dadosPremiacaoPremio.premiacao: "Prêmio" (+25) ou "Menção Honrosa" (+15)- Pontuação base: 100 pts (máx 150 pts)
Nível 2 - Institucionais
- Interfarma, Vale-CAPES, etc.
- Base: 30 pts
- Prêmio: +20 pts / Menção: +10 pts
- Máximo: 60 pts
Nível 3 - Autoinscrição
- CDTDN, Vínculos Familiares, etc.
- Base: 10 pts
- Prêmio: +5 pts / Menção: +3 pts
- Máximo: 20 pts
Outros Tipos Identificados
| Tipo | Descrição | Uso no Ranking |
|---|---|---|
Evento |
Participação em eventos SAE | Sim - bônus consultoria |
Campos relacionados a eventos:
dadosEvento.consultorResponsavel: "Sim" ou "Não"- Eventos recentes (últimos 2 anos): bonus para consultoria ativa
- Responsável por evento: +5 pts por vez (máx 25)
Estrutura de Dados por Componente
Coordenação CAPES
{
"tipo": "Coordenação de Área de Avaliação",
"inicio": "01/01/2020",
"fim": null,
"dadosCoordenacaoArea": {
"tipo": "Coordenador de Área",
"areaAvaliacao": {
"id": 123,
"nome": "CIÊNCIAS AMBIENTAIS"
},
"inicioVinculacao": "01/01/2020",
"fimVinculacao": null,
"colegio": [
{"nome": "Colégio de Ciências Exatas, Tecnológicas e Multidisciplinar"}
],
"portaria": "123/2020",
"ies": {
"nome": "Universidade Federal do Brasil",
"sigla": "UFB"
}
}
}
Consultoria
{
"tipo": "Consultor",
"inicio": "15/03/2018",
"fim": null,
"dadosConsultoria": {
"situacaoConsultoria": "Atividade Contínua",
"inicioSituacao": "15/03/2018",
"inativacaoSituacao": null,
"ies": {
"nome": "Universidade Federal do Brasil",
"sigla": "UFB"
},
"areaConhecimentoPos": [
{
"areaAvaliacao": {
"nome": "CIÊNCIAS AMBIENTAIS"
}
}
],
"areaPesquisa": [
{"descricao": "Mudanças Climáticas"}
]
}
}
Premiações
{
"tipo": "Premiação Prêmio",
"dadosPremiacaoPremio": {
"nomePremio": "Prêmio CAPES de Tese",
"premio": "PCT",
"premiacao": "Prêmio",
"ano": 2022,
"areaConhecimento": {
"areaAvaliacao": {
"nome": "CIÊNCIAS AMBIENTAIS"
}
},
"papelPessoa": "Autor"
}
}
Participação em Prêmios
{
"tipo": "Avaliação Prêmio",
"dadosParticipacaoPremio": {
"tipo": "Membro de Comissão",
"premio": "PCT",
"ano": 2023,
"comissao": {
"nome": "Comissão Julgadora",
"tipo": "Avaliação"
},
"areaAvaliacao": {
"nome": "CIÊNCIAS AMBIENTAIS"
}
}
}
Eventos
{
"tipo": "Evento",
"inicio": "10/05/2023",
"fim": "15/05/2023",
"dadosEvento": {
"consultorResponsavel": "Sim",
"nome": "Seminário de Avaliação",
"tipo": "Presencial"
}
}
Query de Agregação - Descobrir Todos os Tipos
Para descobrir todos os tipos de atuação disponíveis no índice:
{
"size": 0,
"aggs": {
"tipos": {
"nested": {"path": "atuacoes"},
"aggs": {
"tipos_unicos": {
"terms": {
"field": "atuacoes.tipo.keyword",
"size": 100
}
}
}
}
}
}
Mapeamento de Tipos vs. Componentes de Pontuação
| Componente | Tipos Relacionados | Pontuação Máxima |
|---|---|---|
| A - Coordenação CAPES | Coordenação de Área de AvaliaçãoHistórico de Coordenação de Área de Avaliação |
450 pts (CA) |
| B - Coordenação PPG | Não existe no ES - usar Oracle | 180 pts |
| C - Consultoria | ConsultorHistórico de ConsultoriaEvento (bônus) |
230 pts |
| D - Premiações | Premiação PrêmioAvaliação PrêmioInscrição Prêmio |
180 pts |
Campos Faltantes / Limitações
Não Disponíveis no Elasticsearch
-
Coordenação de Programa (PPG)
- Não existe tipo
atuacoes.tipopara coordenação de programa - Fonte alternativa: Oracle
SUCUPIRA_PAINEL.VM_COORDENADOR
- Não existe tipo
-
Nota do PPG
- Não disponível em
dadosGestaoPrograma - Fonte alternativa: Oracle
VM_PROGRAMA_SUCUPIRA.DS_CONCEITO
- Não disponível em
-
Dados detalhados de Câmara Temática
- Inferido pelo campo
dadosCoordenacaoArea.tipoounome - Pode haver imprecisão na classificação
- Inferido pelo campo
-
Situação "Falecido"
- Existe
dadosPessoais.anoObitomas nãosituacaoConsultoria="Falecido"
- Existe
Implementação no Código
Arquivo: backend/src/infrastructure/elasticsearch/client.py
Query principal com boost por tipo:
async def buscar_candidatos_ranking(self, size: int = 1000) -> List[Dict[str, Any]]:
query = {
"size": size,
"query": {
"bool": {
"should": [
# Coordenação CAPES
{
"nested": {
"path": "atuacoes",
"query": {
"bool": {
"should": [
{"term": {"atuacoes.tipo": {"value": "Coordenação de Área de Avaliação", "boost": 10}}},
{"term": {"atuacoes.tipo": {"value": "Histórico de Coordenação de Área de Avaliação", "boost": 5}}}
]
}
},
"score_mode": "sum"
}
},
# Consultoria
{
"nested": {
"path": "atuacoes",
"query": {
"bool": {
"should": [
{"term": {"atuacoes.tipo": {"value": "Consultor", "boost": 2}}},
{"term": {"atuacoes.tipo": {"value": "Histórico de Consultoria", "boost": 1}}}
]
}
},
"score_mode": "sum"
}
},
# Premiações
{
"nested": {
"path": "atuacoes",
"query": {
"bool": {
"should": [
{"term": {"atuacoes.tipo": {"value": "Premiação Prêmio", "boost": 3}}},
{"term": {"atuacoes.tipo": {"value": "Avaliação Prêmio", "boost": 2}}},
{"term": {"atuacoes.tipo": {"value": "Inscrição Prêmio", "boost": 1}}}
]
}
},
"score_mode": "sum"
}
}
],
"minimum_should_match": 1
}
},
"_source": ["id", "dadosPessoais", "atuacoes"],
"sort": [{"_score": "desc"}]
}
Arquivo: backend/src/infrastructure/repositories/consultor_repository_impl.py
Extração de tipos:
# Consultoria
consultorias = [
a for a in atuacoes
if a.get("tipo") in ["Consultor", "Histórico de Consultoria"]
]
# Coordenação CAPES
coordenacoes = [
a for a in atuacoes
if a.get("tipo") in [
"Coordenação de Área de Avaliação",
"Histórico de Coordenação de Área de Avaliação",
]
]
# Eventos (bônus consultoria)
eventos_sae = [
a for a in atuacoes
if a.get("tipo") == "Evento"
]
# Premiações (todos os tipos são processados genericamente)
premiacoes = [
a for a in atuacoes
if a.get("dadosPremiacaoPremio") or
a.get("dadosParticipacaoPremio") or
a.get("dadosParticipacaoInscricaoPremio")
]
Estatísticas
Estimativas de Volume (baseado em documentação)
| Tipo | Quantidade Estimada |
|---|---|
| Coordenadores de área (ativos) | ~200 |
| Coordenadores históricos | ~322 |
| Consultores | ~52.551 |
| Premiações | ~63.799 |
| Total de registros com atuações | ~90.482 |
Boost Aplicado
O boost é usado para priorizar candidatos no score inicial do Elasticsearch:
| Tipo | Boost | Justificativa |
|---|---|---|
| Coordenação de Área (ativa) | 10 | Máxima prioridade (200-450 pts) |
| Coordenação de Área (histórica) | 5 | Alta prioridade histórica |
| Premiação Prêmio | 3 | Mérito significativo |
| Consultor | 2 | Base importante |
| Avaliação Prêmio | 2 | Participação ativa |
| Histórico de Consultoria | 1 | Relevância histórica |
| Inscrição Prêmio | 1 | Participação básica |
Notas de Implementação
- Paginação: Query principal retorna top 1000 candidatos ordenados por score ES
- Recálculo: Python recalcula pontuação completa e reordena por pontuação real
- Cache: Resultados cacheados por 5 minutos (TTL=300s)
- Performance: Primeira requisição ~1m34s, cacheadas ~0.27s
- Timeout: 120s para queries ES
Referências
- Documentação:
/home/fred/projetos/ranking/.claude/rules/ranking-queries-elasticsearch.md - Critérios:
/home/fred/projetos/ranking/.claude/rules/ranking-consultores-capes.md - Implementação ES:
/home/fred/projetos/ranking/backend/src/infrastructure/elasticsearch/client.py - Extração:
/home/fred/projetos/ranking/backend/src/infrastructure/repositories/consultor_repository_impl.py
Última atualização: 2025-12-13
Índice Elasticsearch: atuacapes (servidor: elastic-atuacapes.hom.capes.gov.br:9200)