fix: resolver problemas identificados no code review

Correções de segurança:
- SQL Injection: usar prepared statements em ranking_repository.py
- Validação de entrada para parâmetros page/size

Correções de bugs:
- Bônus de continuidade: 15→20 pts para 8+ anos (conforme especificação)
- Memory leak: limpar _consultores após processamento do ranking

Melhorias de robustez:
- Substituir bare except por exceções específicas
- Threading.Lock para padrão singleton thread-safe
- Pool Oracle com configuração otimizada (timeout/getmode)
- ES client com timeouts diferenciados e verificação is_closed
- Logging para tipos de coordenação desconhecidos

Correções frontend:
- Polling com timeout máximo de 5 minutos
- useEffect cleanup para setTimeout
- React.memo e useMemo para otimização de performance
This commit is contained in:
Frederico Castro
2025-12-15 07:11:28 -03:00
parent d639b82087
commit df3d03d3b2
10 changed files with 91 additions and 37 deletions

View File

@@ -51,7 +51,7 @@ class ProcessarRankingJob:
job_status.finalizar(sucesso=True)
return {
resultado_final = {
"sucesso": True,
"total_processados": resultado.get("processados", len(entries)),
"total_batches": resultado.get("batches", 0),
@@ -59,9 +59,15 @@ class ProcessarRankingJob:
"estatisticas": estatisticas
}
self._consultores = []
return resultado_final
except Exception as e:
self._consultores = []
job_status.finalizar(sucesso=False, erro=str(e))
raise RuntimeError(f"Erro ao processar ranking: {e}")
logger.error(f"Erro ao processar ranking: {e}", exc_info=True)
raise RuntimeError(f"Erro ao processar ranking: {e}") from e
async def _processar_batch(self, docs: list, progress: dict) -> None:
for doc in docs: