feat: Sistema de Ranking de Consultores CAPES - versão inicial

Backend (FastAPI + DDD):
- Arquitetura DDD com camadas Domain, Application, Infrastructure, Interface
- Integração com Elasticsearch (ATUACAPES) para dados de consultores
- Integração com Oracle (SUCUPIRA_PAINEL) para coordenações PPG
- Cálculo dos 4 componentes de pontuação (A, B, C, D)
- Cache em memória para otimização de performance
- API REST com endpoints /ranking, /ranking/detalhado, /consultor/{id}

Frontend (React + Vite):
- Interface responsiva com cards expansíveis
- Visualização detalhada de pontuação por componente
- Filtro por quantidade de consultores (Top 10, 50, 100, etc)

Docker:
- docker-compose com shared_network externa
- Backend com Oracle Instant Client
- Frontend com Vite dev server
This commit is contained in:
Frederico Castro
2025-12-09 01:24:35 -03:00
commit 9e6ba459a8
69 changed files with 4902 additions and 0 deletions

49
frontend/src/index.css Normal file
View File

@@ -0,0 +1,49 @@
:root {
--bg-base: #0b1220;
--bg-veil: rgba(255,255,255,0.03);
--card: rgba(255,255,255,0.06);
--card-strong: rgba(255,255,255,0.12);
--stroke: rgba(255,255,255,0.09);
--accent: #4f46e5;
--accent-2: #16a9fa;
--success: #22c55e;
--gold: #fbbf24;
--silver: #cbd5e1;
--bronze: #fb923c;
--text: #f8fafc;
--muted: #94a3b8;
--shadow: 0 25px 50px -12px rgba(0,0,0,0.45);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Space Grotesk', 'Inter', system-ui, -apple-system, sans-serif;
background: radial-gradient(circle at 15% 20%, rgba(79,70,229,0.18), transparent 25%),
radial-gradient(circle at 75% 0%, rgba(22,169,250,0.18), transparent 26%),
radial-gradient(circle at 80% 80%, rgba(34,197,94,0.12), transparent 30%),
var(--bg-base);
color: var(--text);
min-height: 100vh;
padding: 2.25rem;
position: relative;
}
body::before {
content: "";
position: fixed;
inset: 0;
background: linear-gradient(135deg, rgba(255,255,255,0.04), rgba(255,255,255,0));
pointer-events: none;
backdrop-filter: blur(12px);
z-index: -1;
}
#root {
max-width: 1280px;
margin: 0 auto;
}