fix: alinhar estrutura de blocos com especificacao PDF V1.0

- 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
This commit is contained in:
Frederico Castro
2025-12-23 21:57:43 -03:00
parent 8799a68c30
commit 26a478be05
15 changed files with 232 additions and 91 deletions

View File

@@ -87,26 +87,18 @@ class ProcessarRankingJob:
)
def _gerar_json_detalhes(self, consultor) -> dict:
bloco_b = 0 # reservado no V1 (dados incompletos)
pontuacao = consultor.pontuacao.to_dict() if consultor.pontuacao else None
if isinstance(pontuacao, dict):
pontuacao = dict(pontuacao)
pontuacao["bloco_b"] = {"bloco": "B", "total": bloco_b, "atuacoes": []}
pontuacao["pontuacao_total"] = (
pontuacao.get("pontuacao_total", 0) + bloco_b
if isinstance(pontuacao.get("pontuacao_total"), (int, float))
else consultor.pontuacao_total + bloco_b
)
return {
"id_pessoa": consultor.id_pessoa,
"nome": consultor.nome,
"posicao": None,
"pontuacao_total": consultor.pontuacao_total + bloco_b,
"pontuacao_total": consultor.pontuacao_total,
"bloco_a": consultor.pontuacao_bloco_a,
"bloco_b": bloco_b,
"bloco_b": consultor.pontuacao_bloco_b,
"bloco_c": consultor.pontuacao_bloco_c,
"bloco_d": consultor.pontuacao_bloco_d,
"bloco_e": consultor.pontuacao_bloco_e,
"ativo": consultor.ativo,
"anos_atuacao": consultor.anos_atuacao,
"coordenador_ppg": consultor.coordenador_ppg,
@@ -254,6 +246,7 @@ class ProcessarRankingJob:
bloco_b=int(c.get("bloco_b", 0)),
bloco_c=int(c.get("bloco_c", 0)),
bloco_d=int(c.get("bloco_d", 0)),
bloco_e=int(c.get("bloco_e", 0)),
ativo=bool(c.get("ativo", False)),
anos_atuacao=float(c.get("anos_atuacao", 0) or 0),
detalhes=c,
@@ -272,7 +265,7 @@ class ProcessarRankingJob:
"pontuacao_media": 0,
"pontuacao_maxima": 0,
"pontuacao_minima": 0,
"media_componentes": {"a": 0, "b": 0, "c": 0, "d": 0},
"media_componentes": {"a": 0, "b": 0, "c": 0, "d": 0, "e": 0},
}
total = len(entries)
@@ -294,6 +287,7 @@ class ProcessarRankingJob:
"b": float(round(sum(e.bloco_b for e in entries) / total, 2)),
"c": float(round(sum(e.bloco_c for e in entries) / total, 2)),
"d": float(round(sum(e.bloco_d for e in entries) / total, 2)),
"e": float(round(sum(e.bloco_e for e in entries) / total, 2)),
},
}