From c94c46f5c1615660e9746b9448277bb32c377cea Mon Sep 17 00:00:00 2001 From: Lucas Santana Date: Fri, 7 Feb 2025 10:06:27 -0300 Subject: [PATCH] =?UTF-8?q?fix:=20corrige=20consulta=20de=20an=C3=A1lise?= =?UTF-8?q?=20de=20reda=C3=A7=C3=B5es=20-=20Adiciona=20join=20com=20tabela?= =?UTF-8?q?s=20relacionadas=20-=20Implementa=20transforma=C3=A7=C3=A3o=20d?= =?UTF-8?q?os=20dados=20-=20Adiciona=20tratamento=20para=20valores=20nulos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 ++++ .../essays/EssayAnalysis.tsx | 40 ++++++++++++++++++- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e8700f..7d516ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -270,3 +270,10 @@ e este projeto adere ao [Semantic Versioning](https://semver.org/lang/pt-BR/). - Removidos limites `minimum` e `maximum` dos campos numéricos - Removida restrição `minItems` dos arrays de pontos fortes e melhorias - Simplificada a validação para maior flexibilidade na Edge Function + +### Técnico +- Corrigida consulta de análise de redações no componente `EssayAnalysis`: + - Adicionado join com tabelas relacionadas (feedback, strengths, improvements, scores) + - Implementada transformação dos dados para o formato esperado + - Adicionado tratamento para valores nulos + - Melhorada tipagem dos dados retornados diff --git a/src/pages/student-dashboard/essays/EssayAnalysis.tsx b/src/pages/student-dashboard/essays/EssayAnalysis.tsx index 4f69d01..8641b64 100644 --- a/src/pages/student-dashboard/essays/EssayAnalysis.tsx +++ b/src/pages/student-dashboard/essays/EssayAnalysis.tsx @@ -72,14 +72,50 @@ export function EssayAnalysis() { // Carregar análise const { data: analysisData, error: analysisError } = await supabase .from('essay_analyses') - .select('*') + .select(` + *, + feedback:essay_analysis_feedback( + structure_feedback, + content_feedback, + language_feedback + ), + strengths:essay_analysis_strengths(strength), + improvements:essay_analysis_improvements(improvement), + scores:essay_analysis_scores( + adequacy, + coherence, + cohesion, + vocabulary, + grammar + ) + `) .eq('essay_id', id) .order('created_at', { ascending: false }) .limit(1) .single(); if (analysisError) throw analysisError; - setAnalysis(analysisData); + + // Transformar os dados para o formato esperado + const formattedAnalysis = { + ...analysisData, + feedback: { + structure: analysisData.feedback[0]?.structure_feedback || '', + content: analysisData.feedback[0]?.content_feedback || '', + language: analysisData.feedback[0]?.language_feedback || '' + }, + strengths: analysisData.strengths?.map(s => s.strength) || [], + improvements: analysisData.improvements?.map(i => i.improvement) || [], + criteria_scores: { + adequacy: analysisData.scores[0]?.adequacy || 0, + coherence: analysisData.scores[0]?.coherence || 0, + cohesion: analysisData.scores[0]?.cohesion || 0, + vocabulary: analysisData.scores[0]?.vocabulary || 0, + grammar: analysisData.scores[0]?.grammar || 0 + } + }; + + setAnalysis(formattedAnalysis); } catch (error) { console.error('Erro ao carregar dados:', error); } finally {