feat(avaliacao): adicionar nome da comissão nas avaliações
- Adiciona campo nome_comissao em AvaliacaoComissao (entity, DTO, schema) - Extrai nome da comissão do Elasticsearch no repository - Propaga campo pelo job de processamento e use case - Exibe nome da comissão no ConsultorCard (frontend) - Remove link do manual PDF do footer
This commit is contained in:
@@ -47,6 +47,7 @@ class AvaliacaoComissaoDTO:
|
||||
premio: str
|
||||
ano: int
|
||||
comissao_tipo: str
|
||||
nome_comissao: str
|
||||
|
||||
|
||||
@dataclass
|
||||
|
||||
@@ -149,7 +149,8 @@ class ProcessarRankingJob:
|
||||
"tipo": a.tipo,
|
||||
"premio": a.premio,
|
||||
"ano": a.ano,
|
||||
"comissao_tipo": a.comissao_tipo
|
||||
"comissao_tipo": a.comissao_tipo,
|
||||
"nome_comissao": a.nome_comissao,
|
||||
}
|
||||
for a in consultor.avaliacoes_comissao
|
||||
],
|
||||
|
||||
@@ -109,6 +109,7 @@ class ObterRankingUseCase:
|
||||
premio=a.premio,
|
||||
ano=a.ano,
|
||||
comissao_tipo=a.comissao_tipo,
|
||||
nome_comissao=a.nome_comissao,
|
||||
)
|
||||
for a in consultor.avaliacoes_comissao
|
||||
],
|
||||
|
||||
@@ -44,6 +44,7 @@ class AvaliacaoComissao:
|
||||
premio: str
|
||||
ano: int
|
||||
comissao_tipo: str = ""
|
||||
nome_comissao: str = ""
|
||||
|
||||
|
||||
@dataclass
|
||||
|
||||
@@ -253,6 +253,7 @@ class ConsultorRepositoryImpl(ConsultorRepository):
|
||||
|
||||
comissao = dados.get("comissao", {}) or {}
|
||||
comissao_tipo = comissao.get("tipo", "") if isinstance(comissao, dict) else ""
|
||||
nome_comissao = comissao.get("nome", "") if isinstance(comissao, dict) else ""
|
||||
|
||||
is_grande_premio = "grande" in nome_premio.lower()
|
||||
is_coordenador = "coordenador" in tipo_part.lower() or "presidente" in tipo_part.lower()
|
||||
@@ -268,6 +269,7 @@ class ConsultorRepositoryImpl(ConsultorRepository):
|
||||
premio=nome_premio,
|
||||
ano=ano,
|
||||
comissao_tipo=comissao_tipo,
|
||||
nome_comissao=nome_comissao,
|
||||
))
|
||||
|
||||
return avaliacoes
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import logging
|
||||
import json
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
from .routes import router
|
||||
@@ -147,6 +149,10 @@ app.add_middleware(
|
||||
|
||||
app.include_router(router)
|
||||
|
||||
static_dir = Path(__file__).parent.parent.parent.parent / "static"
|
||||
if static_dir.exists():
|
||||
app.mount("/api/static", StaticFiles(directory=str(static_dir)), name="static")
|
||||
|
||||
|
||||
@app.get("/")
|
||||
async def root():
|
||||
|
||||
@@ -42,6 +42,7 @@ class AvaliacaoComissaoSchema(BaseModel):
|
||||
premio: str
|
||||
ano: int
|
||||
comissao_tipo: str
|
||||
nome_comissao: str = ""
|
||||
|
||||
|
||||
class PremiacaoSchema(BaseModel):
|
||||
|
||||
BIN
backend/static/Manual_Ranking_Consultores_CAPES.pdf
Normal file
BIN
backend/static/Manual_Ranking_Consultores_CAPES.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user