Inclui detalhes de coordenacoes e premiações no ranking paginado

This commit is contained in:
Frederico Castro
2025-12-10 15:25:28 -03:00
parent 23ecb8d30a
commit 71a8aa4417
3 changed files with 18 additions and 7 deletions

View File

@@ -102,9 +102,7 @@ async def ranking_paginado(
total_pages = (total + size - 1) // size
consultores_schema = [
_consultor_resumo_from_ranking(c) for c in consultores
]
consultores_schema = [_consultor_resumo_from_ranking(c) for c in consultores]
return RankingPaginadoResponseSchema(
total=total,
@@ -117,9 +115,16 @@ async def ranking_paginado(
def _consultor_resumo_from_ranking(c):
consultoria = None
coordenacoes_capes = None
coordenacoes_programas = None
premiacoes = None
try:
jd = json.loads(c.json_detalhes) if c.json_detalhes else {}
consultoria = jd.get("consultoria") if isinstance(jd, dict) else None
if isinstance(jd, dict):
consultoria = jd.get("consultoria")
coordenacoes_capes = jd.get("coordenacoes_capes")
coordenacoes_programas = jd.get("coordenacoes_programas")
premiacoes = jd.get("premiacoes")
except Exception:
consultoria = None
@@ -135,6 +140,9 @@ def _consultor_resumo_from_ranking(c):
ativo=c.ativo,
anos_atuacao=c.anos_atuacao,
consultoria=consultoria,
coordenacoes_capes=coordenacoes_capes,
coordenacoes_programas=coordenacoes_programas,
premiacoes=premiacoes,
)

View File

@@ -15,6 +15,9 @@ class ConsultorRankingResumoSchema(BaseModel):
ativo: bool
anos_atuacao: float
consultoria: Optional[dict] = None
coordenacoes_capes: Optional[list] = None
coordenacoes_programas: Optional[list] = None
premiacoes: Optional[list] = None
class RankingPaginadoResponseSchema(BaseModel):