feat(frontend): adicionar modais de detalhes para itens das listas

- Criar componente ItemDetalheModal para exibir detalhes de atuações
- Adicionar modais clicáveis em: vínculos, coordenações, premiações,
  avaliações, inscrições e participações
- Melhorar healthcheck do Oracle no docker-compose
- Adicionar retry com backoff na conexão Oracle
- Padronizar tamanho dos badges de tipos de atuação
This commit is contained in:
Frederico Castro
2025-12-22 04:17:12 -03:00
parent 061a3e8768
commit 32b404d1a8
4 changed files with 452 additions and 36 deletions

View File

@@ -1,4 +1,5 @@
import logging
import time
import oracledb
from typing import List, Dict, Any, Optional
@@ -15,32 +16,40 @@ class OracleClient:
self._pool: Optional[oracledb.ConnectionPool] = None
self._connected = False
def connect(self) -> None:
try:
test_conn = oracledb.connect(
user=self.user,
password=self.password,
dsn=self.dsn,
)
test_conn.ping()
test_conn.close()
def connect(self, max_retries: int = 10, initial_delay: float = 2.0) -> None:
for attempt in range(max_retries):
try:
test_conn = oracledb.connect(
user=self.user,
password=self.password,
dsn=self.dsn,
)
test_conn.ping()
test_conn.close()
self._pool = oracledb.create_pool(
user=self.user,
password=self.password,
dsn=self.dsn,
min=1,
max=10,
increment=1,
)
self._connected = True
logger.info(f"Pool Oracle conectado: {self.dsn}")
except oracledb.Error as e:
logger.error(f"Oracle database error: {e}")
self._connected = False
except Exception as e:
logger.error(f"Oracle connection error: {e}")
self._connected = False
self._pool = oracledb.create_pool(
user=self.user,
password=self.password,
dsn=self.dsn,
min=1,
max=10,
increment=1,
)
self._connected = True
logger.info(f"Pool Oracle conectado: {self.dsn}")
return
except oracledb.Error as e:
delay = initial_delay * (2 ** attempt)
if attempt < max_retries - 1:
logger.warning(f"Oracle tentativa {attempt + 1}/{max_retries} falhou: {e}. Retry em {delay:.1f}s...")
time.sleep(delay)
else:
logger.error(f"Oracle database error: {e}")
self._connected = False
except Exception as e:
logger.error(f"Oracle connection error: {e}")
self._connected = False
return
def close(self) -> None:
if self._pool: