From 1f4c2a1c182ff8a8b8dbbd9043da6c39909ce4c5 Mon Sep 17 00:00:00 2001 From: Fellipe Saraiva Date: Fri, 14 Nov 2025 01:23:18 -0300 Subject: [PATCH] Update dashboard/app/api/sentiment/route.ts Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> --- dashboard/app/api/sentiment/route.ts | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/dashboard/app/api/sentiment/route.ts b/dashboard/app/api/sentiment/route.ts index a4e231ff..f900decd 100644 --- a/dashboard/app/api/sentiment/route.ts +++ b/dashboard/app/api/sentiment/route.ts @@ -82,11 +82,33 @@ export async function GET(request: NextRequest) { ? analyzed.reduce((sum: number, item: any) => sum + item.sentiment.score, 0) / analyzed.length : 0; + // Obter paginação dos query params + const { searchParams } = req.nextUrl; + const pageParam = searchParams.get('page'); + const pageSizeParam = searchParams.get('pageSize'); + + const page = pageParam ? parseInt(pageParam, 10) : 1; + const pageSize = pageSizeParam ? parseInt(pageSizeParam, 10) : 100; + + const startIdx = (page - 1) * pageSize; + const endIdx = startIdx + pageSize; + + const paginatedMessages = analyzed.slice(startIdx, endIdx); + const totalPages = Math.ceil(analyzed.length / pageSize); + return NextResponse.json({ total: analyzed.length, avgScore: avgScore.toFixed(2), distribution, - messages: analyzed.slice(0, 100), // Retornar apenas as primeiras 100 + messages: paginatedMessages, + pagination: { + page, + pageSize, + totalPages, + hasNextPage: page < totalPages, + hasPrevPage: page > 1, + note: "A lista de mensagens é paginada. Use os parâmetros 'page' e 'pageSize' na query string para navegar." + } }); } catch (error) { console.error('Erro ao analisar sentimento:', error);