Adiciona paginacao no ranking do frontend

This commit is contained in:
Frederico Castro
2025-12-10 13:52:11 -03:00
parent 6f11b7c166
commit f50bc66a07
3 changed files with 81 additions and 34 deletions

View File

@@ -9,13 +9,12 @@ const api = axios.create({
});
export const rankingService = {
async getRanking(limite = 100) {
// Usa ranking paginado (Oracle) para não depender do Elasticsearch
const params = { page: 1, size: limite };
async getRanking(page = 1, size = 100) {
// Usa ranking paginado (Oracle) para percorrer os 350k
const params = { page, size };
const response = await api.get('/ranking/paginado', { params });
const data = response.data;
// Adapta para o formato esperado pelo frontend
const hoje = new Date();
const consultores = (data.consultores || []).map((c) => {
@@ -35,35 +34,38 @@ export const rankingService = {
rank: c.posicao,
posicao: c.posicao,
pontuacao_total: c.pontuacao_total,
componente_a: c.componente_a,
componente_b: c.componente_b,
componente_c: c.componente_c,
componente_d: c.componente_d,
ativo: c.ativo,
anos_atuacao: c.anos_atuacao,
veterano: anos >= 10,
pontuacao: {
pontuacao_total: c.pontuacao_total,
componente_a: { base: c.componente_a, tempo: 0, extras: 0, bonus: 0, retorno: 0, total: c.componente_a },
componente_b: { base: c.componente_b, tempo: 0, extras: 0, bonus: 0, retorno: 0, total: c.componente_b },
componente_c: { base: c.componente_c, tempo: 0, extras: 0, bonus: 0, retorno: 0, total: c.componente_c },
componente_d: { base: c.componente_d, tempo: 0, extras: 0, bonus: 0, retorno: 0, total: c.componente_d },
},
consultoria: {
total_eventos: consultoria.total_eventos ?? 0,
eventos_recentes: consultoria.eventos_recentes ?? 0,
vezes_responsavel: consultoria.vezes_responsavel ?? 0,
primeiro_evento: consultoria.primeiro_evento || primeiroEvento.toISOString(),
ultimo_evento: consultoria.ultimo_evento || null,
},
coordenacoes_capes: [],
coordenacoes_programas: [],
premiacoes: [],
}});
componente_a: c.componente_a,
componente_b: c.componente_b,
componente_c: c.componente_c,
componente_d: c.componente_d,
ativo: c.ativo,
anos_atuacao: anos,
veterano: anos >= 10,
pontuacao: {
pontuacao_total: c.pontuacao_total,
componente_a: { base: c.componente_a, tempo: 0, extras: 0, bonus: 0, retorno: 0, total: c.componente_a },
componente_b: { base: c.componente_b, tempo: 0, extras: 0, bonus: 0, retorno: 0, total: c.componente_b },
componente_c: { base: c.componente_c, tempo: 0, extras: 0, bonus: 0, retorno: 0, total: c.componente_c },
componente_d: { base: c.componente_d, tempo: 0, extras: 0, bonus: 0, retorno: 0, total: c.componente_d },
},
consultoria: {
total_eventos: consultoria.total_eventos ?? 0,
eventos_recentes: consultoria.eventos_recentes ?? 0,
vezes_responsavel: consultoria.vezes_responsavel ?? 0,
primeiro_evento: consultoria.primeiro_evento || primeiroEvento.toISOString(),
ultimo_evento: consultoria.ultimo_evento || null,
},
coordenacoes_capes: [],
coordenacoes_programas: [],
premiacoes: [],
};
});
return {
total: data.total,
total_pages: data.total_pages,
page: data.page ?? page,
size: data.size ?? size,
consultores,
};
},