fix(backend): corrigir calculo de anos consecutivos para consultores ativos

- Nao usar inativacaoSituacao como data fim quando situacao indica ativo
- Evita que consultores com "Atividade Continua" tenham 0 anos consecutivos
- Corrigir alinhamento dos headers nas tabelas de criterios (Header.css)
This commit is contained in:
Frederico Castro
2025-12-22 06:25:47 -03:00
parent 46ffe72fef
commit b585272701
3 changed files with 82 additions and 2 deletions

View File

@@ -172,9 +172,11 @@ class ConsultorRepositoryImpl(ConsultorRepository):
or self._parse_date(dc.get("inicioSituacao"))
or self._parse_date(c.get("inicio"))
)
situacao_texto = (dc.get("situacaoConsultoria") or "").lower()
is_situacao_ativa = "atividade" in situacao_texto or "ativo" in situacao_texto
fim = (
self._parse_date(dc.get("fimVinculacao"))
or self._parse_date(dc.get("inativacaoSituacao"))
or (self._parse_date(dc.get("inativacaoSituacao")) if not is_situacao_ativa else None)
or self._parse_date(c.get("fim"))
)

View File

@@ -176,10 +176,12 @@
.table-columns {
display: flex;
gap: 0.5rem;
align-items: flex-start;
}
.table-columns .criteria-table {
flex: 1;
flex: 1 1 auto;
margin-top: 0 !important;
}
.criteria-table {

76
scripts/recarregar_ranking.sh Executable file
View File

@@ -0,0 +1,76 @@
#!/usr/bin/env bash
set -euo pipefail
API_URL="${API_URL:-http://localhost:8010/api/v1}"
echo "=== Recarregando Ranking de Consultores CAPES ==="
echo ""
STATUS_CHECK=$(curl -s "${API_URL}/ranking/status")
JA_RODANDO=$(echo "$STATUS_CHECK" | python3 -c "import sys,json; print(json.load(sys.stdin).get('running', False))" 2>/dev/null || echo "False")
if [ "$JA_RODANDO" = "True" ]; then
echo "[!] Job já em execução - acompanhando progresso existente..."
else
echo "[1/2] Disparando job (limpar_antes=true)..."
RESP=$(curl -s -X POST "${API_URL}/ranking/processar" \
-H "Content-Type: application/json" \
-d '{"limpar_antes": true}')
if echo "$RESP" | grep -q '"sucesso":true'; then
echo " ✓ Job iniciado com sucesso"
else
echo " ✗ Erro ao iniciar job: $RESP"
exit 1
fi
fi
echo ""
echo "[2/2] Acompanhando progresso..."
echo ""
while true; do
STATUS=$(curl -s "${API_URL}/ranking/status")
RUNNING=$(echo "$STATUS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('running', False))" 2>/dev/null || echo "False")
PROCESSADOS=$(echo "$STATUS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('processados', 0))" 2>/dev/null || echo "0")
TOTAL=$(echo "$STATUS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('total', 0))" 2>/dev/null || echo "0")
PROGRESS=$(echo "$STATUS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('progress', 0))" 2>/dev/null || echo "0")
MSG=$(echo "$STATUS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('mensagem', ''))" 2>/dev/null || echo "")
BARRA=""
PROGRESS_INT=${PROGRESS%.*}
PREENCHIDO=$((PROGRESS_INT / 5))
VAZIO=$((20 - PREENCHIDO))
for ((i=0; i<PREENCHIDO; i++)); do BARRA+="█"; done
for ((i=0; i<VAZIO; i++)); do BARRA+="░"; done
printf "\r [%s] %5.1f%% | %s/%s | %s" "$BARRA" "$PROGRESS" "$PROCESSADOS" "$TOTAL" "$MSG"
if [ "$RUNNING" = "False" ]; then
echo ""
break
fi
sleep 3
done
echo ""
echo "=== Concluído ==="
STATS=$(curl -s "${API_URL}/ranking/estatisticas" 2>/dev/null || echo "{}")
if [ "$STATS" != "{}" ]; then
echo ""
echo "Estatísticas:"
echo "$STATS" | python3 -c "
import sys, json
data = json.load(sys.stdin)
print(f\" Total consultores: {data.get('total_consultores', 'N/A'):,}\")
print(f\" Com pontuação: {data.get('com_pontuacao', 'N/A'):,}\")
print(f\" Pontuação máxima: {data.get('pontuacao_maxima', 'N/A')}\")
print(f\" Pontuação média: {data.get('pontuacao_media', 'N/A'):.2f}\")
" 2>/dev/null || echo " (não foi possível obter estatísticas)"
fi
echo ""
echo "Pronto!"